to github
authorBernhard Tittelbach <xro@realraum.at>
Tue, 24 Feb 2015 00:58:20 +0000 (00:58 +0000)
committerBernhard Tittelbach <xro@realraum.at>
Tue, 24 Feb 2015 00:58:20 +0000 (00:58 +0000)
99 files changed:
openwrt-packages/.config [deleted file]
openwrt-packages/luaunixsocket/Makefile [deleted file]
openwrt-packages/mjpg-streamer/Makefile [deleted file]
openwrt-packages/mjpg-streamer/files/mjpg-streamer.config [deleted file]
openwrt-packages/mjpg-streamer/files/mjpg-streamer.hotplug [deleted file]
openwrt-packages/mjpg-streamer/files/mjpg-streamer.init [deleted file]
openwrt-packages/mjpg-streamer/patches/001-zc3xx.patch [deleted file]
openwrt-packages/powersensordaemon/Makefile [deleted file]
openwrt-packages/usocket/Makefile [deleted file]
play-sound-status.py [deleted file]
powersensordaemon/AUTHORS [deleted file]
powersensordaemon/COMMANDS.txt [deleted file]
powersensordaemon/LICENSE [deleted file]
powersensordaemon/Makefile [deleted file]
powersensordaemon/autosample.c [deleted file]
powersensordaemon/autosample.h [deleted file]
powersensordaemon/client_list.c [deleted file]
powersensordaemon/client_list.h [deleted file]
powersensordaemon/command_queue.c [deleted file]
powersensordaemon/command_queue.h [deleted file]
powersensordaemon/configure [deleted file]
powersensordaemon/daemon.h [deleted file]
powersensordaemon/datatypes.h [deleted file]
powersensordaemon/key_value_storage.c [deleted file]
powersensordaemon/key_value_storage.h [deleted file]
powersensordaemon/lightlevel.cgi [deleted file]
powersensordaemon/log.c [deleted file]
powersensordaemon/log.h [deleted file]
powersensordaemon/log_targets.h [deleted file]
powersensordaemon/options.c [deleted file]
powersensordaemon/options.h [deleted file]
powersensordaemon/powerids.txt [deleted file]
powersensordaemon/powersensordaemon.c [deleted file]
powersensordaemon/rx-v396-remote.png [deleted file]
powersensordaemon/sampledev.txt [deleted file]
powersensordaemon/sig_handler.c [deleted file]
powersensordaemon/sig_handler.h [deleted file]
powersensordaemon/string_list.c [deleted file]
powersensordaemon/string_list.h [deleted file]
powersensordaemon/switch.cgi [deleted file]
powersensordaemon/ymhremote.html [deleted file]
reset_tty/Makefile [deleted file]
reset_tty/reset_tty.c [deleted file]
rf433ctl/DallasTemperature/DallasTemperature.cpp [deleted file]
rf433ctl/DallasTemperature/DallasTemperature.h [deleted file]
rf433ctl/DallasTemperature/README [deleted file]
rf433ctl/DallasTemperature/examples/Alarm/Alarm.pde [deleted file]
rf433ctl/DallasTemperature/examples/AlarmHandler/AlarmHandler.pde [deleted file]
rf433ctl/DallasTemperature/examples/Multiple/Multiple.pde [deleted file]
rf433ctl/DallasTemperature/examples/Simple/Simple.pde [deleted file]
rf433ctl/DallasTemperature/examples/Single/Single.pde [deleted file]
rf433ctl/DallasTemperature/examples/Tester/Tester.pde [deleted file]
rf433ctl/DallasTemperature/keywords.txt [deleted file]
rf433ctl/IRremote/IRremote.cpp [deleted file]
rf433ctl/IRremote/IRremote.h [deleted file]
rf433ctl/IRremote/IRremoteInt.h [deleted file]
rf433ctl/IRremote/LICENSE.txt [deleted file]
rf433ctl/IRremote/examples/IRrecord/IRrecord.pde [deleted file]
rf433ctl/IRremote/examples/IRrecvDemo/IRrecvDemo.pde [deleted file]
rf433ctl/IRremote/examples/IRrecvDump/IRrecvDump.pde [deleted file]
rf433ctl/IRremote/examples/IRrelay/IRrelay.pde [deleted file]
rf433ctl/IRremote/examples/IRsendDemo/IRsendDemo.pde [deleted file]
rf433ctl/IRremote/examples/IRtest/IRtest.pde [deleted file]
rf433ctl/IRremote/keywords.txt [deleted file]
rf433ctl/Makefile [deleted file]
rf433ctl/OneWire/OneWire.cpp [deleted file]
rf433ctl/OneWire/OneWire.h [deleted file]
rf433ctl/OneWire/examples/readme.txt [deleted file]
rf433ctl/OneWire/examples/sample/sample.pde [deleted file]
rf433ctl/OneWire/keywords.txt [deleted file]
rf433ctl/README [deleted file]
rf433ctl/find_onewire.pde [deleted file]
rf433ctl/rf433ctl.pde [deleted file]
rf433ctl/rf433ctl_timer_consolidation_experiment.pde [deleted file]
sensor_graph/NOTES.txt [deleted file]
sensor_graph/freeze_realraum_picture.pl [deleted file]
sensor_graph/get_realraum_picture.pl [deleted file]
sensor_graph/get_sensor_light.pl [deleted file]
sensor_graph/get_sensor_movement.pl [deleted file]
sensor_graph/get_sensor_temp.pl [deleted file]
sensor_graph/rrdtool.sh [deleted file]
sensor_graph/sensor-light.cgi [deleted file]
sensor_graph/sensor-movement.cgi [deleted file]
sensor_graph/sensor-temp.cgi [deleted file]
sensor_graph/sensors.cgi [deleted file]
serial_console/Makefile [deleted file]
serial_console/sample_sensors.c [deleted file]
serial_console/sample_sensors.h [deleted file]
serial_console/serial.c [deleted file]
serial_console/serial.h [deleted file]
serial_console/usocket.c [deleted file]
serial_console/usocket.h [deleted file]
speak_on_slug.sh [deleted file]
speak_on_slug_badly.sh [deleted file]
speak_on_slug_realraumuser.sh [deleted file]
sshtest.py [deleted file]
switch-power.py [deleted file]
test_autosuspend.sh [deleted file]
track-presence.py [deleted file]

diff --git a/openwrt-packages/.config b/openwrt-packages/.config
deleted file mode 100644 (file)
index 58e860c..0000000
+++ /dev/null
@@ -1,3164 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# OpenWrt version: Kamikaze (r20240)
-# Thu Mar 18 00:33:50 2010
-#
-CONFIG_HAVE_DOT_CONFIG=y
-# CONFIG_TARGET_ppc40x is not set
-# CONFIG_TARGET_ppc44x is not set
-# CONFIG_TARGET_atheros is not set
-# CONFIG_TARGET_ar71xx is not set
-# CONFIG_TARGET_at91 is not set
-# CONFIG_TARGET_avr32 is not set
-# CONFIG_TARGET_brcm63xx is not set
-# CONFIG_TARGET_brcm47xx is not set
-# CONFIG_TARGET_brcm_2_4 is not set
-# CONFIG_TARGET_sibyte is not set
-# CONFIG_TARGET_octeon is not set
-# CONFIG_TARGET_ep93xx is not set
-# CONFIG_TARGET_cobalt is not set
-# CONFIG_TARGET_gemini is not set
-# CONFIG_TARGET_etrax is not set
-# CONFIG_TARGET_coldfire is not set
-# CONFIG_TARGET_mpc52xx is not set
-# CONFIG_TARGET_mpc83xx is not set
-# CONFIG_TARGET_goldfish is not set
-# CONFIG_TARGET_amazon is not set
-# CONFIG_TARGET_ifxmips is not set
-# CONFIG_TARGET_adm5120 is not set
-# CONFIG_TARGET_xburst is not set
-# CONFIG_TARGET_iop32x is not set
-CONFIG_TARGET_ixp4xx=y
-# CONFIG_TARGET_malta is not set
-# CONFIG_TARGET_kirkwood is not set
-# CONFIG_TARGET_orion is not set
-# CONFIG_TARGET_pxa is not set
-# CONFIG_TARGET_rb532 is not set
-# CONFIG_TARGET_pxcab is not set
-# CONFIG_TARGET_rdc is not set
-# CONFIG_TARGET_au1000 is not set
-# CONFIG_TARGET_ramips is not set
-# CONFIG_TARGET_s3c24xx is not set
-# CONFIG_TARGET_ps3 is not set
-# CONFIG_TARGET_ar7 is not set
-# CONFIG_TARGET_omap35xx is not set
-# CONFIG_TARGET_ubicom32 is not set
-# CONFIG_TARGET_uml is not set
-# CONFIG_TARGET_x86 is not set
-# CONFIG_TARGET_xburst_qi_lb60 is not set
-# CONFIG_TARGET_xburst_n516 is not set
-# CONFIG_TARGET_xburst_n526 is not set
-CONFIG_TARGET_ixp4xx_generic=y
-# CONFIG_TARGET_ixp4xx_harddisk is not set
-# CONFIG_TARGET_ramips_rt288x is not set
-# CONFIG_TARGET_ramips_rt305x is not set
-# CONFIG_TARGET_au1000_au1500 is not set
-# CONFIG_TARGET_au1000_au1550 is not set
-# CONFIG_TARGET_ps3_petitboot is not set
-# CONFIG_TARGET_x86_generic is not set
-# CONFIG_TARGET_x86_olpc is not set
-# CONFIG_TARGET_x86_xen_domu is not set
-# CONFIG_TARGET_rdc_amit is not set
-# CONFIG_TARGET_rdc_ar525w is not set
-# CONFIG_TARGET_rdc_r8610 is not set
-# CONFIG_TARGET_rdc_dir_450 is not set
-# CONFIG_TARGET_rdc_sitecom is not set
-# CONFIG_TARGET_rdc_bifferboard is not set
-# CONFIG_TARGET_omap35xx_generic is not set
-# CONFIG_TARGET_orion_generic is not set
-# CONFIG_TARGET_orion_harddisk is not set
-# CONFIG_TARGET_adm5120_router_le is not set
-# CONFIG_TARGET_adm5120_router_be is not set
-# CONFIG_TARGET_goldfish_Default is not set
-# CONFIG_TARGET_brcm63xx_Broadcom is not set
-# CONFIG_TARGET_brcm63xx_Atheros is not set
-# CONFIG_TARGET_brcm63xx_Ralink is not set
-# CONFIG_TARGET_brcm63xx_NoWiFi is not set
-# CONFIG_TARGET_brcm63xx_GW6X00 is not set
-# CONFIG_TARGET_xburst_qi_lb60_Default is not set
-# CONFIG_TARGET_xburst_n516_Default is not set
-# CONFIG_TARGET_xburst_n526_Default is not set
-# CONFIG_TARGET_avr32_Default is not set
-# CONFIG_TARGET_ixp4xx_generic_Default is not set
-# CONFIG_TARGET_ixp4xx_generic_Atheros-ath5k is not set
-CONFIG_TARGET_ixp4xx_generic_NSLU2=y
-# CONFIG_TARGET_ixp4xx_generic_NAS100d is not set
-# CONFIG_TARGET_ixp4xx_generic_DSMG600RevA is not set
-# CONFIG_TARGET_ixp4xx_generic_USR8200 is not set
-# CONFIG_TARGET_ixp4xx_harddisk_FSG3 is not set
-# CONFIG_TARGET_atheros_Default is not set
-# CONFIG_TARGET_ramips_rt288x_Default is not set
-# CONFIG_TARGET_ramips_rt305x_Default is not set
-# CONFIG_TARGET_malta_Default is not set
-# CONFIG_TARGET_brcm_2_4_Broadcom is not set
-# CONFIG_TARGET_brcm_2_4_BroadcomMimo is not set
-# CONFIG_TARGET_brcm_2_4_None is not set
-# CONFIG_TARGET_brcm_2_4_USBGeneric is not set
-# CONFIG_TARGET_brcm_2_4_WL500G is not set
-# CONFIG_TARGET_brcm_2_4_WL500GD is not set
-# CONFIG_TARGET_brcm_2_4_WL500GP is not set
-# CONFIG_TARGET_brcm_2_4_WL700GE is not set
-# CONFIG_TARGET_brcm_2_4_WLHDD is not set
-# CONFIG_TARGET_brcm_2_4_WRT300Nv11 is not set
-# CONFIG_TARGET_brcm_2_4_WRT54G3G is not set
-# CONFIG_TARGET_etrax_default is not set
-# CONFIG_TARGET_etrax_vhdl_no_fb is not set
-# CONFIG_TARGET_ubicom32_Default is not set
-# CONFIG_TARGET_kirkwood_Default is not set
-# CONFIG_TARGET_s3c24xx_openmoko-gta02-minimal is not set
-# CONFIG_TARGET_s3c24xx_openmoko-gta02-full is not set
-# CONFIG_TARGET_au1000_au1500_Atheros is not set
-# CONFIG_TARGET_au1000_au1500_InternetBox is not set
-# CONFIG_TARGET_au1000_au1500_MeshCube is not set
-# CONFIG_TARGET_au1000_au1550_DBAu1550 is not set
-# CONFIG_TARGET_ppc44x_Default is not set
-# CONFIG_TARGET_ps3_petitboot_Default is not set
-# CONFIG_TARGET_brcm47xx_Broadcom-b43 is not set
-# CONFIG_TARGET_brcm47xx_Atheros is not set
-# CONFIG_TARGET_brcm47xx_Atheros-ath5k is not set
-# CONFIG_TARGET_brcm47xx_None is not set
-# CONFIG_TARGET_brcm47xx_WGT634U is not set
-# CONFIG_TARGET_brcm47xx_WL500GPv1 is not set
-# CONFIG_TARGET_brcm47xx_WRT350Nv1 is not set
-# CONFIG_TARGET_brcm47xx_WRTSL54GS is not set
-# CONFIG_TARGET_coldfire_Default is not set
-# CONFIG_TARGET_x86_generic_Generic is not set
-# CONFIG_TARGET_x86_generic_Alix is not set
-# CONFIG_TARGET_x86_generic_Soekris45xx is not set
-# CONFIG_TARGET_x86_generic_Soekris48xx is not set
-# CONFIG_TARGET_x86_generic_Wrap is not set
-# CONFIG_TARGET_x86_olpc_Default is not set
-# CONFIG_TARGET_x86_xen_domu_Default is not set
-# CONFIG_TARGET_rdc_amit_Default is not set
-# CONFIG_TARGET_rdc_ar525w_Default is not set
-# CONFIG_TARGET_rdc_r8610_Default is not set
-# CONFIG_TARGET_rdc_dir_450_Default is not set
-# CONFIG_TARGET_rdc_sitecom_Default is not set
-# CONFIG_TARGET_rdc_bifferboard_Default is not set
-# CONFIG_TARGET_omap35xx_generic_Beagleboard is not set
-# CONFIG_TARGET_rb532_Default is not set
-# CONFIG_TARGET_orion_generic_Default is not set
-# CONFIG_TARGET_orion_harddisk_Default is not set
-# CONFIG_TARGET_adm5120_router_le_Generic is not set
-# CONFIG_TARGET_adm5120_router_le_CAS630 is not set
-# CONFIG_TARGET_adm5120_router_le_CAS630W is not set
-# CONFIG_TARGET_adm5120_router_le_CAS670 is not set
-# CONFIG_TARGET_adm5120_router_le_CAS670W is not set
-# CONFIG_TARGET_adm5120_router_le_CAS700 is not set
-# CONFIG_TARGET_adm5120_router_le_CAS700W is not set
-# CONFIG_TARGET_adm5120_router_le_CAS771 is not set
-# CONFIG_TARGET_adm5120_router_le_CAS771W is not set
-# CONFIG_TARGET_adm5120_router_le_CAS790 is not set
-# CONFIG_TARGET_adm5120_router_le_CAS861 is not set
-# CONFIG_TARGET_adm5120_router_le_CAS861W is not set
-# CONFIG_TARGET_adm5120_router_le_NFS101U is not set
-# CONFIG_TARGET_adm5120_router_le_NFS101WU is not set
-# CONFIG_TARGET_adm5120_router_le_NP27G is not set
-# CONFIG_TARGET_adm5120_router_le_NP28G is not set
-# CONFIG_TARGET_adm5120_router_le_WP54 is not set
-# CONFIG_TARGET_adm5120_router_le_BR6104K is not set
-# CONFIG_TARGET_adm5120_router_le_BR6104KP is not set
-# CONFIG_TARGET_adm5120_router_le_BR6104WG is not set
-# CONFIG_TARGET_adm5120_router_le_BR6114WG is not set
-# CONFIG_TARGET_adm5120_router_le_EASY5120RT is not set
-# CONFIG_TARGET_adm5120_router_le_EASY5120PATA is not set
-# CONFIG_TARGET_adm5120_router_le_PMUGW is not set
-# CONFIG_TARGET_adm5120_router_le_5GXI is not set
-# CONFIG_TARGET_adm5120_router_le_RouterBoard is not set
-# CONFIG_TARGET_adm5120_router_be_Generic is not set
-# CONFIG_TARGET_adm5120_router_be_P334WT is not set
-# CONFIG_TARGET_adm5120_router_be_P335WT is not set
-# CONFIG_TARGET_uml_Default is not set
-# CONFIG_TARGET_ep93xx_Default is not set
-# CONFIG_TARGET_at91_Default is not set
-# CONFIG_TARGET_ar71xx_Default is not set
-# CONFIG_TARGET_ar71xx_Madwifi is not set
-# CONFIG_TARGET_ar71xx_AP81 is not set
-# CONFIG_TARGET_ar71xx_AP83 is not set
-# CONFIG_TARGET_ar71xx_PB42 is not set
-# CONFIG_TARGET_ar71xx_PB44 is not set
-# CONFIG_TARGET_ar71xx_A02RBW300N is not set
-# CONFIG_TARGET_ar71xx_WZRHPG300NH is not set
-# CONFIG_TARGET_ar71xx_WP543 is not set
-# CONFIG_TARGET_ar71xx_DIR600A1 is not set
-# CONFIG_TARGET_ar71xx_DIR615C1 is not set
-# CONFIG_TARGET_ar71xx_DIR825B1 is not set
-# CONFIG_TARGET_ar71xx_WRT160NL is not set
-# CONFIG_TARGET_ar71xx_WRT400N is not set
-# CONFIG_TARGET_ar71xx_WNDR3700 is not set
-# CONFIG_TARGET_ar71xx_MZKW04NU is not set
-# CONFIG_TARGET_ar71xx_MZKW300NH is not set
-# CONFIG_TARGET_ar71xx_TLWR741NDV1 is not set
-# CONFIG_TARGET_ar71xx_TLWR841NV15 is not set
-# CONFIG_TARGET_ar71xx_TLWR841NDV3 is not set
-# CONFIG_TARGET_ar71xx_TLWR841NDV5 is not set
-# CONFIG_TARGET_ar71xx_TLWR941NDV2 is not set
-# CONFIG_TARGET_ar71xx_TLWR941NDV4 is not set
-# CONFIG_TARGET_ar71xx_TLWR1043NDV1 is not set
-# CONFIG_TARGET_ar71xx_TEW632BRP is not set
-# CONFIG_TARGET_ar71xx_TEW652BRP is not set
-# CONFIG_TARGET_ar71xx_UBNTRS is not set
-# CONFIG_TARGET_ar71xx_UBNTRSPRO is not set
-# CONFIG_TARGET_ar71xx_UBNT is not set
-# CONFIG_TARGET_octeon_generic is not set
-# CONFIG_TARGET_octeon_mototech is not set
-# CONFIG_TARGET_octeon_simulator is not set
-# CONFIG_TARGET_ifxmips_None is not set
-# CONFIG_TARGET_ifxmips_Atheros is not set
-# CONFIG_TARGET_ifxmips_Ralink is not set
-# CONFIG_TARGET_mpc83xx_Default is not set
-# CONFIG_TARGET_sibyte_Default is not set
-# CONFIG_TARGET_gemini_Default is not set
-# CONFIG_TARGET_mpc52xx_Default is not set
-# CONFIG_TARGET_ar7_Annex-A is not set
-# CONFIG_TARGET_ar7_Annex-B is not set
-# CONFIG_TARGET_ar7_Texas is not set
-# CONFIG_TARGET_ar7_None is not set
-# CONFIG_TARGET_cobalt_Default is not set
-# CONFIG_TARGET_pxcab_Default is not set
-# CONFIG_TARGET_pxa_Default is not set
-# CONFIG_TARGET_iop32x_Default is not set
-# CONFIG_TARGET_ppc40x_Default is not set
-# CONFIG_TARGET_amazon_Default is not set
-CONFIG_HAS_SUBTARGETS=y
-CONFIG_TARGET_BOARD="ixp4xx"
-CONFIG_DEFAULT_TARGET_OPTIMIZATION="-Os -pipe -march=armv5te -mtune=xscale -funit-at-a-time"
-CONFIG_LINUX_2_6_32=y
-CONFIG_DEFAULT_base-files=y
-CONFIG_DEFAULT_busybox=y
-CONFIG_DEFAULT_dnsmasq=y
-CONFIG_DEFAULT_dropbear=y
-CONFIG_DEFAULT_fconfig=y
-CONFIG_DEFAULT_firewall=y
-CONFIG_DEFAULT_hotplug2=y
-CONFIG_DEFAULT_iptables=y
-CONFIG_DEFAULT_ixp4xx-microcode=y
-CONFIG_DEFAULT_kmod-fs-ext2=y
-CONFIG_DEFAULT_kmod-fs-ext3=y
-CONFIG_DEFAULT_kmod-ipt-nathelper=y
-CONFIG_DEFAULT_kmod-scsi-core=y
-CONFIG_DEFAULT_kmod-usb-core=y
-CONFIG_DEFAULT_kmod-usb-ohci=y
-CONFIG_DEFAULT_kmod-usb-storage=y
-CONFIG_DEFAULT_kmod-usb2=y
-CONFIG_DEFAULT_libc=y
-CONFIG_DEFAULT_libgcc=y
-CONFIG_DEFAULT_mtd=y
-CONFIG_DEFAULT_opkg=y
-CONFIG_DEFAULT_ppp=y
-CONFIG_DEFAULT_ppp-mod-pppoe=y
-CONFIG_DEFAULT_uci=y
-CONFIG_DEFAULT_ucitrigger=y
-CONFIG_DEFAULT_udevtrigger=y
-CONFIG_LINUX_2_6=y
-CONFIG_AUDIO_SUPPORT=y
-CONFIG_GPIO_SUPPORT=y
-CONFIG_PCI_SUPPORT=y
-CONFIG_USB_SUPPORT=y
-CONFIG_BIG_ENDIAN=y
-CONFIG_USES_SQUASHFS=y
-CONFIG_armeb=y
-CONFIG_ARCH="armeb"
-
-#
-# Target Images
-#
-# CONFIG_TARGET_ROOTFS_INITRAMFS is not set
-# CONFIG_TARGET_ROOTFS_JFFS2 is not set
-CONFIG_TARGET_ROOTFS_SQUASHFS=y
-# CONFIG_TARGET_ROOTFS_TGZ is not set
-# CONFIG_TARGET_ROOTFS_CPIOGZ is not set
-# CONFIG_TARGET_ROOTFS_EXT2FS is not set
-
-#
-# Image Options
-#
-CONFIG_X86_GRUB_ROOTPART="/dev/sda2"
-CONFIG_X86_GRUB_BOOTOPTS=""
-CONFIG_OLPC_BOOTSCRIPT_ROOTPART="/dev/sda2"
-
-#
-# Global build settings
-#
-# CONFIG_ALL is not set
-
-#
-# General build options
-#
-# CONFIG_CLEAN_IPKG is not set
-CONFIG_LARGEFILE=y
-# CONFIG_SHADOW_PASSWORDS is not set
-# CONFIG_NO_STRIP is not set
-# CONFIG_USE_STRIP is not set
-CONFIG_USE_SSTRIP=y
-# CONFIG_USE_MKLIBS is not set
-# CONFIG_STRIP_KERNEL_EXPORTS is not set
-
-#
-# Package build options
-#
-# CONFIG_DEBUG is not set
-CONFIG_IPV6=y
-
-#
-# Kernel build options
-#
-# CONFIG_KERNEL_KALLSYMS is not set
-# CONFIG_KERNEL_PROFILING is not set
-# CONFIG_KERNEL_DEBUG_FS is not set
-CONFIG_DEVEL=y
-CONFIG_BROKEN=y
-CONFIG_DOWNLOAD_FOLDER=""
-CONFIG_LOCALMIRROR=""
-CONFIG_AUTOREBUILD=y
-CONFIG_BUILD_SUFFIX=""
-CONFIG_TARGET_ROOTFS_DIR=""
-CONFIG_CCACHE=y
-CONFIG_EXTERNAL_KERNEL_TREE=""
-CONFIG_KERNEL_GIT_CLONE_URI=""
-CONFIG_KERNEL_GIT_LOCAL_REPOSITORY=""
-# CONFIG_TARGET_OPTIONS is not set
-CONFIG_TARGET_OPTIMIZATION="-Os -pipe -march=armv5te -mtune=xscale -funit-at-a-time"
-CONFIG_SOFT_FLOAT=y
-# CONFIG_EXTERNAL_TOOLCHAIN is not set
-CONFIG_NEED_TOOLCHAIN=y
-# CONFIG_TOOLCHAINOPTS is not set
-CONFIG_EABI_SUPPORT=y
-# CONFIG_EXTRA_TARGET_ARCH is not set
-CONFIG_EXTRA_BINUTILS_CONFIG_OPTIONS=""
-CONFIG_BINUTILS_VERSION="2.19.1"
-CONFIG_GCC_VERSION_4_3_3_CS=y
-CONFIG_EXTRA_GCC_CONFIG_OPTIONS=""
-# CONFIG_SSP_SUPPORT is not set
-CONFIG_INSTALL_LIBSTDCPP=y
-# CONFIG_INSTALL_LIBGCJ is not set
-CONFIG_USE_UCLIBC=y
-# CONFIG_GDB is not set
-# CONFIG_INSIGHT is not set
-CONFIG_GCC_VERSION="4.3.3+cs"
-CONFIG_GCC_VERSION_4=y
-CONFIG_GCC_VERSION_4_3=y
-CONFIG_UCLIBC_VERSION="0.9.30.1"
-CONFIG_LIBC="uClibc"
-CONFIG_LIBC_VERSION="0.9.30.1"
-CONFIG_TARGET_SUFFIX="uclibcgnueabi"
-# CONFIG_IB is not set
-# CONFIG_SDK is not set
-# CONFIG_MAKE_TOOLCHAIN is not set
-CONFIG_IMAGEOPT=y
-CONFIG_UCI_PRECONFIG_luci_main_lang="en"
-CONFIG_UCI_PRECONFIG_network_lan_dns="89.106.211.1"
-CONFIG_UCI_PRECONFIG_network_lan_proto="static"
-CONFIG_UCI_PRECONFIG_network_lan_gateway="89.106.215.33"
-CONFIG_UCI_PRECONFIG_network_lan_netmask="255.255.255.224"
-CONFIG_UCI_PRECONFIG_network_lan_ipaddr="89.106.215.59"
-# CONFIG_PREINITOPT is not set
-CONFIG_TARGET_PREINIT_SUPPRESS_STDERR=y
-CONFIG_TARGET_PREINIT_TIMEOUT=2
-# CONFIG_TARGET_PREINIT_SHOW_NETMSG is not set
-# CONFIG_TARGET_PREINIT_SUPPRESS_FAILSAFE_NETMSG is not set
-CONFIG_TARGET_PREINIT_IFNAME=""
-CONFIG_TARGET_PREINIT_IP="192.168.1.1"
-CONFIG_TARGET_PREINIT_NETMASK="255.255.255.0"
-CONFIG_TARGET_PREINIT_BROADCAST="192.168.1.255"
-# CONFIG_INITOPT is not set
-CONFIG_TARGET_INIT_PATH="/bin:/sbin:/usr/bin:/usr/sbin"
-CONFIG_TARGET_INIT_ENV=""
-CONFIG_TARGET_INIT_CMD="/sbin/init"
-CONFIG_TARGET_INIT_SUPPRESS_STDERR=y
-
-#
-# Package features
-#
-CONFIG_FEATURE_drawing-backend_DirectFB=y
-# CONFIG_FEATURE_drawing-backend_libX11 is not set
-
-#
-# Base system
-#
-CONFIG_PACKAGE_base-files=y
-CONFIG_PACKAGE_block-mount=y
-CONFIG_PACKAGE_block-hotplug=m
-# CONFIG_PACKAGE_br2684ctl is not set
-CONFIG_PACKAGE_bridge=y
-CONFIG_PACKAGE_busybox=y
-
-#
-# Configuration
-#
-# CONFIG_BUSYBOX_CONFIG_FEATURE_DEVFS is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_2_4_MODULES is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_2_6_MODULES=y
-# CONFIG_BUSYBOX_CONFIG_NOMMU is not set
-# CONFIG_CONFIG_BUSYBOX_CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_BUSYBOX_CONFIG_HUSH is not set
-CONFIG_BUSYBOX_CONFIG_HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-# CONFIG_BUSYBOX_CONFIG_DESKTOP is not set
-# CONFIG_BUSYBOX_CONFIG_EXTRA_COMPAT is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-CONFIG_BUSYBOX_CONFIG_SHOW_USAGE=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VERBOSE_USAGE=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_COMPRESS_USAGE=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_INSTALLER is not set
-# CONFIG_BUSYBOX_CONFIG_LOCALE_SUPPORT is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_ASSUME_UNICODE=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
-CONFIG_BUSYBOX_CONFIG_LONG_OPTS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_DEVPTS=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_CLEAN_UP is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_PIDFILE=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_SUID=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_BUSYBOX_CONFIG_SELINUX is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS=y
-CONFIG_BUSYBOX_CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-CONFIG_BUSYBOX_CONFIG_FEATURE_SYSLOG=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_HAVE_RPC=y
-
-#
-# Build Options
-#
-# CONFIG_BUSYBOX_CONFIG_STATIC is not set
-# CONFIG_BUSYBOX_CONFIG_PIE is not set
-CONFIG_BUSYBOX_CONFIG_LFS=y
-CONFIG_BUSYBOX_CONFIG_CROSS_COMPILER_PREFIX=""
-CONFIG_BUSYBOX_CONFIG_EXTRA_CFLAGS=""
-
-#
-# Debugging Options
-#
-# CONFIG_BUSYBOX_CONFIG_DEBUG is not set
-# CONFIG_BUSYBOX_CONFIG_WERROR is not set
-CONFIG_BUSYBOX_CONFIG_NO_DEBUG_LIB=y
-# CONFIG_BUSYBOX_CONFIG_DMALLOC is not set
-# CONFIG_BUSYBOX_CONFIG_EFENCE is not set
-CONFIG_BUSYBOX_CONFIG_INCLUDE_SUSv2=y
-
-#
-# Installation Options
-#
-# CONFIG_BUSYBOX_CONFIG_INSTALL_NO_USR is not set
-CONFIG_BUSYBOX_CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_BUSYBOX_CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_BUSYBOX_CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
-# CONFIG_BUSYBOX_CONFIG_INSTALL_APPLET_DONT is not set
-CONFIG_BUSYBOX_CONFIG_PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-CONFIG_BUSYBOX_CONFIG_PASSWORD_MINLEN=6
-CONFIG_BUSYBOX_CONFIG_MD5_SIZE_VS_SPEED=2
-CONFIG_BUSYBOX_CONFIG_FEATURE_FAST_TOP=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_ETC_NETWORKS is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_EDITING=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_EDITING_MAX_LEN=512
-# CONFIG_BUSYBOX_CONFIG_FEATURE_EDITING_VI is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_EDITING_HISTORY=256
-# CONFIG_BUSYBOX_CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_TAB_COMPLETION=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_USERNAME_COMPLETION is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_NON_POSIX_CP=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_COPYBUF_KB=4
-# CONFIG_BUSYBOX_CONFIG_MONOTONIC_SYSCALL is not set
-CONFIG_BUSYBOX_CONFIG_IOCTL_HEX2STR_ERROR=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_HWIB is not set
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-# CONFIG_BUSYBOX_CONFIG_FEATURE_SEAMLESS_LZMA is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_SEAMLESS_BZ2=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_SEAMLESS_Z is not set
-# CONFIG_BUSYBOX_CONFIG_AR is not set
-CONFIG_BUSYBOX_CONFIG_BUNZIP2=y
-# CONFIG_BUSYBOX_CONFIG_BZIP2 is not set
-# CONFIG_BUSYBOX_CONFIG_CPIO is not set
-# CONFIG_BUSYBOX_CONFIG_DPKG is not set
-# CONFIG_BUSYBOX_CONFIG_DPKG_DEB is not set
-CONFIG_BUSYBOX_CONFIG_GUNZIP=y
-CONFIG_BUSYBOX_CONFIG_GZIP=y
-# CONFIG_BUSYBOX_CONFIG_LZOP is not set
-# CONFIG_BUSYBOX_CONFIG_RPM2CPIO is not set
-# CONFIG_BUSYBOX_CONFIG_RPM is not set
-CONFIG_BUSYBOX_CONFIG_TAR=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_TAR_CREATE=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_TAR_AUTODETECT is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_TAR_FROM=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_TAR_UNAME_GNAME is not set
-# CONFIG_BUSYBOX_CONFIG_UNCOMPRESS is not set
-# CONFIG_BUSYBOX_CONFIG_UNLZMA is not set
-# CONFIG_BUSYBOX_CONFIG_UNZIP is not set
-
-#
-# Coreutils
-#
-CONFIG_BUSYBOX_CONFIG_BASENAME=y
-# CONFIG_BUSYBOX_CONFIG_CAL is not set
-CONFIG_BUSYBOX_CONFIG_CAT=y
-# CONFIG_BUSYBOX_CONFIG_CATV is not set
-CONFIG_BUSYBOX_CONFIG_CHGRP=y
-CONFIG_BUSYBOX_CONFIG_CHMOD=y
-CONFIG_BUSYBOX_CONFIG_CHOWN=y
-CONFIG_BUSYBOX_CONFIG_CHROOT=y
-# CONFIG_BUSYBOX_CONFIG_CKSUM is not set
-# CONFIG_BUSYBOX_CONFIG_COMM is not set
-CONFIG_BUSYBOX_CONFIG_CP=y
-CONFIG_BUSYBOX_CONFIG_CUT=y
-CONFIG_BUSYBOX_CONFIG_DATE=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_DATE_ISOFMT=y
-CONFIG_BUSYBOX_CONFIG_DD=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_DD_IBS_OBS=y
-CONFIG_BUSYBOX_CONFIG_DF=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_DF_FANCY is not set
-CONFIG_BUSYBOX_CONFIG_DIRNAME=y
-# CONFIG_BUSYBOX_CONFIG_DOS2UNIX is not set
-CONFIG_BUSYBOX_CONFIG_DU=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
-CONFIG_BUSYBOX_CONFIG_ECHO=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_BUSYBOX_CONFIG_ENV=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
-# CONFIG_BUSYBOX_CONFIG_EXPAND is not set
-CONFIG_BUSYBOX_CONFIG_EXPR=y
-CONFIG_BUSYBOX_CONFIG_EXPR_MATH_SUPPORT_64=y
-CONFIG_BUSYBOX_CONFIG_FALSE=y
-# CONFIG_BUSYBOX_CONFIG_FOLD is not set
-# CONFIG_BUSYBOX_CONFIG_FSYNC is not set
-CONFIG_BUSYBOX_CONFIG_HEAD=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FANCY_HEAD=y
-CONFIG_BUSYBOX_CONFIG_HOSTID=y
-CONFIG_BUSYBOX_CONFIG_ID=y
-# CONFIG_BUSYBOX_CONFIG_INSTALL is not set
-CONFIG_BUSYBOX_CONFIG_LENGTH=y
-CONFIG_BUSYBOX_CONFIG_LN=y
-# CONFIG_BUSYBOX_CONFIG_LOGNAME is not set
-CONFIG_BUSYBOX_CONFIG_LS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_LS_USERNAME=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_LS_COLOR=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
-CONFIG_BUSYBOX_CONFIG_MD5SUM=y
-CONFIG_BUSYBOX_CONFIG_MKDIR=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
-CONFIG_BUSYBOX_CONFIG_MKFIFO=y
-CONFIG_BUSYBOX_CONFIG_MKNOD=y
-CONFIG_BUSYBOX_CONFIG_MV=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_MV_LONG_OPTIONS is not set
-CONFIG_BUSYBOX_CONFIG_NICE=y
-CONFIG_BUSYBOX_CONFIG_NOHUP=y
-# CONFIG_BUSYBOX_CONFIG_OD is not set
-# CONFIG_BUSYBOX_CONFIG_PRINTENV is not set
-CONFIG_BUSYBOX_CONFIG_PRINTF=y
-CONFIG_BUSYBOX_CONFIG_PWD=y
-CONFIG_BUSYBOX_CONFIG_READLINK=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_READLINK_FOLLOW is not set
-CONFIG_BUSYBOX_CONFIG_REALPATH=y
-CONFIG_BUSYBOX_CONFIG_RM=y
-CONFIG_BUSYBOX_CONFIG_RMDIR=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set
-CONFIG_BUSYBOX_CONFIG_SEQ=y
-# CONFIG_BUSYBOX_CONFIG_SHA1SUM is not set
-# CONFIG_BUSYBOX_CONFIG_SHA256SUM is not set
-# CONFIG_BUSYBOX_CONFIG_SHA512SUM is not set
-CONFIG_BUSYBOX_CONFIG_SLEEP=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FANCY_SLEEP=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_FLOAT_SLEEP is not set
-CONFIG_BUSYBOX_CONFIG_SORT=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_SORT_BIG is not set
-# CONFIG_BUSYBOX_CONFIG_SPLIT is not set
-CONFIG_BUSYBOX_CONFIG_STAT=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_STAT_FORMAT is not set
-# CONFIG_BUSYBOX_CONFIG_STTY is not set
-# CONFIG_BUSYBOX_CONFIG_SUM is not set
-CONFIG_BUSYBOX_CONFIG_SYNC=y
-# CONFIG_BUSYBOX_CONFIG_TAC is not set
-CONFIG_BUSYBOX_CONFIG_TAIL=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_BUSYBOX_CONFIG_TEE=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
-CONFIG_BUSYBOX_CONFIG_TEST=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_TEST_64=y
-CONFIG_BUSYBOX_CONFIG_TOUCH=y
-CONFIG_BUSYBOX_CONFIG_TR=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_TR_CLASSES is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_TR_EQUIV is not set
-CONFIG_BUSYBOX_CONFIG_TRUE=y
-# CONFIG_BUSYBOX_CONFIG_TTY is not set
-CONFIG_BUSYBOX_CONFIG_UNAME=y
-# CONFIG_BUSYBOX_CONFIG_UNEXPAND is not set
-CONFIG_BUSYBOX_CONFIG_UNIQ=y
-# CONFIG_BUSYBOX_CONFIG_USLEEP is not set
-# CONFIG_BUSYBOX_CONFIG_UUDECODE is not set
-# CONFIG_BUSYBOX_CONFIG_UUENCODE is not set
-CONFIG_BUSYBOX_CONFIG_WC=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_WC_LARGE is not set
-# CONFIG_BUSYBOX_CONFIG_WHO is not set
-# CONFIG_BUSYBOX_CONFIG_WHOAMI is not set
-CONFIG_BUSYBOX_CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-CONFIG_BUSYBOX_CONFIG_FEATURE_PRESERVE_HARDLINKS=y
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_BUSYBOX_CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_BUSYBOX_CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum
-#
-CONFIG_BUSYBOX_CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-# CONFIG_BUSYBOX_CONFIG_CHVT is not set
-CONFIG_BUSYBOX_CONFIG_CLEAR=y
-# CONFIG_BUSYBOX_CONFIG_DEALLOCVT is not set
-# CONFIG_BUSYBOX_CONFIG_DUMPKMAP is not set
-# CONFIG_BUSYBOX_CONFIG_KBD_MODE is not set
-# CONFIG_BUSYBOX_CONFIG_LOADFONT is not set
-# CONFIG_BUSYBOX_CONFIG_LOADKMAP is not set
-# CONFIG_BUSYBOX_CONFIG_OPENVT is not set
-CONFIG_BUSYBOX_CONFIG_RESET=y
-# CONFIG_BUSYBOX_CONFIG_RESIZE is not set
-# CONFIG_BUSYBOX_CONFIG_SETCONSOLE is not set
-# CONFIG_BUSYBOX_CONFIG_SETFONT is not set
-# CONFIG_BUSYBOX_CONFIG_SETKEYCODES is not set
-# CONFIG_BUSYBOX_CONFIG_SETLOGCONS is not set
-# CONFIG_BUSYBOX_CONFIG_SHOWKEY is not set
-
-#
-# Debian Utilities
-#
-CONFIG_BUSYBOX_CONFIG_MKTEMP=y
-# CONFIG_BUSYBOX_CONFIG_PIPE_PROGRESS is not set
-# CONFIG_BUSYBOX_CONFIG_RUN_PARTS is not set
-CONFIG_BUSYBOX_CONFIG_START_STOP_DAEMON=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
-CONFIG_BUSYBOX_CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_BUSYBOX_CONFIG_AWK=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_AWK_LIBM=y
-# CONFIG_BUSYBOX_CONFIG_CMP is not set
-CONFIG_BUSYBOX_CONFIG_DIFF=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_DIFF_BINARY is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_DIFF_DIR is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_DIFF_MINIMAL is not set
-# CONFIG_BUSYBOX_CONFIG_ED is not set
-# CONFIG_BUSYBOX_CONFIG_PATCH is not set
-CONFIG_BUSYBOX_CONFIG_SED=y
-CONFIG_BUSYBOX_CONFIG_VI=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VI_MAX_LEN=1024
-CONFIG_BUSYBOX_CONFIG_FEATURE_VI_8BIT=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VI_COLON=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VI_YANKMARK=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VI_SEARCH=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VI_USE_SIGNALS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VI_DOT_CMD=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VI_READONLY=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VI_SETOPTS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VI_SET=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VI_WIN_RESIZE=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_ALLOW_EXEC=y
-
-#
-# Finding Utilities
-#
-CONFIG_BUSYBOX_CONFIG_FIND=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_MTIME=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_MMIN is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_PERM=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_TYPE=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_XDEV=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_MAXDEPTH=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_NEWER=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_INUM is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_EXEC=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_USER=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_GROUP=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_NOT=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_DEPTH=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_PAREN=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_SIZE=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_PRUNE=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_DELETE is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_PATH=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FIND_REGEX=y
-CONFIG_BUSYBOX_CONFIG_GREP=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_GREP_EGREP_ALIAS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_GREP_FGREP_ALIAS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_GREP_CONTEXT=y
-CONFIG_BUSYBOX_CONFIG_XARGS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
-
-#
-# Init Utilities
-#
-CONFIG_BUSYBOX_CONFIG_INIT=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_USE_INITTAB=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_KILL_REMOVED is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_INIT_SCTTY is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_INIT_SYSLOG=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_EXTRA_QUIET is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_INITRD is not set
-CONFIG_BUSYBOX_CONFIG_HALT=y
-CONFIG_BUSYBOX_CONFIG_MESG=y
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_BUSYBOX_CONFIG_FEATURE_SHADOWPASSWDS is not set
-# CONFIG_BUSYBOX_CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_BUSYBOX_CONFIG_USE_BB_CRYPT is not set
-# CONFIG_BUSYBOX_CONFIG_ADDGROUP is not set
-# CONFIG_BUSYBOX_CONFIG_DELGROUP is not set
-# CONFIG_BUSYBOX_CONFIG_ADDUSER is not set
-# CONFIG_BUSYBOX_CONFIG_DELUSER is not set
-# CONFIG_BUSYBOX_CONFIG_GETTY is not set
-# CONFIG_BUSYBOX_CONFIG_LOGIN is not set
-CONFIG_BUSYBOX_CONFIG_PASSWD=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
-# CONFIG_BUSYBOX_CONFIG_CRYPTPW is not set
-# CONFIG_BUSYBOX_CONFIG_CHPASSWD is not set
-# CONFIG_BUSYBOX_CONFIG_SU is not set
-# CONFIG_BUSYBOX_CONFIG_SULOGIN is not set
-# CONFIG_BUSYBOX_CONFIG_VLOCK is not set
-
-#
-# Linux Ext2 FS Progs
-#
-# CONFIG_BUSYBOX_CONFIG_CHATTR is not set
-# CONFIG_BUSYBOX_CONFIG_FSCK is not set
-# CONFIG_BUSYBOX_CONFIG_LSATTR is not set
-
-#
-# Linux Module Utilities
-#
-# CONFIG_BUSYBOX_CONFIG_MODPROBE_SMALL is not set
-CONFIG_BUSYBOX_CONFIG_INSMOD=y
-CONFIG_BUSYBOX_CONFIG_RMMOD=y
-CONFIG_BUSYBOX_CONFIG_LSMOD=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
-# CONFIG_BUSYBOX_CONFIG_MODPROBE is not set
-# CONFIG_BUSYBOX_CONFIG_DEPMOD is not set
-
-#
-# Options common to multiple modutils
-#
-CONFIG_BUSYBOX_CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
-CONFIG_BUSYBOX_CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
-
-#
-# Linux System Utilities
-#
-# CONFIG_BUSYBOX_CONFIG_ACPID is not set
-CONFIG_BUSYBOX_CONFIG_BLKID=y
-CONFIG_BUSYBOX_CONFIG_DMESG=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_DMESG_PRETTY=y
-# CONFIG_BUSYBOX_CONFIG_FBSET is not set
-# CONFIG_BUSYBOX_CONFIG_FDFLUSH is not set
-# CONFIG_BUSYBOX_CONFIG_FDFORMAT is not set
-# CONFIG_BUSYBOX_CONFIG_FDISK is not set
-CONFIG_BUSYBOX_CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
-# CONFIG_BUSYBOX_CONFIG_FINDFS is not set
-# CONFIG_BUSYBOX_CONFIG_FREERAMDISK is not set
-# CONFIG_BUSYBOX_CONFIG_FSCK_MINIX is not set
-# CONFIG_BUSYBOX_CONFIG_MKFS_MINIX is not set
-# CONFIG_BUSYBOX_CONFIG_MKFS_VFAT is not set
-# CONFIG_BUSYBOX_CONFIG_GETOPT is not set
-CONFIG_BUSYBOX_CONFIG_HEXDUMP=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_HEXDUMP_REVERSE is not set
-# CONFIG_BUSYBOX_CONFIG_HD is not set
-CONFIG_BUSYBOX_CONFIG_HWCLOCK=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
-# CONFIG_BUSYBOX_CONFIG_IPCRM is not set
-# CONFIG_BUSYBOX_CONFIG_IPCS is not set
-# CONFIG_BUSYBOX_CONFIG_LOSETUP is not set
-# CONFIG_BUSYBOX_CONFIG_MDEV is not set
-CONFIG_BUSYBOX_CONFIG_MKSWAP=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_MKSWAP_UUID=y
-# CONFIG_BUSYBOX_CONFIG_MORE is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_USE_TERMIOS is not set
-CONFIG_BUSYBOX_CONFIG_VOLUMEID=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_EXT=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_REISERFS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_FAT=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_HFS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_JFS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_XFS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_NTFS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_ISO9660=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_UDF=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_LUKS is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_CRAMFS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_ROMFS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_SYSV=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_OCFS2=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set
-CONFIG_BUSYBOX_CONFIG_MOUNT=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_FAKE is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_VERBOSE is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_HELPERS is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_LABEL=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_NFS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_CIFS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_FLAGS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_FSTAB=y
-CONFIG_BUSYBOX_CONFIG_PIVOT_ROOT=y
-CONFIG_BUSYBOX_CONFIG_RDATE=y
-# CONFIG_BUSYBOX_CONFIG_RDEV is not set
-# CONFIG_BUSYBOX_CONFIG_READPROFILE is not set
-# CONFIG_BUSYBOX_CONFIG_RTCWAKE is not set
-# CONFIG_BUSYBOX_CONFIG_SCRIPT is not set
-# CONFIG_BUSYBOX_CONFIG_SCRIPTREPLAY is not set
-# CONFIG_BUSYBOX_CONFIG_SETARCH is not set
-CONFIG_BUSYBOX_CONFIG_SWAPONOFF=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_SWAPON_PRI is not set
-CONFIG_BUSYBOX_CONFIG_SWITCH_ROOT=y
-CONFIG_BUSYBOX_CONFIG_UMOUNT=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_UMOUNT_ALL=y
-
-#
-# Common options for mount/umount
-#
-CONFIG_BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_MTAB_SUPPORT is not set
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_BUSYBOX_CONFIG_ADJTIMEX is not set
-# CONFIG_BUSYBOX_CONFIG_BBCONFIG is not set
-# CONFIG_BUSYBOX_CONFIG_BEEP is not set
-# CONFIG_BUSYBOX_CONFIG_CHAT is not set
-# CONFIG_BUSYBOX_CONFIG_CHRT is not set
-CONFIG_BUSYBOX_CONFIG_CROND=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_CROND_D is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_CROND_DIR="/var/spool/cron"
-CONFIG_BUSYBOX_CONFIG_CRONTAB=y
-# CONFIG_BUSYBOX_CONFIG_DC is not set
-# CONFIG_BUSYBOX_CONFIG_DEVFSD is not set
-# CONFIG_BUSYBOX_CONFIG_DEVMEM is not set
-# CONFIG_BUSYBOX_CONFIG_EJECT is not set
-# CONFIG_BUSYBOX_CONFIG_FBSPLASH is not set
-# CONFIG_BUSYBOX_CONFIG_FLASH_LOCK is not set
-# CONFIG_BUSYBOX_CONFIG_FLASH_UNLOCK is not set
-# CONFIG_BUSYBOX_CONFIG_FLASH_ERASEALL is not set
-# CONFIG_BUSYBOX_CONFIG_IONICE is not set
-CONFIG_BUSYBOX_CONFIG_INOTIFYD=y
-# CONFIG_BUSYBOX_CONFIG_LAST is not set
-CONFIG_BUSYBOX_CONFIG_LESS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_LESS_MAXLINES=9999999
-# CONFIG_BUSYBOX_CONFIG_FEATURE_LESS_BRACKETS is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_LESS_FLAGS is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_LESS_MARKS is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_LESS_REGEXP is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_LESS_WINCH is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_LESS_DASHCMD is not set
-# CONFIG_BUSYBOX_CONFIG_HDPARM is not set
-CONFIG_BUSYBOX_CONFIG_LOCK=y
-# CONFIG_BUSYBOX_CONFIG_MAKEDEVS is not set
-# CONFIG_BUSYBOX_CONFIG_MAN is not set
-# CONFIG_BUSYBOX_CONFIG_MICROCOM is not set
-# CONFIG_BUSYBOX_CONFIG_MOUNTPOINT is not set
-# CONFIG_BUSYBOX_CONFIG_MT is not set
-# CONFIG_BUSYBOX_CONFIG_RAIDAUTORUN is not set
-# CONFIG_BUSYBOX_CONFIG_READAHEAD is not set
-# CONFIG_BUSYBOX_CONFIG_RUNLEVEL is not set
-# CONFIG_BUSYBOX_CONFIG_RX is not set
-# CONFIG_BUSYBOX_CONFIG_SETSID is not set
-CONFIG_BUSYBOX_CONFIG_STRINGS=y
-# CONFIG_BUSYBOX_CONFIG_TASKSET is not set
-CONFIG_BUSYBOX_CONFIG_TIME=y
-# CONFIG_BUSYBOX_CONFIG_TIMEOUT is not set
-# CONFIG_BUSYBOX_CONFIG_TTYSIZE is not set
-# CONFIG_BUSYBOX_CONFIG_VOLNAME is not set
-CONFIG_BUSYBOX_CONFIG_WATCHDOG=y
-
-#
-# Networking Utilities
-#
-CONFIG_BUSYBOX_CONFIG_FEATURE_IPV6=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_UNIX_LOCAL=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
-CONFIG_BUSYBOX_CONFIG_VERBOSE_RESOLUTION_ERRORS=y
-# CONFIG_BUSYBOX_CONFIG_ARP is not set
-CONFIG_BUSYBOX_CONFIG_ARPING=y
-CONFIG_BUSYBOX_CONFIG_BRCTL=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_BRCTL_FANCY=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_BRCTL_SHOW=y
-# CONFIG_BUSYBOX_CONFIG_DNSD is not set
-# CONFIG_BUSYBOX_CONFIG_ETHER_WAKE is not set
-# CONFIG_BUSYBOX_CONFIG_FAKEIDENTD is not set
-# CONFIG_BUSYBOX_CONFIG_FTPD is not set
-# CONFIG_BUSYBOX_CONFIG_FTPGET is not set
-# CONFIG_BUSYBOX_CONFIG_FTPPUT is not set
-# CONFIG_BUSYBOX_CONFIG_HOSTNAME is not set
-CONFIG_BUSYBOX_CONFIG_HTTPD=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_HTTPD_RANGES=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_HTTPD_USE_SENDFILE=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_HTTPD_SETUID is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_HTTPD_BASIC_AUTH=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_HTTPD_AUTH_MD5=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_HTTPD_CGI=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_HTTPD_ERROR_PAGES=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_HTTPD_PROXY=y
-CONFIG_BUSYBOX_CONFIG_IFCONFIG=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_IFCONFIG_SLIP is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_IFCONFIG_HW=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
-# CONFIG_BUSYBOX_CONFIG_IFENSLAVE is not set
-# CONFIG_BUSYBOX_CONFIG_IFPLUGD is not set
-# CONFIG_BUSYBOX_CONFIG_IFUPDOWN is not set
-# CONFIG_BUSYBOX_CONFIG_INETD is not set
-# CONFIG_BUSYBOX_CONFIG_IP is not set
-# CONFIG_BUSYBOX_CONFIG_IPCALC is not set
-# CONFIG_BUSYBOX_CONFIG_NAMEIF is not set
-CONFIG_BUSYBOX_CONFIG_NC=y
-CONFIG_BUSYBOX_CONFIG_NETMSG=y
-CONFIG_BUSYBOX_CONFIG_NC_SERVER=y
-# CONFIG_BUSYBOX_CONFIG_NC_EXTRA is not set
-CONFIG_BUSYBOX_CONFIG_NETSTAT=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_NETSTAT_WIDE=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_NETSTAT_PRG=y
-CONFIG_BUSYBOX_CONFIG_NSLOOKUP=y
-CONFIG_BUSYBOX_CONFIG_PING=y
-CONFIG_BUSYBOX_CONFIG_PING6=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_FANCY_PING=y
-# CONFIG_BUSYBOX_CONFIG_PSCAN is not set
-CONFIG_BUSYBOX_CONFIG_ROUTE=y
-# CONFIG_BUSYBOX_CONFIG_SLATTACH is not set
-CONFIG_BUSYBOX_CONFIG_TELNET=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_TELNET_TTYPE=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_TELNET_AUTOLOGIN is not set
-CONFIG_BUSYBOX_CONFIG_TELNETD=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_TELNETD_STANDALONE=y
-# CONFIG_BUSYBOX_CONFIG_TFTP is not set
-# CONFIG_BUSYBOX_CONFIG_TFTPD is not set
-CONFIG_BUSYBOX_CONFIG_TRACEROUTE=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-# CONFIG_BUSYBOX_CONFIG_APP_UDHCPD is not set
-CONFIG_BUSYBOX_CONFIG_APP_UDHCPC=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_UDHCPC_ARPING is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_UDHCP_PORT is not set
-CONFIG_BUSYBOX_CONFIG_UDHCP_DEBUG=0
-CONFIG_BUSYBOX_CONFIG_FEATURE_UDHCP_RFC3397=y
-CONFIG_BUSYBOX_CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
-CONFIG_BUSYBOX_CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
-CONFIG_BUSYBOX_CONFIG_VCONFIG=y
-CONFIG_BUSYBOX_CONFIG_WGET=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_WGET_AUTHENTICATION=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_WGET_LONG_OPTIONS=y
-# CONFIG_BUSYBOX_CONFIG_ZCIP is not set
-# CONFIG_BUSYBOX_CONFIG_TCPSVD is not set
-# CONFIG_BUSYBOX_CONFIG_TUNCTL is not set
-# CONFIG_BUSYBOX_CONFIG_UDPSVD is not set
-
-#
-# Print Utilities
-#
-# CONFIG_BUSYBOX_CONFIG_LPD is not set
-# CONFIG_BUSYBOX_CONFIG_LPR is not set
-# CONFIG_BUSYBOX_CONFIG_LPQ is not set
-
-#
-# Mail Utilities
-#
-# CONFIG_BUSYBOX_CONFIG_MAKEMIME is not set
-# CONFIG_BUSYBOX_CONFIG_POPMAILDIR is not set
-# CONFIG_BUSYBOX_CONFIG_REFORMIME is not set
-# CONFIG_BUSYBOX_CONFIG_SENDMAIL is not set
-
-#
-# Process Utilities
-#
-CONFIG_BUSYBOX_CONFIG_FREE=y
-# CONFIG_BUSYBOX_CONFIG_FUSER is not set
-CONFIG_BUSYBOX_CONFIG_KILL=y
-CONFIG_BUSYBOX_CONFIG_KILLALL=y
-CONFIG_BUSYBOX_CONFIG_KILLALL5=y
-# CONFIG_BUSYBOX_CONFIG_NMETER is not set
-CONFIG_BUSYBOX_CONFIG_PGREP=y
-CONFIG_BUSYBOX_CONFIG_PIDOF=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_PIDOF_SINGLE=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_PIDOF_OMIT=y
-CONFIG_BUSYBOX_CONFIG_PKILL=y
-CONFIG_BUSYBOX_CONFIG_PS=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_PS_WIDE is not set
-# CONFIG_BUSYBOX_CONFIG_RENICE is not set
-CONFIG_BUSYBOX_CONFIG_BB_SYSCTL=y
-CONFIG_BUSYBOX_CONFIG_TOP=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_TOP_SMP_CPU=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_TOP_DECIMALS is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_TOP_SMP_PROCESS is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_TOPMEM is not set
-CONFIG_BUSYBOX_CONFIG_UPTIME=y
-CONFIG_BUSYBOX_CONFIG_WATCH=y
-
-#
-# Runit Utilities
-#
-# CONFIG_BUSYBOX_CONFIG_RUNSV is not set
-# CONFIG_BUSYBOX_CONFIG_RUNSVDIR is not set
-# CONFIG_BUSYBOX_CONFIG_SV is not set
-# CONFIG_BUSYBOX_CONFIG_SVLOGD is not set
-# CONFIG_BUSYBOX_CONFIG_CHPST is not set
-# CONFIG_BUSYBOX_CONFIG_SETUIDGID is not set
-# CONFIG_BUSYBOX_CONFIG_ENVUIDGID is not set
-# CONFIG_BUSYBOX_CONFIG_ENVDIR is not set
-# CONFIG_BUSYBOX_CONFIG_SOFTLIMIT is not set
-
-#
-# Shells
-#
-CONFIG_BUSYBOX_CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_SH_IS_NONE is not set
-CONFIG_BUSYBOX_CONFIG_ASH=y
-CONFIG_BUSYBOX_CONFIG_ASH_BASH_COMPAT=y
-CONFIG_BUSYBOX_CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_BUSYBOX_CONFIG_ASH_READ_NCHARS is not set
-CONFIG_BUSYBOX_CONFIG_ASH_READ_TIMEOUT=y
-CONFIG_BUSYBOX_CONFIG_ASH_ALIAS=y
-CONFIG_BUSYBOX_CONFIG_ASH_GETOPTS=y
-CONFIG_BUSYBOX_CONFIG_ASH_BUILTIN_ECHO=y
-CONFIG_BUSYBOX_CONFIG_ASH_BUILTIN_PRINTF=y
-CONFIG_BUSYBOX_CONFIG_ASH_BUILTIN_TEST=y
-CONFIG_BUSYBOX_CONFIG_ASH_CMDCMD=y
-# CONFIG_BUSYBOX_CONFIG_ASH_MAIL is not set
-# CONFIG_BUSYBOX_CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set
-# CONFIG_BUSYBOX_CONFIG_ASH_RANDOM_SUPPORT is not set
-CONFIG_BUSYBOX_CONFIG_ASH_EXPAND_PRMT=y
-# CONFIG_BUSYBOX_CONFIG_LASH is not set
-# CONFIG_BUSYBOX_CONFIG_MSH is not set
-CONFIG_BUSYBOX_CONFIG_SH_MATH_SUPPORT=y
-CONFIG_BUSYBOX_CONFIG_SH_MATH_SUPPORT_64=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_SH_EXTRA_QUIET is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_SH_STANDALONE is not set
-# CONFIG_BUSYBOX_CONFIG_FEATURE_SH_NOFORK is not set
-# CONFIG_BUSYBOX_CONFIG_CTTYHACK is not set
-
-#
-# System Logging Utilities
-#
-CONFIG_BUSYBOX_CONFIG_SYSLOGD=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_ROTATE_LOGFILE=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_REMOTE_LOG=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_SYSLOGD_DUP is not set
-CONFIG_BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG=y
-CONFIG_BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
-CONFIG_BUSYBOX_CONFIG_LOGREAD=y
-# CONFIG_BUSYBOX_CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_BUSYBOX_CONFIG_KLOGD=y
-CONFIG_BUSYBOX_CONFIG_LOGGER=y
-# CONFIG_PACKAGE_dash is not set
-# CONFIG_PACKAGE_dnsmasq is not set
-CONFIG_PACKAGE_dropbear=y
-# CONFIG_PACKAGE_ead is not set
-CONFIG_PACKAGE_firewall=y
-CONFIG_PACKAGE_hotplug2=y
-CONFIG_PACKAGE_libc=y
-CONFIG_PACKAGE_libgcc=y
-CONFIG_PACKAGE_libpthread=y
-CONFIG_PACKAGE_librt=y
-# CONFIG_PACKAGE_libstdcpp is not set
-# CONFIG_PACKAGE_mksh is not set
-CONFIG_PACKAGE_mtd=m
-CONFIG_PACKAGE_opkg=y
-# CONFIG_PACKAGE_qos-scripts is not set
-# CONFIG_PACKAGE_swconfig is not set
-CONFIG_PACKAGE_uci=y
-CONFIG_PACKAGE_ucitrigger=y
-# CONFIG_PACKAGE_udev is not set
-CONFIG_PACKAGE_udevtrigger=y
-# CONFIG_PACKAGE_wireless-tools is not set
-
-#
-# Network
-#
-
-#
-# BitTorrent
-#
-# CONFIG_PACKAGE_btpd is not set
-# CONFIG_PACKAGE_cbtt is not set
-# CONFIG_PACKAGE_cbtt-mysql is not set
-# CONFIG_PACKAGE_ctorrent is not set
-# CONFIG_PACKAGE_ctorrent-openssl is not set
-# CONFIG_PACKAGE_rtorrent is not set
-# CONFIG_PACKAGE_transmission-daemon is not set
-
-#
-# Captive Portals
-#
-# CONFIG_PACKAGE_chillispot is not set
-# CONFIG_PACKAGE_coova-chilli is not set
-# CONFIG_PACKAGE_nocatauth is not set
-# CONFIG_PACKAGE_nocatsplash is not set
-# CONFIG_PACKAGE_nodogsplash is not set
-# CONFIG_PACKAGE_pepperspot is not set
-# CONFIG_PACKAGE_wifidog is not set
-
-#
-# DNS
-#
-# CONFIG_PACKAGE_bind-check is not set
-# CONFIG_PACKAGE_bind-client is not set
-# CONFIG_PACKAGE_bind-dig is not set
-# CONFIG_PACKAGE_bind-dnssec is not set
-# CONFIG_PACKAGE_bind-host is not set
-# CONFIG_PACKAGE_bind-libs is not set
-# CONFIG_PACKAGE_bind-rndc is not set
-# CONFIG_PACKAGE_bind-server is not set
-# CONFIG_PACKAGE_bind-tools is not set
-# CONFIG_PACKAGE_djbdns-axfrdns is not set
-# CONFIG_PACKAGE_djbdns-base is not set
-# CONFIG_PACKAGE_djbdns-dnscache is not set
-# CONFIG_PACKAGE_djbdns-rbldns is not set
-# CONFIG_PACKAGE_djbdns-tinydns is not set
-# CONFIG_PACKAGE_djbdns-tools is not set
-# CONFIG_PACKAGE_djbdns-walldns is not set
-# CONFIG_PACKAGE_maradns is not set
-
-#
-# FTP
-#
-# CONFIG_PACKAGE_atftp is not set
-# CONFIG_PACKAGE_atftpd is not set
-# CONFIG_PACKAGE_cmdftp is not set
-# CONFIG_PACKAGE_lftp is not set
-# CONFIG_PACKAGE_proftpd is not set
-# CONFIG_PACKAGE_pure-ftpd is not set
-# CONFIG_PACKAGE_vsftpd is not set
-# CONFIG_PACKAGE_wput is not set
-# CONFIG_PACKAGE_yafc is not set
-
-#
-# Filesystem
-#
-# CONFIG_PACKAGE_nfs-kernel-server is not set
-# CONFIG_PACKAGE_nfs-server is not set
-# CONFIG_PACKAGE_owftpd is not set
-# CONFIG_PACKAGE_owhttpd is not set
-# CONFIG_PACKAGE_owserver is not set
-# CONFIG_PACKAGE_unfs3 is not set
-
-#
-# HA
-#
-# CONFIG_PACKAGE_keepalived is not set
-
-#
-# Instant Messaging
-#
-# CONFIG_PACKAGE_bitchx is not set
-# CONFIG_PACKAGE_bitlbee is not set
-# CONFIG_PACKAGE_dircproxy is not set
-# CONFIG_PACKAGE_imspector is not set
-# CONFIG_PACKAGE_irssi is not set
-# CONFIG_PACKAGE_irssi-glib1 is not set
-# CONFIG_PACKAGE_irssi-openssl is not set
-# CONFIG_PACKAGE_miau is not set
-# CONFIG_PACKAGE_psybnc is not set
-# CONFIG_PACKAGE_reaim is not set
-# CONFIG_PACKAGE_tmsnc is not set
-# CONFIG_PACKAGE_weechat is not set
-# CONFIG_PACKAGE_znc is not set
-
-#
-# Monitoring
-#
-# CONFIG_PACKAGE_nagios is not set
-# CONFIG_PACKAGE_nagios-plugins is not set
-
-#
-# NNTP
-#
-# CONFIG_PACKAGE_leafnode is not set
-
-#
-# P2P
-#
-# CONFIG_PACKAGE_amule is not set
-# CONFIG_PACKAGE_mutella is not set
-# CONFIG_PACKAGE_opendchub is not set
-# CONFIG_PACKAGE_uhub is not set
-
-#
-# Proxy Servers
-#
-# CONFIG_PACKAGE_haproxy is not set
-# CONFIG_PACKAGE_polipo is not set
-# CONFIG_PACKAGE_rinetd is not set
-# CONFIG_PACKAGE_tinyproxy is not set
-
-#
-# SSH
-#
-# CONFIG_PACKAGE_autossh is not set
-CONFIG_PACKAGE_openssh-client=m
-CONFIG_PACKAGE_openssh-client-utils=m
-# CONFIG_PACKAGE_openssh-server is not set
-CONFIG_PACKAGE_openssh-sftp-client=m
-CONFIG_PACKAGE_openssh-sftp-server=m
-
-#
-# Time Synchronization
-#
-# CONFIG_PACKAGE_chrony is not set
-# CONFIG_PACKAGE_htpdate is not set
-# CONFIG_PACKAGE_ntp-utils is not set
-CONFIG_PACKAGE_ntpclient=m
-# CONFIG_PACKAGE_ntpd is not set
-# CONFIG_PACKAGE_ntpdate is not set
-# CONFIG_PACKAGE_openntpd is not set
-
-#
-# VPN
-#
-# CONFIG_PACKAGE_frickin is not set
-# CONFIG_PACKAGE_l2tpd is not set
-# CONFIG_PACKAGE_l2tpns is not set
-# CONFIG_PACKAGE_matrixtunnel is not set
-# CONFIG_PACKAGE_n2n is not set
-# CONFIG_PACKAGE_openvpn is not set
-# CONFIG_PACKAGE_pptpd is not set
-# CONFIG_PACKAGE_ssltunnel is not set
-# CONFIG_PACKAGE_tinc is not set
-CONFIG_PACKAGE_uanytun=m
-# CONFIG_PACKAGE_uanytun-nocrypt is not set
-# CONFIG_PACKAGE_uanytun-sslcrypt is not set
-# CONFIG_PACKAGE_vpnc is not set
-# CONFIG_PACKAGE_vtun is not set
-# CONFIG_PACKAGE_xl2tpd is not set
-
-#
-# Version Control Systems
-#
-# CONFIG_PACKAGE_git is not set
-# CONFIG_PACKAGE_subversion-libs is not set
-
-#
-# Web
-#
-# CONFIG_PACKAGE_apache is not set
-# CONFIG_PACKAGE_axhttpd is not set
-# CONFIG_PACKAGE_elinks is not set
-# CONFIG_PACKAGE_hiawatha is not set
-# CONFIG_PACKAGE_lighttpd is not set
-# CONFIG_PACKAGE_mini-httpd is not set
-# CONFIG_PACKAGE_mini-httpd-htpasswd is not set
-# CONFIG_PACKAGE_mini-httpd-matrixssl is not set
-# CONFIG_PACKAGE_mini-httpd-openssl is not set
-# CONFIG_PACKAGE_spawn-fcgi is not set
-
-#
-# asterisk14 (Complete Open Source PBX), v1.4.x
-#
-# CONFIG_PACKAGE_asterisk14 is not set
-# CONFIG_PACKAGE_asterisk14-app-meetme is not set
-# CONFIG_PACKAGE_asterisk14-chan-alsa is not set
-# CONFIG_PACKAGE_asterisk14-chan-gtalk is not set
-# CONFIG_PACKAGE_asterisk14-chan-h323 is not set
-# CONFIG_PACKAGE_asterisk14-chan-mgcp is not set
-# CONFIG_PACKAGE_asterisk14-chan-mobile is not set
-# CONFIG_PACKAGE_asterisk14-chan-ooh323 is not set
-# CONFIG_PACKAGE_asterisk14-chan-oss is not set
-# CONFIG_PACKAGE_asterisk14-chan-skinny is not set
-# CONFIG_PACKAGE_asterisk14-codec-lpc10 is not set
-# CONFIG_PACKAGE_asterisk14-codec-speex is not set
-# CONFIG_PACKAGE_asterisk14-format-mp3 is not set
-# CONFIG_PACKAGE_asterisk14-mini is not set
-# CONFIG_PACKAGE_asterisk14-mysql is not set
-# CONFIG_PACKAGE_asterisk14-pbx-dundi is not set
-# CONFIG_PACKAGE_asterisk14-pgsql is not set
-# CONFIG_PACKAGE_asterisk14-rawplayer is not set
-# CONFIG_PACKAGE_asterisk14-res-agi is not set
-# CONFIG_PACKAGE_asterisk14-res-crypto is not set
-# CONFIG_PACKAGE_asterisk14-sounds is not set
-# CONFIG_PACKAGE_asterisk14-sqlite is not set
-# CONFIG_PACKAGE_asterisk14-voicemail is not set
-
-#
-# asterisk16 (Complete Open Source PBX), v1.6.x
-#
-# CONFIG_PACKAGE_asterisk16 is not set
-# CONFIG_PACKAGE_asterisk16-app-system is not set
-# CONFIG_PACKAGE_asterisk16-cdr is not set
-# CONFIG_PACKAGE_asterisk16-chan-gtalk is not set
-# CONFIG_PACKAGE_asterisk16-chan-iax2 is not set
-# CONFIG_PACKAGE_asterisk16-chan-local is not set
-# CONFIG_PACKAGE_asterisk16-format-g729 is not set
-# CONFIG_PACKAGE_asterisk16-res-musiconhold is not set
-# CONFIG_PACKAGE_asterisk16-sounds is not set
-# CONFIG_PACKAGE_asterisk16-voicemail is not set
-
-#
-# dial-in/up
-#
-# CONFIG_PACKAGE_rp-l2tpd is not set
-# CONFIG_PACKAGE_rp-pppoe-client is not set
-# CONFIG_PACKAGE_rp-pppoe-relay is not set
-# CONFIG_PACKAGE_rp-pppoe-server is not set
-# CONFIG_PACKAGE_rp-pppoe-sniff is not set
-
-#
-# firewall
-#
-# CONFIG_PACKAGE_amwall is not set
-# CONFIG_PACKAGE_ipkungfu is not set
-# CONFIG_PACKAGE_iptables-snmp is not set
-# CONFIG_PACKAGE_shorewall-lite is not set
-
-#
-# firmware
-#
-# CONFIG_PACKAGE_speedtouch-usb-firmware is not set
-
-#
-# layer7
-#
-
-#
-# multimedia
-#
-# CONFIG_PACKAGE_gmediaserver is not set
-# CONFIG_PACKAGE_icecast is not set
-
-#
-# pmacct (accounting and aggregation tools)
-#
-# CONFIG_PACKAGE_nfacctd is not set
-# CONFIG_PACKAGE_nfacctd-mysql is not set
-# CONFIG_PACKAGE_nfacctd-pgsql is not set
-# CONFIG_PACKAGE_nfacctd-sqlite is not set
-# CONFIG_PACKAGE_pmacct-client is not set
-# CONFIG_PACKAGE_pmacctd is not set
-# CONFIG_PACKAGE_pmacctd-mysql is not set
-# CONFIG_PACKAGE_pmacctd-pgsql is not set
-# CONFIG_PACKAGE_pmacctd-sqlite is not set
-
-#
-# printing
-#
-# CONFIG_PACKAGE_cups is not set
-CONFIG_PACKAGE_p910nd=m
-
-#
-# samba - NetBIOS/SMB implementation
-#
-# CONFIG_PACKAGE_samba-common is not set
-
-#
-# snort (Ligthweight Network Intrusion Detection System)
-#
-# CONFIG_PACKAGE_snort is not set
-# CONFIG_PACKAGE_snort-mysql is not set
-# CONFIG_PACKAGE_snort-pgsql is not set
-
-#
-# snort-wireless (Ligthweight Network Intrusion Detection System)
-#
-# CONFIG_PACKAGE_snort-wireless is not set
-# CONFIG_PACKAGE_snort-wireless-mysql is not set
-# CONFIG_PACKAGE_snort-wireless-pgsql is not set
-
-#
-# wireless
-#
-# CONFIG_PACKAGE_aircrack-ng is not set
-# CONFIG_PACKAGE_aircrack-ptw is not set
-# CONFIG_PACKAGE_kismet-client is not set
-# CONFIG_PACKAGE_kismet-drone is not set
-# CONFIG_PACKAGE_kismet-server is not set
-# CONFIG_PACKAGE_mdk3 is not set
-# CONFIG_PACKAGE_wavemon is not set
-# CONFIG_PACKAGE_airpwn is not set
-# CONFIG_PACKAGE_aodv-uu is not set
-# CONFIG_PACKAGE_aoetools is not set
-# CONFIG_PACKAGE_appweb is not set
-# CONFIG_PACKAGE_aprx is not set
-# CONFIG_PACKAGE_arpd is not set
-# CONFIG_PACKAGE_arptables is not set
-CONFIG_PACKAGE_arpwatch=m
-# CONFIG_PACKAGE_avahi-autoipd is not set
-CONFIG_PACKAGE_avahi-daemon=m
-# CONFIG_PACKAGE_avahi-dnsconfd is not set
-# CONFIG_PACKAGE_babeld is not set
-# CONFIG_PACKAGE_bahamut is not set
-# CONFIG_PACKAGE_batmand is not set
-# CONFIG_PACKAGE_bing is not set
-# CONFIG_PACKAGE_bmon is not set
-# CONFIG_PACKAGE_bmxd is not set
-# CONFIG_PACKAGE_bwm is not set
-# CONFIG_PACKAGE_cdp-tools is not set
-# CONFIG_PACKAGE_click is not set
-# CONFIG_PACKAGE_conntrack-tools is not set
-# CONFIG_PACKAGE_crda is not set
-# CONFIG_PACKAGE_crowdcontrol is not set
-# CONFIG_PACKAGE_curl is not set
-# CONFIG_PACKAGE_cutter is not set
-# CONFIG_PACKAGE_dansguardian is not set
-# CONFIG_PACKAGE_darkstat is not set
-# CONFIG_PACKAGE_ddns-scripts is not set
-# CONFIG_PACKAGE_dhcp-forwarder is not set
-# CONFIG_PACKAGE_dhcp-relay is not set
-# CONFIG_PACKAGE_dhcp-server is not set
-# CONFIG_PACKAGE_dhcpcd is not set
-# CONFIG_PACKAGE_dmapd is not set
-# CONFIG_PACKAGE_dsl-qos-queue is not set
-# CONFIG_PACKAGE_dsniff is not set
-# CONFIG_PACKAGE_ebtables is not set
-# CONFIG_PACKAGE_ebtables-utils is not set
-# CONFIG_PACKAGE_ekg is not set
-CONFIG_PACKAGE_etherwake=m
-CONFIG_PACKAGE_ethtool=m
-# CONFIG_PACKAGE_ettercap is not set
-# CONFIG_PACKAGE_ez-ipupdate is not set
-# CONFIG_PACKAGE_faifa is not set
-# CONFIG_PACKAGE_flow-tools is not set
-# CONFIG_PACKAGE_fping is not set
-# CONFIG_PACKAGE_fprobe is not set
-# CONFIG_PACKAGE_fprobe-ulog is not set
-# CONFIG_PACKAGE_freeradius is not set
-# CONFIG_PACKAGE_freeradius2 is not set
-# CONFIG_PACKAGE_freeswitch is not set
-# CONFIG_PACKAGE_genl is not set
-# CONFIG_PACKAGE_gpsd is not set
-# CONFIG_PACKAGE_horst is not set
-# CONFIG_PACKAGE_hostapd is not set
-# CONFIG_PACKAGE_hostapd-mini is not set
-# CONFIG_PACKAGE_howl-autoipd is not set
-# CONFIG_PACKAGE_howl-mdnsresponder is not set
-# CONFIG_PACKAGE_howl-nifd is not set
-# CONFIG_PACKAGE_howl-utils is not set
-# CONFIG_PACKAGE_hping3 is not set
-# CONFIG_PACKAGE_httping is not set
-# CONFIG_PACKAGE_httptunnel is not set
-# CONFIG_PACKAGE_icmptx is not set
-# CONFIG_PACKAGE_ifenslave is not set
-# CONFIG_PACKAGE_ifstat is not set
-# CONFIG_PACKAGE_iftop is not set
-# CONFIG_PACKAGE_igmpproxy is not set
-# CONFIG_PACKAGE_imsnif is not set
-# CONFIG_PACKAGE_iodine is not set
-# CONFIG_PACKAGE_iodined is not set
-CONFIG_PACKAGE_ip=y
-# CONFIG_PACKAGE_ipcad is not set
-# CONFIG_PACKAGE_iperf is not set
-# CONFIG_PACKAGE_iperf-mt is not set
-# CONFIG_PACKAGE_ipsec-tools is not set
-# CONFIG_PACKAGE_ipset is not set
-CONFIG_PACKAGE_iptables=y
-# CONFIG_PACKAGE_iptables-mod-chaos is not set
-# CONFIG_PACKAGE_iptables-mod-condition is not set
-CONFIG_PACKAGE_iptables-mod-conntrack=y
-# CONFIG_PACKAGE_iptables-mod-conntrack-extra is not set
-# CONFIG_PACKAGE_iptables-mod-delude is not set
-# CONFIG_PACKAGE_iptables-mod-extra is not set
-# CONFIG_PACKAGE_iptables-mod-filter is not set
-# CONFIG_PACKAGE_iptables-mod-imq is not set
-# CONFIG_PACKAGE_iptables-mod-ipopt is not set
-# CONFIG_PACKAGE_iptables-mod-ipp2p is not set
-# CONFIG_PACKAGE_iptables-mod-iprange is not set
-# CONFIG_PACKAGE_iptables-mod-ipsec is not set
-# CONFIG_PACKAGE_iptables-mod-ipset is not set
-CONFIG_PACKAGE_iptables-mod-nat=y
-# CONFIG_PACKAGE_iptables-mod-nat-extra is not set
-# CONFIG_PACKAGE_iptables-mod-tarpit is not set
-# CONFIG_PACKAGE_iptables-mod-ulog is not set
-# CONFIG_PACKAGE_iptables-utils is not set
-# CONFIG_PACKAGE_iptraf is not set
-# CONFIG_PACKAGE_ipupdate is not set
-# CONFIG_PACKAGE_iputils-arping is not set
-# CONFIG_PACKAGE_iputils-clockdiff is not set
-# CONFIG_PACKAGE_iputils-ping is not set
-# CONFIG_PACKAGE_iputils-ping6 is not set
-# CONFIG_PACKAGE_iputils-tftpd is not set
-# CONFIG_PACKAGE_iputils-tracepath is not set
-# CONFIG_PACKAGE_iputils-tracepath6 is not set
-# CONFIG_PACKAGE_iputils-traceroute6 is not set
-# CONFIG_PACKAGE_isakmpd is not set
-# CONFIG_PACKAGE_iw is not set
-CONFIG_PACKAGE_ixp4xx-microcode=y
-# CONFIG_PACKAGE_kamailio is not set
-# CONFIG_PACKAGE_karma is not set
-# CONFIG_PACKAGE_keynote is not set
-# CONFIG_PACKAGE_knock is not set
-# CONFIG_PACKAGE_knockd is not set
-# CONFIG_PACKAGE_lft is not set
-# CONFIG_PACKAGE_linuxigd is not set
-# CONFIG_PACKAGE_lldpd is not set
-# CONFIG_PACKAGE_m-route is not set
-# CONFIG_PACKAGE_mac-to-devinfo is not set
-CONFIG_PACKAGE_mdnsresponder=m
-# CONFIG_PACKAGE_miax is not set
-# CONFIG_PACKAGE_mii-tool is not set
-# CONFIG_PACKAGE_mini-snmpd is not set
-# CONFIG_PACKAGE_miniupnpd is not set
-# CONFIG_PACKAGE_mtr is not set
-# CONFIG_PACKAGE_mvprelay is not set
-# CONFIG_PACKAGE_natpmp is not set
-# CONFIG_PACKAGE_nbd is not set
-# CONFIG_PACKAGE_nbtscan is not set
-# CONFIG_PACKAGE_ndyndns is not set
-# CONFIG_PACKAGE_net-tools is not set
-# CONFIG_PACKAGE_netatalk is not set
-# CONFIG_PACKAGE_netcat is not set
-# CONFIG_PACKAGE_netdiscover is not set
-# CONFIG_PACKAGE_netperf is not set
-# CONFIG_PACKAGE_netpipe is not set
-# CONFIG_PACKAGE_netstat-nat is not set
-# CONFIG_PACKAGE_nginx is not set
-# CONFIG_PACKAGE_ngircd is not set
-# CONFIG_PACKAGE_ngrep is not set
-# CONFIG_PACKAGE_nmap is not set
-# CONFIG_PACKAGE_nrpe is not set
-# CONFIG_PACKAGE_nstx is not set
-# CONFIG_PACKAGE_nstxd is not set
-# CONFIG_PACKAGE_nufw is not set
-# CONFIG_PACKAGE_nufw-modules is not set
-# CONFIG_PACKAGE_nufw-python is not set
-# CONFIG_PACKAGE_nutcpc is not set
-# CONFIG_PACKAGE_nzbget is not set
-# CONFIG_PACKAGE_oidentd is not set
-# CONFIG_PACKAGE_olsrd is not set
-# CONFIG_PACKAGE_openldap-server is not set
-# CONFIG_PACKAGE_opennhrp is not set
-# CONFIG_PACKAGE_openrrcp is not set
-# CONFIG_PACKAGE_openser is not set
-# CONFIG_PACKAGE_opensips is not set
-# CONFIG_PACKAGE_openslp is not set
-# CONFIG_PACKAGE_openswan is not set
-# CONFIG_PACKAGE_oping is not set
-# CONFIG_PACKAGE_parprouted is not set
-# CONFIG_PACKAGE_pcapsipdump is not set
-# CONFIG_PACKAGE_peerguardian is not set
-# CONFIG_PACKAGE_pen is not set
-# CONFIG_PACKAGE_pepsal is not set
-# CONFIG_PACKAGE_portmap is not set
-# CONFIG_PACKAGE_portsentry is not set
-CONFIG_PACKAGE_powersensordaemon=m
-# CONFIG_PACKAGE_ppp is not set
-# CONFIG_PACKAGE_pptp is not set
-# CONFIG_PACKAGE_privoxy is not set
-# CONFIG_PACKAGE_prosody is not set
-# CONFIG_PACKAGE_ptunnel is not set
-# CONFIG_PACKAGE_qolyester is not set
-# CONFIG_PACKAGE_quagga is not set
-# CONFIG_PACKAGE_quagga-unstable is not set
-# CONFIG_PACKAGE_raddump is not set
-# CONFIG_PACKAGE_radiusclient-ng is not set
-# CONFIG_PACKAGE_radsecproxy is not set
-# CONFIG_PACKAGE_rarpd is not set
-# CONFIG_PACKAGE_redir is not set
-# CONFIG_PACKAGE_remotefs-server is not set
-# CONFIG_PACKAGE_rrs is not set
-# CONFIG_PACKAGE_rrs-nossl is not set
-# CONFIG_PACKAGE_rssh is not set
-CONFIG_PACKAGE_rsync=m
-# CONFIG_PACKAGE_rtpproxy is not set
-# CONFIG_PACKAGE_samba3 is not set
-# CONFIG_PACKAGE_scanlogd is not set
-# CONFIG_PACKAGE_scdp is not set
-# CONFIG_PACKAGE_send-nsca is not set
-CONFIG_PACKAGE_ser2net=m
-# CONFIG_PACKAGE_serialoverip is not set
-# CONFIG_PACKAGE_shat is not set
-# CONFIG_PACKAGE_sipp is not set
-# CONFIG_PACKAGE_siproxd is not set
-# CONFIG_PACKAGE_sipsak is not set
-# CONFIG_PACKAGE_slurm is not set
-# CONFIG_PACKAGE_smap is not set
-# CONFIG_PACKAGE_smtptrapd is not set
-# CONFIG_PACKAGE_snmp-utils is not set
-# CONFIG_PACKAGE_snmpd is not set
-# CONFIG_PACKAGE_snmpd-static is not set
-# CONFIG_PACKAGE_socat is not set
-# CONFIG_PACKAGE_softflowd is not set
-# CONFIG_PACKAGE_squid is not set
-# CONFIG_PACKAGE_srelay is not set
-# CONFIG_PACKAGE_sscep is not set
-# CONFIG_PACKAGE_sslh is not set
-# CONFIG_PACKAGE_sslsniff is not set
-# CONFIG_PACKAGE_stun-client is not set
-# CONFIG_PACKAGE_stund is not set
-# CONFIG_PACKAGE_stunnel is not set
-# CONFIG_PACKAGE_synce-dccm is not set
-# CONFIG_PACKAGE_tc is not set
-CONFIG_PACKAGE_tcpdump=m
-# CONFIG_PACKAGE_tcpdump-mini is not set
-# CONFIG_PACKAGE_tcptraceroute is not set
-# CONFIG_PACKAGE_tctool is not set
-# CONFIG_PACKAGE_tftp-hpa is not set
-# CONFIG_PACKAGE_tftpd-hpa is not set
-# CONFIG_PACKAGE_tor is not set
-# CONFIG_PACKAGE_tsocks is not set
-# CONFIG_PACKAGE_ttcp is not set
-# CONFIG_PACKAGE_ucspi-tcp is not set
-# CONFIG_PACKAGE_udp-broadcast-relay is not set
-# CONFIG_PACKAGE_ulogd is not set
-# CONFIG_PACKAGE_umurmur is not set
-# CONFIG_PACKAGE_uob-nomad is not set
-# CONFIG_PACKAGE_updatedd is not set
-CONFIG_PACKAGE_usocket=m
-# CONFIG_PACKAGE_uucp is not set
-# CONFIG_PACKAGE_veth is not set
-# CONFIG_PACKAGE_vgp is not set
-# CONFIG_PACKAGE_vis is not set
-# CONFIG_PACKAGE_vnc-reflector is not set
-# CONFIG_PACKAGE_vncrepeater is not set
-# CONFIG_PACKAGE_vnstat is not set
-# CONFIG_PACKAGE_vrrpd is not set
-# CONFIG_PACKAGE_wccpd is not set
-# CONFIG_PACKAGE_wdiag is not set
-CONFIG_PACKAGE_wget=m
-# CONFIG_PACKAGE_wget-nossl is not set
-# CONFIG_PACKAGE_wiviz is not set
-# CONFIG_PACKAGE_wol is not set
-# CONFIG_PACKAGE_wpa-supplicant is not set
-# CONFIG_PACKAGE_wpa-supplicant-mini is not set
-# CONFIG_PACKAGE_wpad is not set
-# CONFIG_PACKAGE_wpad-mini is not set
-# CONFIG_PACKAGE_wprobe-export is not set
-# CONFIG_PACKAGE_wprobe-util is not set
-# CONFIG_PACKAGE_wshaper is not set
-# CONFIG_PACKAGE_xinetd is not set
-# CONFIG_PACKAGE_xsupplicant is not set
-
-#
-# Libraries
-#
-
-#
-# Filesystem
-#
-CONFIG_PACKAGE_libblkid=y
-# CONFIG_PACKAGE_libext2fs is not set
-# CONFIG_PACKAGE_libnfsidmap is not set
-# CONFIG_PACKAGE_libow is not set
-# CONFIG_PACKAGE_libow-capi is not set
-CONFIG_PACKAGE_libuuid=y
-
-#
-# SSL
-#
-# CONFIG_PACKAGE_libaxtls is not set
-# CONFIG_PACKAGE_libcyassl is not set
-# CONFIG_PACKAGE_libgnutls is not set
-# CONFIG_PACKAGE_libgnutls-extra is not set
-# CONFIG_PACKAGE_libgnutls-openssl is not set
-# CONFIG_PACKAGE_libmatrixssl is not set
-CONFIG_PACKAGE_libopenssl=m
-# CONFIG_OPENSSL_ENGINE is not set
-# CONFIG_PACKAGE_libpolarssl is not set
-
-#
-# database
-#
-# CONFIG_PACKAGE_libpq is not set
-# CONFIG_PACKAGE_libsqlite2 is not set
-# CONFIG_PACKAGE_libsqlite3 is not set
-# CONFIG_PACKAGE_DirectFB is not set
-CONFIG_PACKAGE_alsa-lib=m
-# CONFIG_PACKAGE_argp-standalone is not set
-# CONFIG_PACKAGE_argtable is not set
-# CONFIG_PACKAGE_bluez-libs is not set
-# CONFIG_PACKAGE_boost is not set
-# CONFIG_PACKAGE_boost-regex is not set
-# CONFIG_PACKAGE_boost-serialization is not set
-# CONFIG_PACKAGE_ccid is not set
-CONFIG_PACKAGE_cgilib=m
-# CONFIG_PACKAGE_check is not set
-# CONFIG_PACKAGE_classpath is not set
-# CONFIG_PACKAGE_clearsilver is not set
-# CONFIG_PACKAGE_confuse is not set
-# CONFIG_PACKAGE_fcgi is not set
-# CONFIG_PACKAGE_fftw3 is not set
-# CONFIG_PACKAGE_fribidi is not set
-# CONFIG_PACKAGE_giflib is not set
-# CONFIG_PACKAGE_glib1 is not set
-# CONFIG_PACKAGE_glib2 is not set
-# CONFIG_PACKAGE_glibmm is not set
-# CONFIG_PACKAGE_id3lib is not set
-# CONFIG_PACKAGE_libIDL2 is not set
-# CONFIG_PACKAGE_libaa is not set
-# CONFIG_PACKAGE_libaio is not set
-# CONFIG_PACKAGE_libamsel is not set
-# CONFIG_PACKAGE_libao is not set
-# CONFIG_PACKAGE_libapr is not set
-# CONFIG_PACKAGE_libaprutil is not set
-CONFIG_PACKAGE_libart=m
-CONFIG_PACKAGE_libatomicops=m
-# CONFIG_PACKAGE_libaudiofile is not set
-CONFIG_PACKAGE_libavahi=m
-# CONFIG_PACKAGE_libcares is not set
-# CONFIG_PACKAGE_libcelt is not set
-# CONFIG_PACKAGE_libcharset is not set
-# CONFIG_PACKAGE_libcli is not set
-# CONFIG_PACKAGE_libclinkc is not set
-# CONFIG_PACKAGE_libconfig is not set
-# CONFIG_PACKAGE_libcroco is not set
-# CONFIG_PACKAGE_libcryptoxx is not set
-# CONFIG_PACKAGE_libcurl is not set
-CONFIG_PACKAGE_libdaemon=m
-# CONFIG_PACKAGE_libdb47 is not set
-# CONFIG_PACKAGE_libdbi is not set
-CONFIG_PACKAGE_libdbus=m
-# CONFIG_PACKAGE_libdbus-glib is not set
-# CONFIG_PACKAGE_libdlna is not set
-# CONFIG_PACKAGE_libdnet is not set
-# CONFIG_PACKAGE_libdvbpsi is not set
-# CONFIG_PACKAGE_libdvdread is not set
-# CONFIG_PACKAGE_libelf is not set
-# CONFIG_PACKAGE_libevent is not set
-# CONFIG_PACKAGE_libeventlog is not set
-# CONFIG_PACKAGE_libexif is not set
-CONFIG_PACKAGE_libexpat=m
-# CONFIG_PACKAGE_libexslt is not set
-# CONFIG_PACKAGE_libezxml is not set
-# CONFIG_PACKAGE_libfaad2 is not set
-# CONFIG_PACKAGE_libffi is not set
-# CONFIG_PACKAGE_libffi-sable is not set
-# CONFIG_PACKAGE_libffmpeg is not set
-# CONFIG_PACKAGE_libflac is not set
-CONFIG_PACKAGE_libfreetype=m
-# CONFIG_PACKAGE_libgconf2 is not set
-CONFIG_PACKAGE_libgcrypt=m
-# CONFIG_PACKAGE_libgd is not set
-CONFIG_PACKAGE_libgdbm=m
-# CONFIG_PACKAGE_libgmp is not set
-CONFIG_PACKAGE_libgpg-error=m
-# CONFIG_PACKAGE_libgphoto2 is not set
-# CONFIG_PACKAGE_libgsl is not set
-# CONFIG_PACKAGE_libgsm is not set
-# CONFIG_PACKAGE_libgssapi is not set
-# CONFIG_PACKAGE_libhowl is not set
-CONFIG_PACKAGE_libiconv=m
-CONFIG_PACKAGE_libid3tag=m
-# CONFIG_PACKAGE_libidn is not set
-# CONFIG_PACKAGE_libiksemel is not set
-# CONFIG_PACKAGE_libinklevel is not set
-CONFIG_PACKAGE_libintl=m
-CONFIG_PACKAGE_libiptc=y
-CONFIG_PACKAGE_libiw=m
-CONFIG_PACKAGE_libjpeg=m
-# CONFIG_PACKAGE_libjs is not set
-# CONFIG_PACKAGE_libjson is not set
-CONFIG_PACKAGE_libltdl=m
-CONFIG_PACKAGE_liblua=y
-# CONFIG_PACKAGE_liblzo is not set
-CONFIG_PACKAGE_libmad=m
-# CONFIG_PACKAGE_libmagic is not set
-# CONFIG_PACKAGE_libmcrypt is not set
-# CONFIG_PACKAGE_libmikmod is not set
-# CONFIG_PACKAGE_libmms is not set
-# CONFIG_PACKAGE_libmpcdec is not set
-# CONFIG_PACKAGE_libmpd is not set
-# CONFIG_PACKAGE_libmysqlclient is not set
-CONFIG_PACKAGE_libncurses=m
-# CONFIG_PACKAGE_libneon is not set
-# CONFIG_PACKAGE_libnet0 is not set
-# CONFIG_PACKAGE_libnet1 is not set
-# CONFIG_PACKAGE_libnetfilter-conntrack is not set
-# CONFIG_PACKAGE_libnetfilter-log is not set
-# CONFIG_PACKAGE_libnetfilter-queue is not set
-# CONFIG_PACKAGE_libnetsnmp is not set
-# CONFIG_PACKAGE_libnfc is not set
-# CONFIG_PACKAGE_libnfnetlink is not set
-# CONFIG_PACKAGE_libnids is not set
-# CONFIG_PACKAGE_libnl is not set
-# CONFIG_PACKAGE_libnl-tiny is not set
-# CONFIG_PACKAGE_libnmeap is not set
-# CONFIG_PACKAGE_libogg is not set
-CONFIG_PACKAGE_liboil=m
-# CONFIG_PACKAGE_libol is not set
-# CONFIG_PACKAGE_libopal is not set
-# CONFIG_PACKAGE_libopencdk is not set
-# CONFIG_PACKAGE_libopenh323 is not set
-# CONFIG_PACKAGE_libopenldap is not set
-# CONFIG_PACKAGE_liboping is not set
-# CONFIG_PACKAGE_libosip2 is not set
-# CONFIG_PACKAGE_libpam is not set
-# CONFIG_PACKAGE_libpar2 is not set
-CONFIG_PACKAGE_libpcap=m
-# CONFIG_PCAP_HAS_USB is not set
-# CONFIG_PACKAGE_libpcre is not set
-# CONFIG_PACKAGE_libpcsclite is not set
-# CONFIG_PACKAGE_libpfm is not set
-CONFIG_PACKAGE_libpng=m
-CONFIG_PACKAGE_libpopt=m
-# CONFIG_PACKAGE_libpostproc is not set
-# CONFIG_PACKAGE_libptmalloc3 is not set
-# CONFIG_PACKAGE_libradiusclient-ng is not set
-# CONFIG_PACKAGE_libreadline is not set
-# CONFIG_PACKAGE_librpcsecgss is not set
-CONFIG_PACKAGE_librrd=m
-CONFIG_PACKAGE_librrd1=m
-# CONFIG_PACKAGE_librsync is not set
-# CONFIG_PACKAGE_libruby is not set
-CONFIG_PACKAGE_libsamplerate=m
-# CONFIG_PACKAGE_libsasl2 is not set
-# CONFIG_PACKAGE_libsdl is not set
-# CONFIG_PACKAGE_libsdl-mixer is not set
-# CONFIG_PACKAGE_libsdl-sound is not set
-# CONFIG_PACKAGE_libsensors is not set
-# CONFIG_PACKAGE_libshout is not set
-# CONFIG_PACKAGE_libsigcxx is not set
-CONFIG_PACKAGE_libsndfile=m
-# CONFIG_PACKAGE_libsoup is not set
-CONFIG_PACKAGE_libspeex=m
-# CONFIG_PACKAGE_libspeexdsp is not set
-# CONFIG_PACKAGE_libsynce is not set
-# CONFIG_PACKAGE_libtasn1 is not set
-# CONFIG_PACKAGE_libtheora is not set
-# CONFIG_PACKAGE_libtiff is not set
-# CONFIG_PACKAGE_libtorrent is not set
-# CONFIG_PACKAGE_libtwin is not set
-CONFIG_PACKAGE_libuci=y
-CONFIG_PACKAGE_libuci-lua=y
-# CONFIG_PACKAGE_libupnp is not set
-CONFIG_PACKAGE_libusb=m
-# CONFIG_PACKAGE_libv4l is not set
-# CONFIG_PACKAGE_libvncserver is not set
-# CONFIG_PACKAGE_libvorbis is not set
-# CONFIG_PACKAGE_libvorbisidec is not set
-# CONFIG_PACKAGE_libwrap is not set
-# CONFIG_PACKAGE_libwxbase is not set
-# CONFIG_PACKAGE_libxapian is not set
-# CONFIG_PACKAGE_libxml2 is not set
-# CONFIG_PACKAGE_libxslt is not set
-CONFIG_PACKAGE_libxtables=y
-# CONFIG_PACKAGE_linux-atm is not set
-# CONFIG_PACKAGE_phidget21 is not set
-# CONFIG_PACKAGE_pthsem is not set
-# CONFIG_PACKAGE_ptlib is not set
-# CONFIG_PACKAGE_pwlib is not set
-# CONFIG_PACKAGE_radlib is not set
-# CONFIG_PACKAGE_sane-libs is not set
-# CONFIG_PACKAGE_serdisplib is not set
-# CONFIG_PACKAGE_st2205tool is not set
-# CONFIG_PACKAGE_taglib is not set
-# CONFIG_PACKAGE_taglibc is not set
-# CONFIG_PACKAGE_uclibcxx is not set
-# CONFIG_PACKAGE_ustl is not set
-# CONFIG_PACKAGE_xmlrpc-c is not set
-# CONFIG_PACKAGE_xmpp4r is not set
-# CONFIG_PACKAGE_zaptel-libtonezone is not set
-# CONFIG_PACKAGE_zaptel14-libtonezone is not set
-CONFIG_PACKAGE_zlib=m
-
-#
-# IPv6
-#
-
-#
-# IPv6 attack and analyzing toolset (thc-ipv6)
-#
-# CONFIG_PACKAGE_alive6 is not set
-# CONFIG_PACKAGE_detect-new-ip6 is not set
-# CONFIG_PACKAGE_dos-new-ip6 is not set
-# CONFIG_PACKAGE_fake_advertise6 is not set
-# CONFIG_PACKAGE_fake_mipv6 is not set
-# CONFIG_PACKAGE_fake_mld6 is not set
-# CONFIG_PACKAGE_fake_router6 is not set
-# CONFIG_PACKAGE_parasite6 is not set
-# CONFIG_PACKAGE_redir6 is not set
-# CONFIG_PACKAGE_rsmurf6 is not set
-# CONFIG_PACKAGE_smurf6 is not set
-# CONFIG_PACKAGE_toobig6 is not set
-
-#
-# IPv6 discovery tools
-#
-# CONFIG_PACKAGE_ndisc6 is not set
-# CONFIG_PACKAGE_rdisc6 is not set
-# CONFIG_PACKAGE_tcptraceroute6 is not set
-
-#
-# firewall
-#
-# CONFIG_PACKAGE_shorewall6-lite is not set
-
-#
-# miredo: Teredo (IPv6 tunneling over UDP through NAT)
-#
-# CONFIG_PACKAGE_miredo-client is not set
-# CONFIG_PACKAGE_miredo-server is not set
-# CONFIG_PACKAGE_6scripts is not set
-# CONFIG_PACKAGE_6tunnel is not set
-# CONFIG_PACKAGE_ahcpd is not set
-# CONFIG_PACKAGE_aiccu is not set
-# CONFIG_PACKAGE_dhcp6-client is not set
-# CONFIG_PACKAGE_dhcp6-server is not set
-# CONFIG_PACKAGE_dibbler-client is not set
-# CONFIG_PACKAGE_dibbler-relay is not set
-# CONFIG_PACKAGE_dibbler-server is not set
-# CONFIG_PACKAGE_gw6c is not set
-# CONFIG_PACKAGE_ip6tables is not set
-# CONFIG_PACKAGE_ipv6calc is not set
-# CONFIG_PACKAGE_mrd6 is not set
-# CONFIG_PACKAGE_ptrtd is not set
-# CONFIG_PACKAGE_radvd is not set
-# CONFIG_PACKAGE_send is not set
-# CONFIG_PACKAGE_totd is not set
-# CONFIG_PACKAGE_tspc is not set
-
-#
-# LuCI
-#
-
-#
-# Collections
-#
-CONFIG_PACKAGE_luci-kamikaze=y
-# CONFIG_PACKAGE_luci-light is not set
-
-#
-# Components
-#
-CONFIG_PACKAGE_luci-admin-core=y
-CONFIG_PACKAGE_luci-admin-full=y
-CONFIG_PACKAGE_luci-admin-mini=y
-CONFIG_PACKAGE_luci-admin-rpc=m
-# CONFIG_PACKAGE_luci-app-ddns is not set
-CONFIG_PACKAGE_luci-app-firewall=y
-# CONFIG_PACKAGE_luci-app-hd_idle is not set
-CONFIG_PACKAGE_luci-app-initmgr=m
-CONFIG_PACKAGE_luci-app-livestats=m
-# CONFIG_PACKAGE_luci-app-mmc_over_gpio is not set
-CONFIG_PACKAGE_luci-app-ntpc=m
-# CONFIG_PACKAGE_luci-app-olsr is not set
-# CONFIG_PACKAGE_luci-app-openvpn is not set
-# CONFIG_PACKAGE_luci-app-p2pblock is not set
-CONFIG_PACKAGE_luci-app-p910nd=m
-# CONFIG_PACKAGE_luci-app-polipo is not set
-# CONFIG_PACKAGE_luci-app-qos is not set
-# CONFIG_PACKAGE_luci-app-samba is not set
-CONFIG_PACKAGE_luci-app-statistics=m
-# CONFIG_PACKAGE_luci-app-tinyproxy is not set
-# CONFIG_PACKAGE_luci-app-upnp is not set
-# CONFIG_PACKAGE_luci-app-ushare is not set
-# CONFIG_PACKAGE_luci-app-uvc_streamer is not set
-
-#
-# Freifunk
-#
-# CONFIG_PACKAGE_freifunk-firewall is not set
-# CONFIG_PACKAGE_freifunk-p2pblock is not set
-# CONFIG_PACKAGE_freifunk-watchdog is not set
-# CONFIG_PACKAGE_luci-app-ffwizard-leipzig is not set
-# CONFIG_PACKAGE_luci-app-siitwizard is not set
-# CONFIG_PACKAGE_luci-app-splash is not set
-# CONFIG_PACKAGE_luci-freifunk-community is not set
-# CONFIG_PACKAGE_luci-mod-freifunk is not set
-# CONFIG_PACKAGE_luci-theme-fledermaus is not set
-# CONFIG_PACKAGE_luci-theme-freifunk is not set
-# CONFIG_PACKAGE_luci-theme-freifunk-bno is not set
-# CONFIG_PACKAGE_luci-theme-freifunk-hannover is not set
-# CONFIG_PACKAGE_olsrd-luci is not set
-
-#
-# Libraries
-#
-# CONFIG_PACKAGE_libcyassl-luci is not set
-CONFIG_PACKAGE_luci-cbi=y
-CONFIG_PACKAGE_luci-core=y
-# CONFIG_PACKAGE_luci-core_compile is not set
-# CONFIG_PACKAGE_luci-core_stripped is not set
-CONFIG_PACKAGE_luci-core_source=y
-# CONFIG_PACKAGE_luci-fastindex is not set
-CONFIG_PACKAGE_luci-http=y
-# CONFIG_PACKAGE_luci-httpclient is not set
-CONFIG_PACKAGE_luci-ipkg=y
-CONFIG_PACKAGE_luci-json=m
-CONFIG_PACKAGE_luci-lmo=y
-CONFIG_PACKAGE_luci-luanet=m
-CONFIG_PACKAGE_luci-lucid=y
-CONFIG_PACKAGE_luci-nixio=y
-CONFIG_PACKAGE_luci-nixio_axtls=y
-# CONFIG_PACKAGE_luci-nixio_cyassl is not set
-# CONFIG_PACKAGE_luci-nixio_openssl is not set
-CONFIG_PACKAGE_luci-px5g=y
-CONFIG_PACKAGE_luci-sgi-cgi=y
-CONFIG_PACKAGE_luci-sys=y
-CONFIG_PACKAGE_luci-uci=y
-CONFIG_PACKAGE_luci-uvl=y
-CONFIG_PACKAGE_luci-web=y
-
-#
-# Themes
-#
-CONFIG_PACKAGE_luci-theme-base=y
-CONFIG_PACKAGE_luci-theme-openwrt=y
-# CONFIG_PACKAGE_luci-theme-openwrtlight is not set
-
-#
-# Translations
-#
-# CONFIG_PACKAGE_luci-i18n-catalan is not set
-CONFIG_PACKAGE_luci-i18n-english=y
-# CONFIG_PACKAGE_luci-i18n-french is not set
-# CONFIG_PACKAGE_luci-i18n-german is not set
-# CONFIG_PACKAGE_luci-i18n-greek is not set
-# CONFIG_PACKAGE_luci-i18n-italian is not set
-# CONFIG_PACKAGE_luci-i18n-japanese is not set
-# CONFIG_PACKAGE_luci-i18n-portuguese is not set
-# CONFIG_PACKAGE_luci-i18n-portuguese_brazilian is not set
-# CONFIG_PACKAGE_luci-i18n-russian is not set
-# CONFIG_PACKAGE_luci-i18n-spanish is not set
-
-#
-# Kernel modules
-#
-
-#
-# Block Devices
-#
-# CONFIG_PACKAGE_kmod-aoe is not set
-# CONFIG_PACKAGE_kmod-ata-core is not set
-# CONFIG_PACKAGE_kmod-dm is not set
-# CONFIG_PACKAGE_kmod-ide-core is not set
-# CONFIG_PACKAGE_kmod-loop is not set
-# CONFIG_PACKAGE_kmod-nbd is not set
-CONFIG_PACKAGE_kmod-scsi-core=y
-# CONFIG_PACKAGE_kmod-scsi-generic is not set
-
-#
-# Cryptographic API modules
-#
-# CONFIG_PACKAGE_kmod-crypto-core is not set
-# CONFIG_PACKAGE_kmod-loop-aes is not set
-
-#
-# Filesystems
-#
-# CONFIG_PACKAGE_kmod-fs-autofs4 is not set
-# CONFIG_PACKAGE_kmod-fs-btrfs is not set
-# CONFIG_PACKAGE_kmod-fs-cifs is not set
-# CONFIG_PACKAGE_kmod-fs-exportfs is not set
-CONFIG_PACKAGE_kmod-fs-ext2=y
-CONFIG_PACKAGE_kmod-fs-ext3=y
-CONFIG_PACKAGE_kmod-fs-ext4=m
-# CONFIG_PACKAGE_kmod-fs-hfs is not set
-# CONFIG_PACKAGE_kmod-fs-hfsplus is not set
-# CONFIG_PACKAGE_kmod-fs-isofs is not set
-CONFIG_PACKAGE_kmod-fs-mbcache=y
-# CONFIG_PACKAGE_kmod-fs-minix is not set
-# CONFIG_PACKAGE_kmod-fs-msdos is not set
-# CONFIG_PACKAGE_kmod-fs-nfs is not set
-# CONFIG_PACKAGE_kmod-fs-nfs-common is not set
-# CONFIG_PACKAGE_kmod-fs-nfs-common-v4 is not set
-# CONFIG_PACKAGE_kmod-fs-nfsd is not set
-# CONFIG_PACKAGE_kmod-fs-ntfs is not set
-# CONFIG_PACKAGE_kmod-fs-reiserfs is not set
-# CONFIG_PACKAGE_kmod-fs-udf is not set
-CONFIG_PACKAGE_kmod-fs-vfat=m
-# CONFIG_PACKAGE_kmod-fs-xfs is not set
-# CONFIG_PACKAGE_kmod-fuse is not set
-CONFIG_PACKAGE_kmod-nls-base=y
-# CONFIG_PACKAGE_kmod-nls-cp1250 is not set
-# CONFIG_PACKAGE_kmod-nls-cp1251 is not set
-# CONFIG_PACKAGE_kmod-nls-cp437 is not set
-# CONFIG_PACKAGE_kmod-nls-cp775 is not set
-# CONFIG_PACKAGE_kmod-nls-cp850 is not set
-# CONFIG_PACKAGE_kmod-nls-cp852 is not set
-# CONFIG_PACKAGE_kmod-nls-cp866 is not set
-# CONFIG_PACKAGE_kmod-nls-iso8859-1 is not set
-# CONFIG_PACKAGE_kmod-nls-iso8859-13 is not set
-# CONFIG_PACKAGE_kmod-nls-iso8859-15 is not set
-# CONFIG_PACKAGE_kmod-nls-iso8859-2 is not set
-# CONFIG_PACKAGE_kmod-nls-koi8r is not set
-CONFIG_PACKAGE_kmod-nls-utf8=y
-
-#
-# FireWire support
-#
-# CONFIG_PACKAGE_kmod-ieee1394 is not set
-
-#
-# Hardware Monitoring Support
-#
-# CONFIG_PACKAGE_kmod-hwmon-core is not set
-
-#
-# I2C support
-#
-# CONFIG_PACKAGE_kmod-i2c-core is not set
-# CONFIG_PACKAGE_kmod-i2c-gpio-custom is not set
-
-#
-# Netfilter Extensions
-#
-# CONFIG_PACKAGE_kmod-arptables is not set
-# CONFIG_PACKAGE_kmod-ebtables is not set
-CONFIG_PACKAGE_kmod-ip6tables=m
-CONFIG_PACKAGE_kmod-ipt-core=y
-# CONFIG_PACKAGE_kmod-ipt-chaos is not set
-# CONFIG_PACKAGE_kmod-ipt-compat-xtables is not set
-# CONFIG_PACKAGE_kmod-ipt-condition is not set
-CONFIG_PACKAGE_kmod-ipt-conntrack=y
-CONFIG_PACKAGE_kmod-ipt-conntrack-extra=m
-# CONFIG_PACKAGE_kmod-ipt-delude is not set
-# CONFIG_PACKAGE_kmod-ipt-extra is not set
-# CONFIG_PACKAGE_kmod-ipt-filter is not set
-# CONFIG_PACKAGE_kmod-ipt-imq is not set
-# CONFIG_PACKAGE_kmod-ipt-ipopt is not set
-# CONFIG_PACKAGE_kmod-ipt-ipp2p is not set
-# CONFIG_PACKAGE_kmod-ipt-iprange is not set
-# CONFIG_PACKAGE_kmod-ipt-ipsec is not set
-# CONFIG_PACKAGE_kmod-ipt-ipset is not set
-CONFIG_PACKAGE_kmod-ipt-nat=y
-# CONFIG_PACKAGE_kmod-ipt-nat-extra is not set
-CONFIG_PACKAGE_kmod-ipt-nathelper=y
-# CONFIG_PACKAGE_kmod-ipt-nathelper-extra is not set
-# CONFIG_PACKAGE_kmod-ipt-queue is not set
-# CONFIG_PACKAGE_kmod-ipt-tarpit is not set
-# CONFIG_PACKAGE_kmod-ipt-ulog is not set
-# CONFIG_PACKAGE_kmod-nf-conntrack-netlink is not set
-# CONFIG_PACKAGE_kmod-nfnetlink is not set
-# CONFIG_PACKAGE_kmod-nfnetlink-log is not set
-# CONFIG_PACKAGE_kmod-nfnetlink-queue is not set
-
-#
-# Network Devices
-#
-# CONFIG_PACKAGE_kmod-e1000 is not set
-# CONFIG_PACKAGE_kmod-et131x is not set
-# CONFIG_PACKAGE_kmod-gigaset is not set
-# CONFIG_PACKAGE_kmod-hfcmulti is not set
-# CONFIG_PACKAGE_kmod-libphy is not set
-# CONFIG_PACKAGE_kmod-macvlan is not set
-# CONFIG_PACKAGE_kmod-siit is not set
-# CONFIG_PACKAGE_kmod-tg3 is not set
-# CONFIG_PACKAGE_kmod-via-velocity is not set
-
-#
-# Network Support
-#
-# CONFIG_PACKAGE_kmod-aodv-uu is not set
-# CONFIG_PACKAGE_kmod-appletalk is not set
-# CONFIG_PACKAGE_kmod-atm is not set
-# CONFIG_PACKAGE_kmod-ax25 is not set
-# CONFIG_PACKAGE_kmod-batgat is not set
-# CONFIG_PACKAGE_kmod-batman-adv-kernelland is not set
-# CONFIG_PACKAGE_kmod-bonding is not set
-# CONFIG_PACKAGE_kmod-capi is not set
-# CONFIG_PACKAGE_kmod-gre is not set
-# CONFIG_PACKAGE_kmod-ip6-tunnel is not set
-# CONFIG_PACKAGE_kmod-ipip is not set
-# CONFIG_PACKAGE_kmod-ipsec is not set
-# CONFIG_PACKAGE_kmod-iptunnel4 is not set
-# CONFIG_PACKAGE_kmod-iptunnel6 is not set
-CONFIG_PACKAGE_kmod-ipv6=y
-# CONFIG_PACKAGE_kmod-isdn4linux is not set
-# CONFIG_PACKAGE_kmod-misdn is not set
-# CONFIG_PACKAGE_kmod-mp-alg is not set
-# CONFIG_PACKAGE_kmod-openswan is not set
-# CONFIG_PACKAGE_kmod-pktgen is not set
-# CONFIG_PACKAGE_kmod-ppp is not set
-# CONFIG_PACKAGE_kmod-sched is not set
-# CONFIG_PACKAGE_kmod-sit is not set
-CONFIG_PACKAGE_kmod-tun=m
-# CONFIG_PACKAGE_kmod-wprobe is not set
-
-#
-# OCF Configuration
-#
-
-#
-# Other modules
-#
-# CONFIG_PACKAGE_kmod-avila-wdt is not set
-# CONFIG_PACKAGE_kmod-block2mtd is not set
-# CONFIG_PACKAGE_kmod-bluetooth is not set
-# CONFIG_PACKAGE_kmod-button-hotplug is not set
-# CONFIG_PACKAGE_kmod-compcache is not set
-# CONFIG_PACKAGE_kmod-crc-ccitt is not set
-# CONFIG_PACKAGE_kmod-crc-itu-t is not set
-CONFIG_PACKAGE_kmod-crc16=m
-# CONFIG_PACKAGE_kmod-crc7 is not set
-# CONFIG_PACKAGE_kmod-eeprom-93cx6 is not set
-# CONFIG_PACKAGE_kmod-gpio-dev is not set
-# CONFIG_PACKAGE_kmod-hid is not set
-CONFIG_PACKAGE_kmod-input-core=y
-# CONFIG_PACKAGE_kmod-input-evdev is not set
-# CONFIG_PACKAGE_kmod-input-gpio-buttons is not set
-# CONFIG_PACKAGE_kmod-input-gpio-keys is not set
-# CONFIG_PACKAGE_kmod-input-joydev is not set
-# CONFIG_PACKAGE_kmod-input-polldev is not set
-CONFIG_PACKAGE_kmod-ixp4xx-beeper=y
-# CONFIG_PACKAGE_kmod-leds-gpio is not set
-# CONFIG_PACKAGE_kmod-ledtrig-morse is not set
-# CONFIG_PACKAGE_kmod-ledtrig-netdev is not set
-# CONFIG_PACKAGE_kmod-mmc is not set
-# CONFIG_PACKAGE_kmod-mmc-over-gpio is not set
-# CONFIG_PACKAGE_kmod-pcspkr is not set
-# CONFIG_PACKAGE_kmod-softdog is not set
-# CONFIG_PACKAGE_kmod-ssb is not set
-# CONFIG_PACKAGE_kmod-textsearch is not set
-# CONFIG_PACKAGE_kmod-ucmb is not set
-# CONFIG_PACKAGE_kmod-zaptel14 is not set
-
-#
-# SPI Support
-#
-# CONFIG_PACKAGE_kmod-mmc-spi is not set
-# CONFIG_PACKAGE_kmod-spi-bitbang is not set
-# CONFIG_PACKAGE_kmod-spi-dev is not set
-# CONFIG_PACKAGE_kmod-spi-gpio is not set
-# CONFIG_PACKAGE_kmod-spi-gpio-old is not set
-# CONFIG_PACKAGE_kmod-spi-ks8995 is not set
-
-#
-# Sound Support
-#
-CONFIG_PACKAGE_kmod-sound-core=m
-# CONFIG_PACKAGE_kmod-sound-cs5535audio is not set
-# CONFIG_PACKAGE_kmod-sound-i8x0 is not set
-# CONFIG_PACKAGE_kmod-sound-soc-core is not set
-
-#
-# USB Support
-#
-CONFIG_PACKAGE_kmod-usb-core=y
-# CONFIG_PACKAGE_kmod-usb-acm is not set
-# CONFIG_PACKAGE_kmod-usb-atm is not set
-CONFIG_PACKAGE_kmod-usb-audio=m
-# CONFIG_PACKAGE_kmod-usb-cm109 is not set
-# CONFIG_PACKAGE_kmod-usb-hid is not set
-# CONFIG_PACKAGE_kmod-usb-net is not set
-CONFIG_PACKAGE_kmod-usb-ohci=y
-# CONFIG_PACKAGE_kmod-usb-phidget is not set
-CONFIG_PACKAGE_kmod-usb-printer=m
-CONFIG_PACKAGE_kmod-usb-serial=m
-# CONFIG_PACKAGE_kmod-usb-serial-airprime is not set
-# CONFIG_PACKAGE_kmod-usb-serial-ark3116 is not set
-# CONFIG_PACKAGE_kmod-usb-serial-belkin is not set
-# CONFIG_PACKAGE_kmod-usb-serial-ch341 is not set
-CONFIG_PACKAGE_kmod-usb-serial-cp210x=m
-CONFIG_PACKAGE_kmod-usb-serial-ftdi=m
-# CONFIG_PACKAGE_kmod-usb-serial-keyspan is not set
-# CONFIG_PACKAGE_kmod-usb-serial-mct is not set
-# CONFIG_PACKAGE_kmod-usb-serial-motorola-phone is not set
-# CONFIG_PACKAGE_kmod-usb-serial-option is not set
-CONFIG_PACKAGE_kmod-usb-serial-oti6858=m
-CONFIG_PACKAGE_kmod-usb-serial-pl2303=m
-# CONFIG_PACKAGE_kmod-usb-serial-sierrawireless is not set
-# CONFIG_PACKAGE_kmod-usb-serial-visor is not set
-CONFIG_PACKAGE_kmod-usb-storage=y
-# CONFIG_PACKAGE_kmod-usb-test is not set
-CONFIG_PACKAGE_kmod-usb-uhci=m
-# CONFIG_PACKAGE_kmod-usb-video is not set
-# CONFIG_PACKAGE_kmod-usb-yealink is not set
-CONFIG_PACKAGE_kmod-usb2=y
-
-#
-# Video Support
-#
-CONFIG_PACKAGE_kmod-video-core=m
-# CONFIG_PACKAGE_kmod-video-cpia2 is not set
-CONFIG_PACKAGE_kmod-video-gspca-core=m
-CONFIG_PACKAGE_kmod-video-gspca-conex=m
-CONFIG_PACKAGE_kmod-video-gspca-etoms=m
-CONFIG_PACKAGE_kmod-video-gspca-finepix=m
-CONFIG_PACKAGE_kmod-video-gspca-gl860=m
-CONFIG_PACKAGE_kmod-video-gspca-jeilinj=m
-CONFIG_PACKAGE_kmod-video-gspca-m5602=m
-CONFIG_PACKAGE_kmod-video-gspca-mars=m
-CONFIG_PACKAGE_kmod-video-gspca-mr97310a=m
-CONFIG_PACKAGE_kmod-video-gspca-ov519=m
-CONFIG_PACKAGE_kmod-video-gspca-ov534=m
-CONFIG_PACKAGE_kmod-video-gspca-pac207=m
-CONFIG_PACKAGE_kmod-video-gspca-pac7311=m
-CONFIG_PACKAGE_kmod-video-gspca-sonixb=m
-CONFIG_PACKAGE_kmod-video-gspca-sonixj=m
-CONFIG_PACKAGE_kmod-video-gspca-spca500=m
-CONFIG_PACKAGE_kmod-video-gspca-spca501=m
-CONFIG_PACKAGE_kmod-video-gspca-spca505=m
-CONFIG_PACKAGE_kmod-video-gspca-spca506=m
-CONFIG_PACKAGE_kmod-video-gspca-spca508=m
-CONFIG_PACKAGE_kmod-video-gspca-spca561=m
-CONFIG_PACKAGE_kmod-video-gspca-sq905=m
-CONFIG_PACKAGE_kmod-video-gspca-sq905c=m
-CONFIG_PACKAGE_kmod-video-gspca-stk014=m
-CONFIG_PACKAGE_kmod-video-gspca-stv06xx=m
-CONFIG_PACKAGE_kmod-video-gspca-sunplus=m
-CONFIG_PACKAGE_kmod-video-gspca-t613=m
-CONFIG_PACKAGE_kmod-video-gspca-tv8532=m
-CONFIG_PACKAGE_kmod-video-gspca-vc032x=m
-CONFIG_PACKAGE_kmod-video-gspca-zc3xx=m
-# CONFIG_PACKAGE_kmod-video-konica is not set
-# CONFIG_PACKAGE_kmod-video-ov511 is not set
-# CONFIG_PACKAGE_kmod-video-ovcamchip is not set
-CONFIG_PACKAGE_kmod-video-pwc=m
-# CONFIG_PACKAGE_kmod-video-sn9c102 is not set
-CONFIG_PACKAGE_kmod-video-uvc=m
-
-#
-# W1 support
-#
-# CONFIG_PACKAGE_kmod-w1 is not set
-
-#
-# Wireless Drivers
-#
-# CONFIG_PACKAGE_kmod-acx-mac80211 is not set
-# CONFIG_PACKAGE_kmod-ar9170 is not set
-# CONFIG_PACKAGE_kmod-ath is not set
-# CONFIG_PACKAGE_kmod-ath5k is not set
-# CONFIG_PACKAGE_kmod-ath9k is not set
-# CONFIG_PACKAGE_kmod-b43 is not set
-# CONFIG_PACKAGE_kmod-b43legacy is not set
-# CONFIG_PACKAGE_kmod-carl9170 is not set
-# CONFIG_PACKAGE_kmod-cfg80211 is not set
-# CONFIG_PACKAGE_kmod-hostap is not set
-# CONFIG_PACKAGE_kmod-lib80211 is not set
-# CONFIG_PACKAGE_kmod-libertas is not set
-# CONFIG_PACKAGE_kmod-mac80211 is not set
-# CONFIG_PACKAGE_kmod-mac80211-hwsim is not set
-# CONFIG_PACKAGE_kmod-madwifi is not set
-# CONFIG_PACKAGE_kmod-net-airo is not set
-# CONFIG_PACKAGE_kmod-net-hermes is not set
-# CONFIG_PACKAGE_kmod-net-hermes-pci is not set
-# CONFIG_PACKAGE_kmod-net-hermes-plx is not set
-# CONFIG_PACKAGE_kmod-net-ipw2100 is not set
-# CONFIG_PACKAGE_kmod-net-ipw2200 is not set
-# CONFIG_PACKAGE_kmod-net-libipw is not set
-# CONFIG_PACKAGE_kmod-net-prism54 is not set
-# CONFIG_PACKAGE_kmod-p54-common is not set
-# CONFIG_PACKAGE_kmod-p54-pci is not set
-# CONFIG_PACKAGE_kmod-p54-usb is not set
-# CONFIG_PACKAGE_kmod-rt2400-pci is not set
-# CONFIG_PACKAGE_kmod-rt2500-pci is not set
-# CONFIG_PACKAGE_kmod-rt2500-usb is not set
-# CONFIG_PACKAGE_kmod-rt2800-lib is not set
-# CONFIG_PACKAGE_kmod-rt2800-pci is not set
-# CONFIG_PACKAGE_kmod-rt2800-usb is not set
-# CONFIG_PACKAGE_kmod-rt2x00-lib is not set
-# CONFIG_PACKAGE_kmod-rt2x00-pci is not set
-# CONFIG_PACKAGE_kmod-rt2x00-usb is not set
-# CONFIG_PACKAGE_kmod-rt61-pci is not set
-# CONFIG_PACKAGE_kmod-rt73-usb is not set
-# CONFIG_PACKAGE_kmod-rtl8180 is not set
-# CONFIG_PACKAGE_kmod-rtl8187 is not set
-# CONFIG_PACKAGE_kmod-zd1211rw is not set
-
-#
-# Xen paravirtualized guest support
-#
-
-#
-# Boot Loaders
-#
-CONFIG_PACKAGE_apex=y
-
-#
-# Multimedia
-#
-# CONFIG_PACKAGE_GraphicsMagick is not set
-# CONFIG_PACKAGE_GraphicsMagick-jpeg is not set
-# CONFIG_PACKAGE_ffmpeg is not set
-# CONFIG_PACKAGE_ffserver is not set
-# CONFIG_PACKAGE_ftpd-topfield is not set
-# CONFIG_PACKAGE_gphoto2 is not set
-# CONFIG_PACKAGE_gst-plugins-base-alsa is not set
-# CONFIG_PACKAGE_gst-plugins-base-app is not set
-# CONFIG_PACKAGE_gst-plugins-base-audioconvert is not set
-# CONFIG_PACKAGE_gst-plugins-base-decodebin is not set
-# CONFIG_PACKAGE_gst-plugins-base-gio is not set
-# CONFIG_PACKAGE_gst-plugins-base-libgstapp is not set
-# CONFIG_PACKAGE_gst-plugins-base-libgstaudio is not set
-# CONFIG_PACKAGE_gst-plugins-base-libgstcdda is not set
-# CONFIG_PACKAGE_gst-plugins-base-libgstfft is not set
-# CONFIG_PACKAGE_gst-plugins-base-libgstinterfaces is not set
-# CONFIG_PACKAGE_gst-plugins-base-libgstnetbuffer is not set
-# CONFIG_PACKAGE_gst-plugins-base-libgstpbutils is not set
-# CONFIG_PACKAGE_gst-plugins-base-libgstriff is not set
-# CONFIG_PACKAGE_gst-plugins-base-libgstrtp is not set
-# CONFIG_PACKAGE_gst-plugins-base-libgstrtsp is not set
-# CONFIG_PACKAGE_gst-plugins-base-libgstsdp is not set
-# CONFIG_PACKAGE_gst-plugins-base-libgsttag is not set
-# CONFIG_PACKAGE_gst-plugins-base-libgstvideo is not set
-# CONFIG_PACKAGE_gst-plugins-base-ogg is not set
-# CONFIG_PACKAGE_gst-plugins-base-theora is not set
-# CONFIG_PACKAGE_gst-plugins-base-typefindfunctions is not set
-# CONFIG_PACKAGE_gst-plugins-base-vorbis is not set
-# CONFIG_PACKAGE_gst-plugins-good-id3demux is not set
-# CONFIG_PACKAGE_gst-plugins-ugly-lame is not set
-# CONFIG_PACKAGE_gst-plugins-ugly-mad is not set
-# CONFIG_PACKAGE_gstreamer is not set
-# CONFIG_PACKAGE_gstreamer-libgstcheck is not set
-# CONFIG_PACKAGE_gstreamer-libgstcontroller is not set
-# CONFIG_PACKAGE_gstreamer-libgstdataprotocol is not set
-# CONFIG_PACKAGE_gstreamer-libgstnet is not set
-# CONFIG_PACKAGE_hasciicam is not set
-# CONFIG_PACKAGE_kissdx is not set
-CONFIG_PACKAGE_mjpg-streamer=m
-# CONFIG_PACKAGE_motion is not set
-# CONFIG_PACKAGE_palantir is not set
-# CONFIG_PACKAGE_peercast is not set
-# CONFIG_PACKAGE_puppy is not set
-CONFIG_PACKAGE_spcacat=m
-# CONFIG_PACKAGE_streamripper is not set
-# CONFIG_PACKAGE_ushare is not set
-
-#
-# Administration
-#
-
-#
-# webif
-#
-# CONFIG_PACKAGE_webif is not set
-# CONFIG_PACKAGE_webif-applications is not set
-# CONFIG_PACKAGE_webif-batman is not set
-# CONFIG_PACKAGE_webif-fonheartbeat is not set
-# CONFIG_PACKAGE_webif-freeloader is not set
-# CONFIG_PACKAGE_webif-freeloader-lang-cs is not set
-# CONFIG_PACKAGE_webif-hotspot is not set
-# CONFIG_PACKAGE_webif-iw-lua is not set
-# CONFIG_PACKAGE_webif-iw-lua-coovachilli is not set
-# CONFIG_PACKAGE_webif-iw-lua-freeradius is not set
-# CONFIG_PACKAGE_webif-iw-lua-mesh-hotspot-freeradius is not set
-# CONFIG_PACKAGE_webif-iw-lua-mroute is not set
-# CONFIG_PACKAGE_webif-iw-lua-olsr is not set
-# CONFIG_PACKAGE_webif-lang-ca is not set
-# CONFIG_PACKAGE_webif-lang-cs is not set
-# CONFIG_PACKAGE_webif-lang-da is not set
-# CONFIG_PACKAGE_webif-lang-de is not set
-# CONFIG_PACKAGE_webif-lang-ee is not set
-# CONFIG_PACKAGE_webif-lang-es is not set
-# CONFIG_PACKAGE_webif-lang-fr is not set
-# CONFIG_PACKAGE_webif-lang-hr is not set
-# CONFIG_PACKAGE_webif-lang-hu is not set
-# CONFIG_PACKAGE_webif-lang-it is not set
-# CONFIG_PACKAGE_webif-lang-nl is not set
-# CONFIG_PACKAGE_webif-lang-no is not set
-# CONFIG_PACKAGE_webif-lang-pl is not set
-# CONFIG_PACKAGE_webif-lang-pt is not set
-# CONFIG_PACKAGE_webif-lang-ru is not set
-# CONFIG_PACKAGE_webif-lang-sq is not set
-# CONFIG_PACKAGE_webif-lang-sv is not set
-# CONFIG_PACKAGE_webif-lang-uk is not set
-# CONFIG_PACKAGE_webif-lang-zh is not set
-# CONFIG_PACKAGE_webif-mesh is not set
-# CONFIG_PACKAGE_webif-netsukuku is not set
-# CONFIG_PACKAGE_webif-theme-clubman is not set
-# CONFIG_PACKAGE_webif-theme-sedky1 is not set
-# CONFIG_PACKAGE_webif-theme-xwrt is not set
-# CONFIG_PACKAGE_webif-theme-xwrt-mini is not set
-# CONFIG_PACKAGE_webif-theme-zephyr is not set
-# CONFIG_PACKAGE_webif-vpn is not set
-
-#
-# zabbix
-#
-# CONFIG_PACKAGE_zabbix-agent is not set
-# CONFIG_PACKAGE_zabbix-sender is not set
-# CONFIG_PACKAGE_zabbix-server is not set
-# CONFIG_PACKAGE_gkrellmd is not set
-# CONFIG_PACKAGE_htop is not set
-# CONFIG_PACKAGE_monit is not set
-# CONFIG_PACKAGE_monit-nossl is not set
-# CONFIG_PACKAGE_muninlite is not set
-# CONFIG_PACKAGE_osirisd is not set
-# CONFIG_PACKAGE_sudo is not set
-# CONFIG_PACKAGE_syslog-ng is not set
-# CONFIG_PACKAGE_syslog-ng3 is not set
-
-#
-# Utilities
-#
-
-#
-# Editors
-#
-# CONFIG_PACKAGE_joe is not set
-# CONFIG_PACKAGE_mg is not set
-# CONFIG_PACKAGE_nano is not set
-# CONFIG_PACKAGE_vim is not set
-# CONFIG_PACKAGE_vim-full is not set
-# CONFIG_PACKAGE_vim-help is not set
-# CONFIG_PACKAGE_vim-runtime is not set
-# CONFIG_PACKAGE_zile is not set
-
-#
-# Filesystem
-#
-# CONFIG_PACKAGE_badblocks is not set
-# CONFIG_PACKAGE_blkid is not set
-# CONFIG_PACKAGE_cifsmount is not set
-# CONFIG_PACKAGE_dosfsck is not set
-# CONFIG_PACKAGE_dosfslabel is not set
-# CONFIG_PACKAGE_e2fsprogs is not set
-# CONFIG_PACKAGE_gadgetfs-test-bulk is not set
-# CONFIG_PACKAGE_gadgetfs-test-isoc is not set
-# CONFIG_PACKAGE_mkdosfs is not set
-# CONFIG_PACKAGE_nfs-utils is not set
-# CONFIG_PACKAGE_ntfs-3g is not set
-# CONFIG_PACKAGE_owshell is not set
-# CONFIG_PACKAGE_reiserfsprogs is not set
-# CONFIG_PACKAGE_resize2fs is not set
-# CONFIG_PACKAGE_sysfsutils is not set
-# CONFIG_PACKAGE_tune2fs is not set
-# CONFIG_PACKAGE_uuidgen is not set
-
-#
-# SSL
-#
-# CONFIG_PACKAGE_polarssl-progs is not set
-
-#
-# backup
-#
-# CONFIG_PACKAGE_rdiff-backup is not set
-
-#
-# compression
-#
-# CONFIG_PACKAGE_unzip is not set
-# CONFIG_PACKAGE_zip is not set
-
-#
-# database
-#
-# CONFIG_PACKAGE_pgsql-cli is not set
-# CONFIG_PACKAGE_pgsql-server is not set
-# CONFIG_PACKAGE_sqlite2-cli is not set
-# CONFIG_PACKAGE_sqlite3-cli is not set
-
-#
-# disc
-#
-# CONFIG_PACKAGE_block-extroot is not set
-CONFIG_EXTROOT_SETTLETIME=20
-# CONFIG_PACKAGE_cfdisk is not set
-# CONFIG_PACKAGE_devio is not set
-# CONFIG_PACKAGE_fdisk is not set
-# CONFIG_PACKAGE_hd-idle is not set
-# CONFIG_PACKAGE_hdparm is not set
-# CONFIG_PACKAGE_sdparm is not set
-# CONFIG_PACKAGE_sfdisk is not set
-CONFIG_PACKAGE_swap-utils=m
-
-#
-# filemanager
-#
-# CONFIG_PACKAGE_deco is not set
-# CONFIG_PACKAGE_mc is not set
-
-#
-# terminal
-#
-# CONFIG_PACKAGE_microcom is not set
-# CONFIG_PACKAGE_minicom is not set
-# CONFIG_PACKAGE_picocom is not set
-# CONFIG_PACKAGE_setserial is not set
-# CONFIG_PACKAGE_setterm is not set
-CONFIG_PACKAGE_alsa-utils=m
-# CONFIG_PACKAGE_alsa-utils-tests is not set
-# CONFIG_PACKAGE_anyremote is not set
-# CONFIG_PACKAGE_apcupsd is not set
-# CONFIG_PACKAGE_at is not set
-# CONFIG_PACKAGE_avrdude is not set
-# CONFIG_PACKAGE_avrusbboot is not set
-# CONFIG_PACKAGE_bandwidthd is not set
-# CONFIG_PACKAGE_bash is not set
-# CONFIG_PACKAGE_bash-completion is not set
-# CONFIG_PACKAGE_bc is not set
-# CONFIG_PACKAGE_bemusedlinuxserver is not set
-# CONFIG_PACKAGE_bluez-hcidump is not set
-# CONFIG_PACKAGE_bluez-utils is not set
-# CONFIG_PACKAGE_btrfs-progs is not set
-# CONFIG_PACKAGE_bzip2 is not set
-# CONFIG_PACKAGE_ccrypt is not set
-# CONFIG_PACKAGE_cdparanoia is not set
-# CONFIG_PACKAGE_certtool is not set
-# CONFIG_PACKAGE_cmdpad is not set
-CONFIG_PACKAGE_collectd=m
-# CONFIG_PACKAGE_collectd-mod-apache is not set
-# CONFIG_PACKAGE_collectd-mod-apcups is not set
-# CONFIG_PACKAGE_collectd-mod-ascent is not set
-# CONFIG_PACKAGE_collectd-mod-bind is not set
-# CONFIG_PACKAGE_collectd-mod-conntrack is not set
-# CONFIG_PACKAGE_collectd-mod-contextswitch is not set
-# CONFIG_PACKAGE_collectd-mod-cpu is not set
-# CONFIG_PACKAGE_collectd-mod-csv is not set
-# CONFIG_PACKAGE_collectd-mod-curl is not set
-# CONFIG_PACKAGE_collectd-mod-dbi is not set
-# CONFIG_PACKAGE_collectd-mod-df is not set
-# CONFIG_PACKAGE_collectd-mod-disk is not set
-# CONFIG_PACKAGE_collectd-mod-dns is not set
-# CONFIG_PACKAGE_collectd-mod-email is not set
-# CONFIG_PACKAGE_collectd-mod-exec is not set
-# CONFIG_PACKAGE_collectd-mod-filecount is not set
-# CONFIG_PACKAGE_collectd-mod-fscache is not set
-CONFIG_PACKAGE_collectd-mod-interface=m
-# CONFIG_PACKAGE_collectd-mod-iptables is not set
-# CONFIG_PACKAGE_collectd-mod-irq is not set
-CONFIG_PACKAGE_collectd-mod-load=m
-# CONFIG_PACKAGE_collectd-mod-logfile is not set
-# CONFIG_PACKAGE_collectd-mod-madwifi is not set
-# CONFIG_PACKAGE_collectd-mod-memory is not set
-# CONFIG_PACKAGE_collectd-mod-mysql is not set
-# CONFIG_PACKAGE_collectd-mod-netlink is not set
-# CONFIG_PACKAGE_collectd-mod-network is not set
-# CONFIG_PACKAGE_collectd-mod-nginx is not set
-# CONFIG_PACKAGE_collectd-mod-ntpd is not set
-# CONFIG_PACKAGE_collectd-mod-nut is not set
-# CONFIG_PACKAGE_collectd-mod-olsrd is not set
-# CONFIG_PACKAGE_collectd-mod-onewire is not set
-# CONFIG_PACKAGE_collectd-mod-openvpn is not set
-# CONFIG_PACKAGE_collectd-mod-ping is not set
-# CONFIG_PACKAGE_collectd-mod-postgresql is not set
-# CONFIG_PACKAGE_collectd-mod-powerdns is not set
-# CONFIG_PACKAGE_collectd-mod-processes is not set
-# CONFIG_PACKAGE_collectd-mod-protocols is not set
-CONFIG_PACKAGE_collectd-mod-rrdtool=m
-# CONFIG_PACKAGE_collectd-mod-sensors is not set
-# CONFIG_PACKAGE_collectd-mod-snmp is not set
-# CONFIG_PACKAGE_collectd-mod-syslog is not set
-# CONFIG_PACKAGE_collectd-mod-table is not set
-# CONFIG_PACKAGE_collectd-mod-tail is not set
-# CONFIG_PACKAGE_collectd-mod-tcpconns is not set
-# CONFIG_PACKAGE_collectd-mod-teamspeak2 is not set
-# CONFIG_PACKAGE_collectd-mod-ted is not set
-# CONFIG_PACKAGE_collectd-mod-thermal is not set
-# CONFIG_PACKAGE_collectd-mod-unixsock is not set
-# CONFIG_PACKAGE_collectd-mod-uptime is not set
-# CONFIG_PACKAGE_collectd-mod-users is not set
-# CONFIG_PACKAGE_collectd-mod-vmem is not set
-CONFIG_PACKAGE_collectd-mod-wireless=m
-# CONFIG_PACKAGE_collectd-mod-write_http is not set
-# CONFIG_PACKAGE_coreutils is not set
-# CONFIG_PACKAGE_crypto-tools is not set
-# CONFIG_PACKAGE_daemontools is not set
-CONFIG_PACKAGE_dbus=m
-# CONFIG_PACKAGE_dbus-launch-x is not set
-# CONFIG_PACKAGE_dbus-utils is not set
-# CONFIG_PACKAGE_dfu-util is not set
-# CONFIG_PACKAGE_dialog is not set
-# CONFIG_PACKAGE_digitemp is not set
-# CONFIG_PACKAGE_digitemp-usb is not set
-# CONFIG_PACKAGE_dir300-flash is not set
-CONFIG_PACKAGE_dropbearconvert=m
-# CONFIG_PACKAGE_dt is not set
-# CONFIG_PACKAGE_dtach is not set
-# CONFIG_PACKAGE_empty is not set
-# CONFIG_PACKAGE_event_test is not set
-CONFIG_PACKAGE_fconfig=y
-# CONFIG_PACKAGE_file is not set
-# CONFIG_PACKAGE_firmwarehotplug is not set
-# CONFIG_PACKAGE_flock is not set
-# CONFIG_PACKAGE_fortune-mod is not set
-# CONFIG_PACKAGE_fxload is not set
-# CONFIG_PACKAGE_gconf2 is not set
-# CONFIG_PACKAGE_gdb is not set
-# CONFIG_PACKAGE_gdbserver is not set
-# CONFIG_PACKAGE_gnokii is not set
-# CONFIG_PACKAGE_gnupg is not set
-# CONFIG_PACKAGE_gnutls-utils is not set
-# CONFIG_PACKAGE_gpioctl is not set
-# CONFIG_PACKAGE_gsm-utils is not set
-# CONFIG_PACKAGE_gzip is not set
-# CONFIG_PACKAGE_haserl is not set
-# CONFIG_PACKAGE_heyu is not set
-# CONFIG_PACKAGE_hplip is not set
-# CONFIG_PACKAGE_huaweiaktbbo is not set
-# CONFIG_PACKAGE_hwclock is not set
-# CONFIG_PACKAGE_i2c-tools is not set
-# CONFIG_PACKAGE_iconv is not set
-# CONFIG_PACKAGE_ink is not set
-# CONFIG_PACKAGE_input-utils is not set
-# CONFIG_PACKAGE_io is not set
-# CONFIG_PACKAGE_ipmitool is not set
-# CONFIG_PACKAGE_jpeg-tools is not set
-# CONFIG_PACKAGE_kexec-tools is not set
-CONFIG_KEXEC_TOOLS_TARGET_NAME="armeb"
-# CONFIG_PACKAGE_kmemtrace-user is not set
-# CONFIG_PACKAGE_lcd4linux is not set
-# CONFIG_PACKAGE_ldconfig is not set
-# CONFIG_PACKAGE_ldd is not set
-# CONFIG_PACKAGE_lirc is not set
-# CONFIG_PACKAGE_logrotate is not set
-# CONFIG_PACKAGE_losetup is not set
-# CONFIG_PACKAGE_lrzsz is not set
-CONFIG_PACKAGE_lsof=m
-# CONFIG_PACKAGE_macchanger is not set
-# CONFIG_PACKAGE_mdadm is not set
-# CONFIG_PACKAGE_memtester is not set
-# CONFIG_PACKAGE_mgetty is not set
-# CONFIG_PACKAGE_mount-utils is not set
-# CONFIG_PACKAGE_mountd is not set
-# CONFIG_PACKAGE_mtd-utils is not set
-# CONFIG_PACKAGE_nfc-tools is not set
-# CONFIG_PACKAGE_nprobe is not set
-# CONFIG_PACKAGE_ocf-crypto-headers is not set
-# CONFIG_PACKAGE_openldap-utils is not set
-# CONFIG_PACKAGE_openssl-util is not set
-# CONFIG_PACKAGE_pciutils is not set
-# CONFIG_PACKAGE_pcscd is not set
-# CONFIG_PACKAGE_pipacs is not set
-# CONFIG_PACKAGE_procps is not set
-# CONFIG_PACKAGE_psplash is not set
-# CONFIG_PACKAGE_pv is not set
-# CONFIG_PACKAGE_pwgen is not set
-# CONFIG_PACKAGE_qc-usb-utils is not set
-# CONFIG_PACKAGE_rcs is not set
-# CONFIG_PACKAGE_robocfg is not set
-CONFIG_PACKAGE_rrdcgi=m
-CONFIG_PACKAGE_rrdcgi1=m
-CONFIG_PACKAGE_rrdcollect=m
-# CONFIG_PACKAGE_rrdcollect-example is not set
-CONFIG_PACKAGE_rrdtool=m
-CONFIG_PACKAGE_rrdtool1=m
-# CONFIG_PACKAGE_sane-backends is not set
-# CONFIG_PACKAGE_sane-frontends is not set
-# CONFIG_PACKAGE_schedtool is not set
-# CONFIG_PACKAGE_scponly is not set
-CONFIG_PACKAGE_screen=m
-# CONFIG_PACKAGE_setpwc is not set
-# CONFIG_PACKAGE_sg3-utils is not set
-# CONFIG_PACKAGE_sispmctl is not set
-# CONFIG_PACKAGE_smartmontools is not set
-# CONFIG_PACKAGE_spidev-test is not set
-# CONFIG_PACKAGE_ssldump is not set
-# CONFIG_PACKAGE_strace is not set
-# CONFIG_PACKAGE_stress is not set
-# CONFIG_PACKAGE_sysstat is not set
-# CONFIG_PACKAGE_tar is not set
-# CONFIG_PACKAGE_tcpser is not set
-# CONFIG_PACKAGE_testusb is not set
-# CONFIG_PACKAGE_tiff-utils is not set
-# CONFIG_PACKAGE_tmux is not set
-# CONFIG_PACKAGE_uboot-envtools is not set
-# CONFIG_PACKAGE_ucmb-tools is not set
-# CONFIG_PACKAGE_unrar is not set
-# CONFIG_PACKAGE_usb-modeswitch is not set
-CONFIG_PACKAGE_usbutils=m
-# CONFIG_PACKAGE_wx200d is not set
-# CONFIG_PACKAGE_xsltproc is not set
-# CONFIG_PACKAGE_zaptel14-util is not set
-
-#
-# Extra packages
-#
-# CONFIG_PACKAGE_krb5-apps is not set
-# CONFIG_PACKAGE_krb5-client is not set
-# CONFIG_PACKAGE_krb5-daemons is not set
-# CONFIG_PACKAGE_krb5-libs is not set
-# CONFIG_PACKAGE_krb5-server is not set
-# CONFIG_PACKAGE_libdmapsharing is not set
-# CONFIG_PACKAGE_zoneinfo-africa is not set
-# CONFIG_PACKAGE_zoneinfo-asia is not set
-# CONFIG_PACKAGE_zoneinfo-atlantic is not set
-# CONFIG_PACKAGE_zoneinfo-australia-nz is not set
-# CONFIG_PACKAGE_zoneinfo-core is not set
-# CONFIG_PACKAGE_zoneinfo-europe is not set
-# CONFIG_PACKAGE_zoneinfo-india is not set
-# CONFIG_PACKAGE_zoneinfo-middleeast is not set
-# CONFIG_PACKAGE_zoneinfo-northamerica is not set
-# CONFIG_PACKAGE_zoneinfo-pacific is not set
-# CONFIG_PACKAGE_zoneinfo-poles is not set
-# CONFIG_PACKAGE_zoneinfo-simple is not set
-# CONFIG_PACKAGE_zoneinfo-southamerica is not set
-
-#
-# Sound
-#
-# CONFIG_PACKAGE_empcd is not set
-# CONFIG_PACKAGE_faad2 is not set
-CONFIG_PACKAGE_flite=m
-# CONFIG_PACKAGE_ices is not set
-# CONFIG_PACKAGE_lame is not set
-# CONFIG_PACKAGE_lame-lib is not set
-CONFIG_PACKAGE_madplay=m
-# CONFIG_PACKAGE_mpc is not set
-# CONFIG_PACKAGE_mpd is not set
-# CONFIG_PACKAGE_mpdas is not set
-# CONFIG_PACKAGE_mt-daapd is not set
-CONFIG_PACKAGE_pulseaudio=m
-# CONFIG_PACKAGE_scmpc is not set
-# CONFIG_PACKAGE_shell-fm is not set
-# CONFIG_PACKAGE_sox is not set
-
-#
-# Development
-#
-# CONFIG_PACKAGE_binutils is not set
-# CONFIG_PACKAGE_diffutils is not set
-# CONFIG_PACKAGE_make is not set
-# CONFIG_PACKAGE_objdump is not set
-# CONFIG_PACKAGE_patch is not set
-
-#
-# Emulators
-#
-
-#
-# Languages
-#
-
-#
-# Erlang
-#
-# CONFIG_PACKAGE_erlang is not set
-# CONFIG_PACKAGE_erlang-asn1 is not set
-# CONFIG_PACKAGE_erlang-compiler is not set
-# CONFIG_PACKAGE_erlang-crypto is not set
-# CONFIG_PACKAGE_erlang-hipe is not set
-# CONFIG_PACKAGE_erlang-inets is not set
-# CONFIG_PACKAGE_erlang-mnesia is not set
-# CONFIG_PACKAGE_erlang-runtime-tools is not set
-# CONFIG_PACKAGE_erlang-snmp is not set
-# CONFIG_PACKAGE_erlang-ssh is not set
-# CONFIG_PACKAGE_erlang-ssl is not set
-# CONFIG_PACKAGE_erlang-syntax-tools is not set
-
-#
-# Java
-#
-# CONFIG_PACKAGE_jamvm is not set
-# CONFIG_PACKAGE_sablevm is not set
-# CONFIG_PACKAGE_sablevm-mini is not set
-
-#
-# JavaScript
-#
-# CONFIG_PACKAGE_js is not set
-
-#
-# Lua
-#
-# CONFIG_PACKAGE_lsqlite3 is not set
-CONFIG_PACKAGE_lua=y
-# CONFIG_PACKAGE_lua-examples is not set
-# CONFIG_PACKAGE_luac is not set
-CONFIG_PACKAGE_luaexpat=m
-CONFIG_PACKAGE_luafilesystem=m
-# CONFIG_PACKAGE_luaprofiler is not set
-# CONFIG_PACKAGE_luasec is not set
-CONFIG_PACKAGE_luasocket=y
-CONFIG_PACKAGE_luaunixsocket=m
-
-#
-# PHP
-#
-# CONFIG_PACKAGE_php-pear is not set
-# CONFIG_PACKAGE_php4 is not set
-# CONFIG_PACKAGE_php5 is not set
-
-#
-# Perl
-#
-# CONFIG_PACKAGE_microperl is not set
-# CONFIG_PACKAGE_perl is not set
-
-#
-# Python
-#
-# CONFIG_PACKAGE_cython is not set
-# CONFIG_PACKAGE_dbus-python is not set
-# CONFIG_PACKAGE_gst-python is not set
-# CONFIG_PACKAGE_ipython is not set
-# CONFIG_PACKAGE_libyaml is not set
-# CONFIG_PACKAGE_logilab-astng is not set
-# CONFIG_PACKAGE_logilab-common is not set
-# CONFIG_PACKAGE_pycairo is not set
-# CONFIG_PACKAGE_pyserial is not set
-# CONFIG_PACKAGE_python is not set
-# CONFIG_PACKAGE_python-bluez is not set
-# CONFIG_PACKAGE_python-crypto is not set
-# CONFIG_PACKAGE_python-doc is not set
-# CONFIG_PACKAGE_python-egenix-mx is not set
-# CONFIG_PACKAGE_python-event is not set
-# CONFIG_PACKAGE_python-expat is not set
-# CONFIG_PACKAGE_python-gdbm is not set
-# CONFIG_PACKAGE_python-gobject is not set
-# CONFIG_PACKAGE_python-gtk is not set
-# CONFIG_PACKAGE_python-hippo-canvas is not set
-# CONFIG_PACKAGE_python-kid is not set
-# CONFIG_PACKAGE_python-mini is not set
-# CONFIG_PACKAGE_python-mysql is not set
-# CONFIG_PACKAGE_python-openssl is not set
-# CONFIG_PACKAGE_python-pcap is not set
-# CONFIG_PACKAGE_python-psycopg is not set
-# CONFIG_PACKAGE_python-rrd is not set
-# CONFIG_PACKAGE_python-sqlite is not set
-# CONFIG_PACKAGE_python-sqlite3 is not set
-# CONFIG_PACKAGE_python-vte is not set
-# CONFIG_PACKAGE_python-xapian is not set
-# CONFIG_PACKAGE_python-yapsnmp is not set
-# CONFIG_PACKAGE_pyyaml is not set
-# CONFIG_PACKAGE_telepathy-python is not set
-# CONFIG_PACKAGE_twisted is not set
-# CONFIG_PACKAGE_zope-interface is not set
-
-#
-# Ruby
-#
-# CONFIG_PACKAGE_ruby is not set
-# CONFIG_PACKAGE_eggdrop is not set
-# CONFIG_PACKAGE_tcl is not set
-# CONFIG_PACKAGE_urbi is not set
-
-#
-# Mail
-#
-# CONFIG_PACKAGE_dovecot is not set
-# CONFIG_PACKAGE_fetchmail is not set
-# CONFIG_PACKAGE_imapfilter is not set
-# CONFIG_PACKAGE_mini-sendmail is not set
-# CONFIG_PACKAGE_msmtp is not set
-# CONFIG_PACKAGE_msmtp-nossl is not set
-# CONFIG_PACKAGE_mutt is not set
-# CONFIG_PACKAGE_nullmailer is not set
-# CONFIG_PACKAGE_procmail is not set
-# CONFIG_PACKAGE_ssmtp is not set
-# CONFIG_PACKAGE_xmail is not set
-
-#
-# Xorg
-#
-
-#
-# app
-#
-# CONFIG_PACKAGE_dillo is not set
-# CONFIG_PACKAGE_gtkhtml is not set
-# CONFIG_PACKAGE_gtkperf is not set
-# CONFIG_PACKAGE_iceauth is not set
-# CONFIG_PACKAGE_qwo is not set
-# CONFIG_PACKAGE_rxvt is not set
-# CONFIG_PACKAGE_smproxy is not set
-# CONFIG_PACKAGE_x11perf is not set
-# CONFIG_PACKAGE_xauth is not set
-# CONFIG_PACKAGE_xcalc is not set
-# CONFIG_PACKAGE_xclipboard is not set
-# CONFIG_PACKAGE_xdm is not set
-# CONFIG_PACKAGE_xeyes is not set
-# CONFIG_PACKAGE_xine-ui is not set
-# CONFIG_PACKAGE_xinit is not set
-# CONFIG_PACKAGE_xkbcomp is not set
-# CONFIG_PACKAGE_xmessage is not set
-# CONFIG_PACKAGE_xrandr is not set
-# CONFIG_PACKAGE_xrdb is not set
-# CONFIG_PACKAGE_xset is not set
-# CONFIG_PACKAGE_xsetroot is not set
-# CONFIG_PACKAGE_xwd is not set
-
-#
-# data
-#
-# CONFIG_PACKAGE_xbitmaps is not set
-# CONFIG_PACKAGE_xkbdata is not set
-
-#
-# driver
-#
-
-#
-# font
-#
-# CONFIG_PACKAGE_liberation-fonts-ttf is not set
-
-#
-# font-utils
-#
-# CONFIG_PACKAGE_fontconfig is not set
-
-#
-# framework
-#
-# CONFIG_PACKAGE_fltk2 is not set
-# CONFIG_PACKAGE_gtk1 is not set
-# CONFIG_PACKAGE_gtk2 is not set
-# CONFIG_PACKAGE_gtkmm is not set
-
-#
-# libraries
-#
-# CONFIG_PACKAGE_atk is not set
-# CONFIG_PACKAGE_cairo is not set
-# CONFIG_PACKAGE_cairomm is not set
-# CONFIG_PACKAGE_hippo-canvas is not set
-# CONFIG_PACKAGE_imlib2 is not set
-# CONFIG_PACKAGE_libICE is not set
-# CONFIG_PACKAGE_libSM is not set
-# CONFIG_PACKAGE_libX11 is not set
-# CONFIG_PACKAGE_libXau is not set
-# CONFIG_PACKAGE_libXaw is not set
-# CONFIG_PACKAGE_libXcomposite is not set
-# CONFIG_PACKAGE_libXcursor is not set
-# CONFIG_PACKAGE_libXdamage is not set
-# CONFIG_PACKAGE_libXdmcp is not set
-# CONFIG_PACKAGE_libXext is not set
-# CONFIG_PACKAGE_libXfixes is not set
-# CONFIG_PACKAGE_libXfont is not set
-# CONFIG_PACKAGE_libXft is not set
-# CONFIG_PACKAGE_libXi is not set
-# CONFIG_PACKAGE_libXmu is not set
-# CONFIG_PACKAGE_libXmuu is not set
-# CONFIG_PACKAGE_libXpm is not set
-# CONFIG_PACKAGE_libXrandr is not set
-# CONFIG_PACKAGE_libXrender is not set
-# CONFIG_PACKAGE_libXt is not set
-# CONFIG_PACKAGE_libXtst is not set
-# CONFIG_PACKAGE_libXv is not set
-# CONFIG_PACKAGE_libXvMC is not set
-# CONFIG_PACKAGE_libXxf86vm is not set
-# CONFIG_PACKAGE_libast is not set
-# CONFIG_PACKAGE_libdrm is not set
-# CONFIG_PACKAGE_libfontenc is not set
-# CONFIG_PACKAGE_libgl-mesa is not set
-# CONFIG_PACKAGE_libglu-mesa is not set
-# CONFIG_PACKAGE_libmatchbox is not set
-# CONFIG_PACKAGE_libpciaccess is not set
-# CONFIG_PACKAGE_librsvg is not set
-# CONFIG_PACKAGE_libwnck is not set
-# CONFIG_PACKAGE_libxcb is not set
-# CONFIG_PACKAGE_libxcb-composite is not set
-# CONFIG_PACKAGE_libxcb-damage is not set
-# CONFIG_PACKAGE_libxcb-dpms is not set
-# CONFIG_PACKAGE_libxcb-glx is not set
-# CONFIG_PACKAGE_libxcb-randr is not set
-# CONFIG_PACKAGE_libxcb-record is not set
-# CONFIG_PACKAGE_libxcb-render is not set
-# CONFIG_PACKAGE_libxcb-res is not set
-# CONFIG_PACKAGE_libxcb-screensaver is not set
-# CONFIG_PACKAGE_libxcb-shape is not set
-# CONFIG_PACKAGE_libxcb-shm is not set
-# CONFIG_PACKAGE_libxcb-sync is not set
-# CONFIG_PACKAGE_libxcb-xevie is not set
-# CONFIG_PACKAGE_libxcb-xf86dri is not set
-# CONFIG_PACKAGE_libxcb-xfixes is not set
-# CONFIG_PACKAGE_libxcb-xinerama is not set
-# CONFIG_PACKAGE_libxcb-xlib is not set
-# CONFIG_PACKAGE_libxcb-xprint is not set
-# CONFIG_PACKAGE_libxcb-xtest is not set
-# CONFIG_PACKAGE_libxcb-xv is not set
-# CONFIG_PACKAGE_libxcb-xvmc is not set
-# CONFIG_PACKAGE_libxkbfile is not set
-# CONFIG_PACKAGE_orbit2 is not set
-# CONFIG_PACKAGE_pango is not set
-# CONFIG_PACKAGE_pangomm is not set
-# CONFIG_PACKAGE_pixman is not set
-# CONFIG_PACKAGE_tslib is not set
-# CONFIG_PACKAGE_vte is not set
-# CONFIG_PACKAGE_xine-lib is not set
-# CONFIG_PACKAGE_xtrans is not set
-
-#
-# proto
-#
-# CONFIG_PACKAGE_applewmproto is not set
-# CONFIG_PACKAGE_bigreqsproto is not set
-# CONFIG_PACKAGE_calibrateproto is not set
-# CONFIG_PACKAGE_compositeproto is not set
-# CONFIG_PACKAGE_damageproto is not set
-# CONFIG_PACKAGE_dmxproto is not set
-# CONFIG_PACKAGE_dri2proto is not set
-# CONFIG_PACKAGE_fixesproto is not set
-# CONFIG_PACKAGE_fontcacheproto is not set
-# CONFIG_PACKAGE_fontsproto is not set
-# CONFIG_PACKAGE_glproto is not set
-# CONFIG_PACKAGE_inputproto is not set
-# CONFIG_PACKAGE_kbproto is not set
-# CONFIG_PACKAGE_printproto is not set
-# CONFIG_PACKAGE_randrproto is not set
-# CONFIG_PACKAGE_recordproto is not set
-# CONFIG_PACKAGE_renderproto is not set
-# CONFIG_PACKAGE_resourceproto is not set
-# CONFIG_PACKAGE_scrnsaverproto is not set
-# CONFIG_PACKAGE_videoproto is not set
-# CONFIG_PACKAGE_windowswmproto is not set
-# CONFIG_PACKAGE_xcmiscproto is not set
-# CONFIG_PACKAGE_xextproto is not set
-# CONFIG_PACKAGE_xf86bigfontproto is not set
-# CONFIG_PACKAGE_xf86dgaproto is not set
-# CONFIG_PACKAGE_xf86driproto is not set
-# CONFIG_PACKAGE_xf86vidmodeproto is not set
-# CONFIG_PACKAGE_xineramaproto is not set
-# CONFIG_PACKAGE_xproto is not set
-
-#
-# server
-#
-# CONFIG_PACKAGE_xserver-common is not set
-
-#
-# terminals
-#
-# CONFIG_PACKAGE_eterm is not set
-# CONFIG_PACKAGE_xterm is not set
-
-#
-# utils
-#
-# CONFIG_PACKAGE_util-macros is not set
-
-#
-# window manager
-#
-# CONFIG_PACKAGE_fluxbox is not set
-# CONFIG_PACKAGE_matchbox-window-manager is not set
diff --git a/openwrt-packages/luaunixsocket/Makefile b/openwrt-packages/luaunixsocket/Makefile
deleted file mode 100644 (file)
index a746e0e..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#
-# Copyright (C) 2009 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=luaunixsocket
-PKG_VERSION:=2.0.2
-PKG_RELEASE:=1
-
-PKG_SOURCE:=luasocket-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://luaforge.net/frs/download.php/2664
-PKG_MD5SUM:=41445b138deb7bcfe97bff957503da8e
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/luaunixsocket
-  SUBMENU:=Lua
-  SECTION:=lang
-  CATEGORY:=Languages
-  TITLE:=LuaUnixSocket
-  URL:=http://luasocket.luaforge.net/
-  DEPENDS:=+luasocket
-endef
-
-define Package/luaunixsocket/description
-  LuaSocket is the most comprehensive networking support
-  library for the Lua language. It provides easy access to
-  TCP, UDP, DNS, SMTP, FTP, HTTP, MIME and much more.
-endef
-
-define Build/Prepare
-       mkdir -p $(PKG_BUILD_DIR)
-       /bin/tar -C $(PKG_BUILD_DIR) -x --strip-components 1 -f $(DL_DIR)/$(PKG_SOURCE)
-endef
-
-define Build/Configure
-endef
-
-define Build/Compile
-       $(MAKE) -C $(PKG_BUILD_DIR)/ \
-               LIBDIR="$(TARGET_LDFLAGS)" \
-               CC="$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_CPPFLAGS) -std=gnu99" \
-               LD="$(TARGET_CROSS)ld -shared" \
-               all
-       $(MAKE) -C $(PKG_BUILD_DIR)/src/ \
-               LIBDIR="$(TARGET_LDFLAGS)" \
-               CC="$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_CPPFLAGS) -std=gnu99" \
-               LD="$(TARGET_CROSS)ld -shared" \
-               unix.so
-endef
-
-
-define Package/luaunixsocket/install
-       $(INSTALL_DIR) $(1)/usr/lib/lua
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/unix.so $(1)/usr/lib/lua
-       $(INSTALL_DIR) $(1)/usr/lib/lua/socket
-       ln -sf ../unix.so $(1)/usr/lib/lua/socket/unix.so
-endef
-
-$(eval $(call BuildPackage,luaunixsocket))
diff --git a/openwrt-packages/mjpg-streamer/Makefile b/openwrt-packages/mjpg-streamer/Makefile
deleted file mode 100644 (file)
index 63eb6ba..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# Copyright (C) 2006-2009 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=mjpg-streamer
-PKG_REV:=94
-PKG_VERSION:=r$(PKG_REV)
-PKG_RELEASE:=2
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer/mjpg-streamer/
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=$(PKG_REV)
-PKG_SOURCE_PROTO:=svn
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/mjpg-streamer
-  SECTION:=multimedia
-  CATEGORY:=Multimedia
-  TITLE:=MJPG-streamer
-  DEPENDS:=@LINUX_2_6 +libpthread +libjpeg
-  URL:=http://mjpg-streamer.wiki.sourceforge.net/
-endef
-
-define Package/mjpg-streamer/description
-       Streaming application for Linux-UVC compatible webcams
-endef
-
-EXTRA_CFLAGS += $(TARGET_CPPFLAGS) $(TARGET_LDFLAGS)
-
-define Package/mjpg-streamer/install
-       $(INSTALL_DIR) $(1)/usr/bin
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/mjpg_streamer $(1)/usr/bin/
-       $(INSTALL_DIR) $(1)/etc/config
-       $(CP) ./files/mjpg-streamer.config $(1)/etc/config/mjpg-streamer
-       $(INSTALL_DIR) $(1)/etc/init.d
-       $(INSTALL_BIN) ./files/mjpg-streamer.init $(1)/etc/init.d/mjpg-streamer
-       $(INSTALL_DIR) $(1)/usr/lib
-       $(CP) $(foreach input_plugin,file uvc gspcav1,$(PKG_BUILD_DIR)/input_$(input_plugin).so) $(1)/usr/lib
-       $(CP) $(foreach output_plugin,http file autofocus,$(PKG_BUILD_DIR)/output_$(output_plugin).so) $(1)/usr/lib
-       $(INSTALL_DIR) $(1)/etc/hotplug.d/usb
-       $(INSTALL_DATA) ./files/mjpg-streamer.hotplug $(1)/etc/hotplug.d/usb/20-mjpg-streamer
-endef
-
-$(eval $(call BuildPackage,mjpg-streamer))
diff --git a/openwrt-packages/mjpg-streamer/files/mjpg-streamer.config b/openwrt-packages/mjpg-streamer/files/mjpg-streamer.config
deleted file mode 100644 (file)
index 1b1f7d7..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-config mjpg-streamer core
-       option device           "/dev/video0"
-       option resolution       "640x480"
-       option fps              "5"
-       option port             "8080"
-       option enabled          "true"
diff --git a/openwrt-packages/mjpg-streamer/files/mjpg-streamer.hotplug b/openwrt-packages/mjpg-streamer/files/mjpg-streamer.hotplug
deleted file mode 100644 (file)
index c6f29cc..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-case "$ACTION" in
-       add)
-               # start process
-               /etc/init.d/mjpg-streamer start
-               ;;
-       remove)
-               # stop process
-               /etc/init.d/mjpg-streamer stop
-               ;;
-esac
-
diff --git a/openwrt-packages/mjpg-streamer/files/mjpg-streamer.init b/openwrt-packages/mjpg-streamer/files/mjpg-streamer.init
deleted file mode 100644 (file)
index 7b92c89..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh /etc/rc.common
-# Copyright (C) 2009 OpenWrt.org
-START=50
-
-SSD=start-stop-daemon
-NAME=mjpg_streamer
-PIDF=/var/run/$NAME.pid
-PROG=/usr/bin/$NAME
-
-start() {
-       config_load mjpg-streamer
-       config_get device core device
-       config_get resolution core resolution
-       config_get fps core fps
-       config_get port core port
-       config_get_bool enabled core enabled
-       [ $enabled -gt 0 -a -c $device ] && sleep 3 && $SSD -S -m -p $PIDF -q -x $PROG -- --input "input_uvc.so --device $device --fps $fps --resolution $resolution" --output "output_http.so --port $port" &
-}
-
-stop() {
-       $SSD -K -p $PIDF
-}
-
diff --git a/openwrt-packages/mjpg-streamer/patches/001-zc3xx.patch b/openwrt-packages/mjpg-streamer/patches/001-zc3xx.patch
deleted file mode 100644 (file)
index 658363c..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
---- ../spcav4l.c.orig  2010-03-21 22:49:39.884260157 +0100
-+++ ./plugins/input_gspcav1/spcav4l.c  2010-03-22 01:08:39.746758410 +0100
-@@ -45,7 +45,7 @@
-       {BRIDGE_SPCA561,"SPCA561"},
-       {BRIDGE_SPCA536,"SPCA536"},
-       {BRIDGE_SONIX,"SN9C102"},
--      {BRIDGE_ZC3XX,"ZC301-2"},
-+      {BRIDGE_ZC3XX,"zc3xx"},
-       {BRIDGE_CX11646,"CX11646"},
-       {BRIDGE_TV8532,"TV8532"},
-       {BRIDGE_ETOMS,"ET61XX51"},
-@@ -892,7 +892,8 @@
-       break;
-     case VIDEO_PALETTE_YUV420P:
-       {
--      depth = (8 * 3) >> 1;
-+      //depth = (8 * 3) >> 1;
-+      depth = 8;
-       }
-       break;
-     case VIDEO_PALETTE_RGB565:
diff --git a/openwrt-packages/powersensordaemon/Makefile b/openwrt-packages/powersensordaemon/Makefile
deleted file mode 100644 (file)
index f76eb27..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=powersensordaemon
-PKG_VERSION:=0.6
-PKG_RELEASE:=1
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/powersensordaemon
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/powersensordaemon
-  SECTION:=base
-  CATEGORY:=Network
-  TITLE:=RealRaum Power Sensor Daemon
-  URL:=http://www.realraum.at/
-endef
-
-
-define Build/Prepare
-       svn export --force https://svn.spreadspace.org/realraum/powersensordaemon $(PKG_BUILD_DIR)
-endef
-
-
-define Build/Configure
-       cd $(PKG_BUILD_DIR) && ./configure --target=Linux
-endef
-
-define Package/powersensordaemon/install
-       $(INSTALL_DIR) $(1)/usr/sbin
-       $(INSTALL_DIR) $(1)/etc/powersensordaemon
-       # produces error
-       #$(INSTALL_DIR) $(1)/var/run/powersensordaemon
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/powersensordaemon $(1)/usr/sbin/powersensordaemon
-       $(INSTALL_DATA) $(PKG_BUILD_DIR)/sampledev.txt $(1)/etc/powersensordaemon/sampledev.txt
-       $(INSTALL_DATA) $(PKG_BUILD_DIR)/powerids.txt $(1)/etc/powersensordaemon/powerids.txt
-endef
-
-$(eval $(call BuildPackage,powersensordaemon))
diff --git a/openwrt-packages/usocket/Makefile b/openwrt-packages/usocket/Makefile
deleted file mode 100644 (file)
index 1230cb3..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=usocket
-PKG_VERSION:=0.6
-PKG_RELEASE:=1
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/usocket
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/usocket
-  SECTION:=base
-  CATEGORY:=Network
-  TITLE:=UnixSocket/ttys-ConsoleTool to be Called from ssh and SensorSampling
-  URL:=http://www.realraum.at/
-endef
-
-define Build/Prepare
-       svn export --force https://svn.spreadspace.org/realraum/serial_console $(PKG_BUILD_DIR)
-endef
-
-define Build/Configure
-endef
-
-define Package/usocket/install
-       $(INSTALL_DIR) $(1)/usr/bin
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/serial $(1)/usr/bin/
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/usocket $(1)/usr/bin/
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/sample_sensors $(1)/usr/bin/
-endef
-
-$(eval $(call BuildPackage,usocket))
diff --git a/play-sound-status.py b/play-sound-status.py
deleted file mode 100755 (executable)
index a60e0d6..0000000
+++ /dev/null
@@ -1,389 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-import os
-import os.path
-import sys
-#import threading
-import logging
-import logging.handlers
-import time
-import signal
-import subprocess
-import types
-import ConfigParser
-import traceback
-import random
-import zmq
-import zmq.utils.jsonapi as json
-
-logger = logging.getLogger()
-logger.setLevel(logging.INFO)
-lh_syslog = logging.handlers.SysLogHandler(address="/dev/log",facility=logging.handlers.SysLogHandler.LOG_LOCAL2)
-lh_syslog.setFormatter(logging.Formatter('play-sound-status.py: %(levelname)s %(message)s'))
-logger.addHandler(lh_syslog)
-lh_stderr = logging.StreamHandler()
-logger.addHandler(lh_stderr)
-
-class UWSConfig:
-  def __init__(self,configfile=None):
-    self.configfile=configfile
-    self.config_parser=ConfigParser.ConfigParser()
-    #make option variable names case sensitive
-    self.config_parser.optionxform = str
-    self.config_parser.add_section('cmdlog')
-    self.config_parser.set('cmdlog','cmd',"logger %ARG%")
-    self.config_parser.set('cmdlog','timeout',"2.0")
-    self.config_parser.set('cmdlog','delay',"0.0")
-    self.config_parser.set('cmdlog','type',"shellcmd")
-    self.config_parser.add_section('slugplayfile')
-    self.config_parser.set('slugplayfile','remote_host',"root@slug.realraum.at")
-    self.config_parser.set('slugplayfile','remote_shell',"/home/playgst.sh %ARG%")
-    self.config_parser.set('slugplayfile','delay',"0.0")
-    self.config_parser.set('slugplayfile','type',"remotecmd")
-    self.config_parser.add_section('slugplaymp3')
-    self.config_parser.set('slugplaymp3','remote_host',"root@slug.realraum.at")
-    self.config_parser.set('slugplaymp3','remote_shell',"/home/playmp3.sh %ARG%")
-    self.config_parser.set('slugplaymp3','delay',"0.0")
-    self.config_parser.set('slugplaymp3','type',"remotecmd")
-    self.config_parser.add_section('halflife2')
-    self.config_parser.set('halflife2','arg',"/home/half-life-door.mp3")
-    self.config_parser.set('halflife2','type',"slugplaymp3")
-    self.config_parser.set('halflife2','delay',"0.2")
-    self.config_parser.add_section('tardis')
-    self.config_parser.set('tardis','arg',"/home/tardis.mp3")
-    self.config_parser.set('tardis','type',"slugplaymp3")
-    self.config_parser.add_section('sg1aliengreeting')
-    self.config_parser.set('sg1aliengreeting','arg',"/home/sg1aliengreeting.mp3")
-    self.config_parser.set('sg1aliengreeting','type',"slugplaymp3")
-    self.config_parser.add_section('monkeyscream')
-    self.config_parser.set('monkeyscream','arg',"/home/monkeyscream.mp3")
-    self.config_parser.set('monkeyscream','delay',"1.5")
-    self.config_parser.set('monkeyscream','type',"slugplaymp3")
-    self.config_parser.add_section('gladosparty')
-    self.config_parser.set('gladosparty','arg',"/home/glados_party.mp3")
-    self.config_parser.set('gladosparty','type',"slugplaymp3")
-    self.config_parser.add_section('gladosbaked')
-    self.config_parser.set('gladosbaked','arg',"/home/glados_baked.mp3")
-    self.config_parser.set('gladosbaked','type',"slugplaymp3")
-    self.config_parser.add_section('gladoswelcome')
-    self.config_parser.set('gladoswelcome','arg',"/home/glados_welcome.mp3")
-    self.config_parser.set('gladoswelcome','type',"slugplaymp3")
-    self.config_parser.add_section('gladosreplaced')
-    self.config_parser.set('gladosreplaced','arg',"/home/glados_replaced_with_life_fire.mp3")
-    self.config_parser.set('gladosreplaced','type',"slugplaymp3")
-    self.config_parser.add_section('nothing')
-    self.config_parser.set('nothing','type',"nothing")
-    self.config_parser.add_section('randomset1')
-    self.config_parser.set('randomset1','type',"random")
-    self.config_parser.set('randomset1','one_of',"halflife2 gladosparty")
-    self.config_parser.add_section('mapping')
-    self.config_parser.set('mapping','DEFAULT',"halflife2")
-    self.config_parser.set('mapping','PANIC',"monkeyscream")
-    self.config_parser.set('mapping','ERROR',"nothing")
-    self.config_parser.set('mapping','stratos',"tardis")
-    self.config_parser.set('mapping','xro',"gladosreplaced")
-    self.config_parser.set('mapping','equinox',"gladosparty")
-    self.config_parser.set('mapping','Rachel',"nothing")
-    self.config_parser.add_section('debug')
-    self.config_parser.set('debug','enabled',"False")
-    self.config_parser.add_section('broker')
-    self.config_parser.set('broker','uri',"tcp://torwaechter.realraum.at:4244")    
-    self.config_parser.add_section('tracker')
-    self.config_parser.set('tracker','secs_movement_before_presence_to_launch_event','1')
-    self.config_parser.set('tracker','secs_presence_before_movement_to_launch_event','120')
-    self.config_mtime=0
-    if not self.configfile is None:
-      try:
-        cf_handle = open(self.configfile,"r")
-        cf_handle.close()
-      except IOError:
-        self.writeConfigFile()
-      else:
-        self.checkConfigUpdates()
-
-  def checkConfigUpdates(self):
-    global logger
-    if self.configfile is None:
-      return
-    logging.debug("Checking Configfile mtime: "+self.configfile)
-    try:
-      mtime = os.path.getmtime(self.configfile)
-    except (IOError,OSError):
-      return
-    if self.config_mtime < mtime:
-      logging.debug("Reading Configfile")
-      try:
-        self.config_parser.read(self.configfile)
-        self.config_mtime=os.path.getmtime(self.configfile)
-      except (ConfigParser.ParsingError, IOError), pe_ex:
-        logging.error("Error parsing Configfile: "+str(pe_ex))
-      if self.config_parser.get('debug','enabled') == "True":
-        logger.setLevel(logging.DEBUG)
-      else:
-        logger.setLevel(logging.INFO)
-
-  def writeConfigFile(self):
-    if self.configfile is None:
-      return
-    logging.debug("Writing Configfile "+self.configfile)
-    try:
-      cf_handle = open(self.configfile,"w")
-      self.config_parser.write(cf_handle)
-      cf_handle.close()
-      self.config_mtime=os.path.getmtime(self.configfile)
-    except IOError, io_ex:
-      logging.error("Error writing Configfile: "+str(io_ex))
-      self.configfile=None
-
-  def getValue(self, name):
-    underscore_pos=name.find('_')
-    if underscore_pos < 0:
-      raise AttributeError
-    return self.getSectionValue(name[0:underscore_pos], name[underscore_pos+1:])
-
-  def getSectionValue(self, section, name):
-    try:
-      return self.config_parser.get(section,name)
-    except (ConfigParser.NoOptionError, ConfigParser.NoSectionError):
-      return None
-
-  def __getattr__(self, name):
-    underscore_pos=name.find('_')
-    if underscore_pos < 0:
-      raise AttributeError
-    try:
-      return self.config_parser.get(name[0:underscore_pos], name[underscore_pos+1:])
-    except (ConfigParser.NoOptionError, ConfigParser.NoSectionError):
-      raise AttributeError
-
-
-def runRandomAction(action_list,user,args=[]):
-  if not type(action_list) == types.ListType:
-    raise ValueError("runRandomAction: action_list must be a list")
-  return executeAction(random.choice(action_list),user,args)
-
-def runRemoteCommand(remote_host,remote_shell,user,args=[]):
-  global sshp,uwscfg
-  sshp = None
-  try:
-    cmd = "ssh -i /flash/tuer/id_rsa -o PasswordAuthentication=no -o StrictHostKeyChecking=no %RHOST% %RSHELL%"
-    cmd = cmd.replace("%RHOST%",remote_host).replace("%RSHELL%",remote_shell).replace("%ARG%", " ".join(args)).replace("%USER%", user)
-    logging.debug("runRemoteCommand: Executing: "+cmd)
-    sshp = subprocess.Popen(cmd.split(" "), bufsize=1024, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=False)
-    logging.debug("runRemoteCommand: pid %d: running=%d" % (sshp.pid,sshp.poll() is None))
-    if not sshp.poll() is None:
-      logging.error("runRemoteCommand: subprocess %d not started ?, returncode: %d" % (sshp.pid,sshp.returncode))
-      return False
-    return True
-  except Exception, ex:
-    logging.error("runRemoteCommand: "+str(ex))
-    traceback.print_exc(file=sys.stdout)
-    if not sshp is None and sshp.poll() is None:
-      if sys.hexversion >= 0x020600F0:
-        sshp.terminate()
-      else:
-        subprocess.call(["kill",str(sshp.pid)])
-      time.sleep(1.5)
-      if sshp.poll() is None:
-        logging.error("runRemoteCommand: subprocess still alive, sending SIGKILL to pid %d" % (sshp.pid))
-        if sys.hexversion >= 0x020600F0:
-          sshp.kill()
-        else:
-          subprocess.call(["kill","-9",str(sshp.pid)])
-    time.sleep(5)
-    return False
-
-def runShellCommand(cmd,ptimeout,stdinput,user,args=[]):
-  global uwscfg
-  cmd = cmd.replace("%ARG%"," ".join(args)).replace("%USER%", user)
-  if ptimeout is None or float(ptimeout) > 45:
-    ptimeout = 45
-  else:
-    ptimeout = int(float(ptimeout))
-  popenTimeout2(cmd,stdinput,ptimeout=ptimeout)
-
-def executeAction(action_name, user, args=[]):
-  if action_name is None:
-    logging.error("executeAction: action_name is None")
-    return False
-  action_type = uwscfg.getValue(action_name+"_type")
-  if action_type is None:
-    logging.error("executeAction: action %s not found or has no type" % action_name)
-    return False
-  action_delay=uwscfg.getValue(action_name+"_delay")
-  logging.info("executeAction %s of type %s for user %s with delay %s" % (action_name,action_type,user,action_delay))
-  if not action_delay is None:
-    time.sleep(float(action_delay))
-
-  action_arg = uwscfg.getValue(action_name+"_arg")
-  if not action_arg is None:
-    args += [action_arg]
-
-  #"registered" actions
-  if action_type == "remotecmd":
-    return runRemoteCommand(uwscfg.getSectionValue(action_name,"remote_host"), uwscfg.getSectionValue(action_name,"remote_shell"), user=user, args=args)
-  elif action_type == "shellcmd":
-    return runShellCommand(cmd=uwscfg.getSectionValue(action_name,"cmd"), ptimeout=uwscfg.getSectionValue(action_name,"timeout"), stdinput=uwscfg.getSectionValue(action_name,"stdinput"), user=user, args=args)
-  elif action_type == "nothing":
-    return True
-  elif action_type == "random":
-    return runRandomAction(action_list=uwscfg.getSectionValue(action_name,"one_of").split(" "),user=user,args=args)
-  else:
-    return executeAction(action_type,user=user,args=args)
-
-def playThemeOf(user,fallback_default):
-  global uwscfg
-  uwscfg.checkConfigUpdates()
-  if user is None:
-    user = ""
-  config=uwscfg.getValue("mapping_"+str(user))
-  if config is None:
-    config=uwscfg.getValue("mapping_"+str(fallback_default))
-  logging.debug("playThemeOf: action for user %s: %s" % (user,config))
-  executeAction(config,user,[])
-
-def popenTimeout1(cmd, pinput, returncode_ok=[0], ptimeout = 20.0, pcheckint = 0.25):
-  logging.debug("popenTimeout1: starting: " + cmd)
-  try:
-    sppoo = subprocess.Popen(cmd, stdin=subprocess.PIPE, shell=True)
-    sppoo.communicate(input=pinput)
-    timeout_counter=ptimeout
-    while timeout_counter > 0:
-      time.sleep(pcheckint)
-      timeout_counter -= pcheckint
-      if not sppoo.poll() is None:
-        logging.debug("popenTimeout1: subprocess %d finished, returncode: %d" % (sppoo.pid,sppoo.returncode))
-        return (sppoo.returncode in returncode_ok)
-    #timeout reached
-    logging.error("popenTimeout1: subprocess took too long (>%fs), sending SIGTERM to pid %d" % (ptimeout,sppoo.pid))
-    if sys.hexversion >= 0x020600F0:
-      sppoo.terminate()
-    else:
-      subprocess.call(["kill",str(sppoo.pid)])
-    time.sleep(1.0)
-    if sppoo.poll() is None:
-      logging.error("popenTimeout1: subprocess still alive, sending SIGKILL to pid %d" % (sppoo.pid))
-      if sys.hexversion >= 0x020600F0:
-        sppoo.kill()
-      else:
-        subprocess.call(["kill","-9",str(sppoo.pid)])
-    return False
-  except Exception, e:
-    logging.error("popenTimeout1: "+str(e))
-    return False
-
-def popenTimeout2(cmd, pinput, returncode_ok=[0], ptimeout=21):
-  logging.debug("popenTimeout2: starting: " + cmd)
-  try:
-    sppoo = subprocess.Popen(cmd, stdin=subprocess.PIPE, shell=True)
-    if sys.hexversion >= 0x020600F0:
-      old_shandler = signal.signal(signal.SIGALRM,lambda sn,sf: sppoo.kill())
-    else:
-      old_shandler = signal.signal(signal.SIGALRM,lambda sn,sf: os.system("kill -9 %d" % sppoo.pid))
-    signal.alarm(ptimeout) #schedule alarm
-    if not pinput is None:
-      sppoo.communicate(input=pinput)
-    sppoo.wait()
-    signal.alarm(0) #disable pending alarms
-    signal.signal(signal.SIGALRM, old_shandler)
-    logging.debug("popenTimeout2: subprocess %d finished, returncode: %d" % (sppoo.pid,sppoo.returncode))
-    if sppoo.returncode < 0:
-      logging.error("popenTimeout2: subprocess took too long (>%ds) and pid %d was killed" % (ptimeout,sppoo.pid))
-    return (sppoo.returncode in returncode_ok)
-  except Exception, e:
-    logging.error("popenTimeout2: "+str(e))
-    try:
-      signal.signal(signal.SIGALRM, old_shandler)
-    except:
-      pass
-    return False
-
-def decodeR3Message(multipart_msg):
-    try:
-        return (multipart_msg[0], json.loads(multipart_msg[1]))
-    except Exception, e:
-        logging.debug("decodeR3Message:"+str(e))
-        return ("",{})
-
-def exitHandler(signum, frame):
-  logging.info("stopping")
-  try:
-    zmqsub.close()
-    zmqctx.destroy()
-  except:
-    pass
-  sys.exit(0)
-
-#signals proapbly don't work because of readline
-#signal.signal(signal.SIGTERM, exitHandler)
-signal.signal(signal.SIGINT, exitHandler)
-signal.signal(signal.SIGQUIT, exitHandler)
-
-logging.info("Door Status Listener 'PlaySound' started")
-
-if len(sys.argv) > 1:
-  uwscfg = UWSConfig(sys.argv[1])
-else:
-  uwscfg = UWSConfig()
-
-while True:
-  try:
-    #Start zmq connection to publish / forward sensor data
-    zmqctx = zmq.Context()
-    zmqctx.linger = 0
-    zmqsub = zmqctx.socket(zmq.SUB)
-    zmqsub.setsockopt(zmq.SUBSCRIBE, "DoorCommandEvent")
-    zmqsub.setsockopt(zmq.SUBSCRIBE, "PresenceUpdate")
-    zmqsub.setsockopt(zmq.SUBSCRIBE, "BoreDoomButtonPressEvent")
-#    zmqsub.setsockopt(zmq.SUBSCRIBE, "MovementSensorUpdate")
-    zmqsub.setsockopt(zmq.SUBSCRIBE, "DoorAjarUpdate")
-    zmqsub.setsockopt(zmq.SUBSCRIBE, "DoorProblemEvent")
-    zmqsub.connect(uwscfg.broker_uri)
-
-    last_status=None
-    last_user=None
-    unixts_panic_button=None
-    unixts_last_movement=0
-    unixts_last_presence=0
-    while True:
-      data = zmqsub.recv_multipart()
-      (structname, dictdata) = decodeR3Message(data)
-      logging.debug("Got data: " + structname + ":"+ str(dictdata))
-
-      #uwscfg.checkConfigUpdates()
-
-      if structname == "PresenceUpdate" and "Present" in dictdata:
-        unixts_last_presence=time.time()
-        last_status=dictdata["Present"]
-        unixts_panic_button=None
-        if ( time.time() - unixts_last_movement ) <= float(uwscfg.tracker_secs_movement_before_presence_to_launch_event):
-          unixts_last_movement=0
-          if last_status:
-            playThemeOf(user=last_user, fallback_default="DEFAULT")
-        continue
-      elif structname == "DoorCommandEvent":
-        last_user = dictdata["Who"]
-        continue
-      elif structname == "BoreDoomButtonPressEvent":
-        playThemeOf(user="PANIC", fallback_default="nothing")
-        continue
-      elif structname == "MovementSensorUpdate" or structname == "DoorAjarUpdate":
-        unixts_last_movement=time.time()
-        if (time.time() - unixts_last_presence) <= float(uwscfg.tracker_secs_presence_before_movement_to_launch_event):
-          unixts_last_presence=0
-          if last_status:
-            playThemeOf(user=last_user, fallback_default="DEFAULT")
-        continue
-      elif structname == "DoorProblemEvent" and "Severity" in dictdata:
-        playThemeOf(user="ERROR", fallback_default="nothing")
-        continue
-
-  except Exception, ex:
-    logging.error("main: "+str(ex))
-    traceback.print_exc(file=sys.stdout)
-    try:
-      zmqsub.close()
-      zmqctx.destroy()
-    except:
-      pass
-    time.sleep(5)
diff --git a/powersensordaemon/AUTHORS b/powersensordaemon/AUTHORS
deleted file mode 100644 (file)
index 6762c7c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Christian Pointner <equinox@spreadspace.org>
diff --git a/powersensordaemon/COMMANDS.txt b/powersensordaemon/COMMANDS.txt
deleted file mode 100644 (file)
index a0837f5..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-
-== Commands accepted by daemon ==
-
-COMMAND:= power (on|off) $POWERID | listen $EVENT | sample $SAMPLEDEV | log <logtext>
-POWERID:= werkzeug | stereo | labor | schreibtisch | logo | idee
-EVENT:= all | request | sensor | movement | button | none
-SAMPLEDEV:=temp[0-9]+ | photo[0-9]+ | <sensor???>[0-9]+
-
-Notes:
-  * subscription to events is cummulativ
-  * the "sample" command instructs the daemon to immediately get new sensor data of device $SAMPLEDEV
-
-== Replys of daemon ==
-
-CMDREPLY:= OK | Error: $ERRORSTR
-ERRORSTR:=no connection | unknown device | ....
-
-== Listener Data from Daemon ==
-(Temperature Data in Degrees Celsius)
-
-LISTENERDATA:=temp[0-9]+: [0-9]{1,3}\.[0-9]{2} |  photo[0-9]+: [0-9]{1,3} | <sensor???>[0-9]+: <data> | movement | button[0-9]
diff --git a/powersensordaemon/LICENSE b/powersensordaemon/LICENSE
deleted file mode 100644 (file)
index 158cebb..0000000
+++ /dev/null
@@ -1,694 +0,0 @@
-/*
- *  powersensordaemon
- *
- *  Copyright (C) 2009 Christian Pointner <equinox@spreadspace.org>
- *
- *  This file is part of powersensordaemon.
- *
- *  powersensordaemon is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  powersensordaemon is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with powersensordaemon. If not, see <http://www.gnu.org/licenses/>.
- */
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-  The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.  We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors.  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
-  To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  You must make sure that they, too, receive
-or can get the source code.  And you must show them these terms so they
-know their rights.
-
-  Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-  For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-  Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so.  This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software.  The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable.  Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products.  If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
-  Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                       TERMS AND CONDITIONS
-
-  0. Definitions.
-
-  "This License" refers to version 3 of the GNU General Public License.
-
-  "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-  "The Program" refers to any copyrightable work licensed under this
-License.  Each licensee is addressed as "you".  "Licensees" and
-"recipients" may be individuals or organizations.
-
-  To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy.  The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-  A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-  To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy.  Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-  To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies.  Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
-  An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License.  If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-  1. Source Code.
-
-  The "source code" for a work means the preferred form of the work
-for making modifications to it.  "Object code" means any non-source
-form of a work.
-
-  A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-  The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form.  A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-  The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities.  However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work.  For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-  The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-  The Corresponding Source for a work in source code form is that
-same work.
-
-  2. Basic Permissions.
-
-  All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met.  This License explicitly affirms your unlimited
-permission to run the unmodified Program.  The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work.  This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-  You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force.  You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright.  Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
-  Conveying under any other circumstances is permitted solely under
-the conditions stated below.  Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-  No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-  When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
-  4. Conveying Verbatim Copies.
-
-  You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-  You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-  You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-    a) The work must carry prominent notices stating that you modified
-    it, and giving a relevant date.
-
-    b) The work must carry prominent notices stating that it is
-    released under this License and any conditions added under section
-    7.  This requirement modifies the requirement in section 4 to
-    "keep intact all notices".
-
-    c) You must license the entire work, as a whole, under this
-    License to anyone who comes into possession of a copy.  This
-    License will therefore apply, along with any applicable section 7
-    additional terms, to the whole of the work, and all its parts,
-    regardless of how they are packaged.  This License gives no
-    permission to license the work in any other way, but it does not
-    invalidate such permission if you have separately received it.
-
-    d) If the work has interactive user interfaces, each must display
-    Appropriate Legal Notices; however, if the Program has interactive
-    interfaces that do not display Appropriate Legal Notices, your
-    work need not make them do so.
-
-  A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit.  Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-  You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-    a) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by the
-    Corresponding Source fixed on a durable physical medium
-    customarily used for software interchange.
-
-    b) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by a
-    written offer, valid for at least three years and valid for as
-    long as you offer spare parts or customer support for that product
-    model, to give anyone who possesses the object code either (1) a
-    copy of the Corresponding Source for all the software in the
-    product that is covered by this License, on a durable physical
-    medium customarily used for software interchange, for a price no
-    more than your reasonable cost of physically performing this
-    conveying of source, or (2) access to copy the
-    Corresponding Source from a network server at no charge.
-
-    c) Convey individual copies of the object code with a copy of the
-    written offer to provide the Corresponding Source.  This
-    alternative is allowed only occasionally and noncommercially, and
-    only if you received the object code with such an offer, in accord
-    with subsection 6b.
-
-    d) Convey the object code by offering access from a designated
-    place (gratis or for a charge), and offer equivalent access to the
-    Corresponding Source in the same way through the same place at no
-    further charge.  You need not require recipients to copy the
-    Corresponding Source along with the object code.  If the place to
-    copy the object code is a network server, the Corresponding Source
-    may be on a different server (operated by you or a third party)
-    that supports equivalent copying facilities, provided you maintain
-    clear directions next to the object code saying where to find the
-    Corresponding Source.  Regardless of what server hosts the
-    Corresponding Source, you remain obligated to ensure that it is
-    available for as long as needed to satisfy these requirements.
-
-    e) Convey the object code using peer-to-peer transmission, provided
-    you inform other peers where the object code and Corresponding
-    Source of the work are being offered to the general public at no
-    charge under subsection 6d.
-
-  A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-  A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling.  In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage.  For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product.  A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-  "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source.  The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
-  If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information.  But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-  The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed.  Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
-  Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-  7. Additional Terms.
-
-  "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law.  If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-  When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it.  (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.)  You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-  Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
-    a) Disclaiming warranty or limiting liability differently from the
-    terms of sections 15 and 16 of this License; or
-
-    b) Requiring preservation of specified reasonable legal notices or
-    author attributions in that material or in the Appropriate Legal
-    Notices displayed by works containing it; or
-
-    c) Prohibiting misrepresentation of the origin of that material, or
-    requiring that modified versions of such material be marked in
-    reasonable ways as different from the original version; or
-
-    d) Limiting the use for publicity purposes of names of licensors or
-    authors of the material; or
-
-    e) Declining to grant rights under trademark law for use of some
-    trade names, trademarks, or service marks; or
-
-    f) Requiring indemnification of licensors and authors of that
-    material by anyone who conveys the material (or modified versions of
-    it) with contractual assumptions of liability to the recipient, for
-    any liability that these contractual assumptions directly impose on
-    those licensors and authors.
-
-  All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10.  If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term.  If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-  If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-  Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
-  8. Termination.
-
-  You may not propagate or modify a covered work except as expressly
-provided under this License.  Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-  However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-  Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-  Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-  You are not required to accept this License in order to receive or
-run a copy of the Program.  Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance.  However,
-nothing other than this License grants you permission to propagate or
-modify any covered work.  These actions infringe copyright if you do
-not accept this License.  Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-  10. Automatic Licensing of Downstream Recipients.
-
-  Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License.  You are not responsible
-for enforcing compliance by third parties with this License.
-
-  An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations.  If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-  You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License.  For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-  11. Patents.
-
-  A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based.  The
-work thus licensed is called the contributor's "contributor version".
-
-  A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version.  For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-  In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement).  To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-  If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients.  "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-  If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-  A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License.  You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
-  Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-  12. No Surrender of Others' Freedom.
-
-  If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all.  For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
-  13. Use with the GNU Affero General Public License.
-
-  Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work.  The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-  14. Revised Versions of this License.
-
-  The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-  Each version is given a distinguishing version number.  If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation.  If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
-  If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
-  Later license versions may give you additional or different
-permissions.  However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-  15. Disclaimer of Warranty.
-
-  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. Limitation of Liability.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
-  17. Interpretation of Sections 15 and 16.
-
-  If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
-  If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-    <program>  Copyright (C) <year>  <name of author>
-    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
-  You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
-  The GNU General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.  But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/powersensordaemon/Makefile b/powersensordaemon/Makefile
deleted file mode 100644 (file)
index f35b079..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-##
-##  powersensordaemon
-##
-##  Copyright (C) 2009 Christian Pointner <equinox@spreadspace.org>
-##
-##  This file is part of powersensordaemon.
-##
-##  powersensordaemon is free software: you can redistribute it and/or modify
-##  it under the terms of the GNU General Public License as published by
-##  the Free Software Foundation, either version 3 of the License, or
-##  any later version.
-##
-##  powersensordaemon is distributed in the hope that it will be useful,
-##  but WITHOUT ANY WARRANTY; without even the implied warranty of
-##  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-##  GNU General Public License for more details.
-##
-##  You should have received a copy of the GNU General Public License
-##  along with powersensordaemon. If not, see <http://www.gnu.org/licenses/>.
-##
-
-ifneq ($(MAKECMDGOALS),distclean)
-include include.mk
-endif
-
-EXECUTABLE := powersensordaemon
-
-OBJ := log.o \
-       sig_handler.o \
-       options.o \
-       string_list.o \
-       key_value_storage.o \
-       command_queue.o \
-       client_list.o \
-       autosample.o \
-       powersensordaemon.o
-
-
-SRC := $(OBJ:%.o=%.c)
-
-.PHONY: clean distclean
-
-all: $(EXECUTABLE)
-
-%.d: %.c
-       @set -e; rm -f $@;                                       \
-  $(CC) -MM $(CFLAGS) $< > $@.$$$$;                     \
-  sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@;   \
-  rm -f $@.$$$$; echo '(re)building $@'
-
-ifneq ($(MAKECMDGOALS),distclean)
--include $(SRC:%.c=%.d)
-endif
-
-powersensordaemon: $(OBJ)
-       $(CC) $(OBJ) -o $@ $(LDFLAGS)
-
-%.o: %.c
-       $(CC) $(CFLAGS) -c $<
-
-
-distclean: clean
-       find . -name *.o -exec rm -f {} \;
-       find . -name "*.\~*" -exec rm -rf {} \;
-       rm -f include.mk
-
-clean:
-       rm -f *.o
-       rm -f *.d
-       rm -f *.d.*
-       rm -f $(EXECUTABLE)
-
diff --git a/powersensordaemon/autosample.c b/powersensordaemon/autosample.c
deleted file mode 100644 (file)
index 00ab7d8..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- *  powersensordaemon
- *
- *  Copyright (C) 2009 Christian Pointner <equinox@spreadspace.org>
- *
- *  This file is part of powersensordaemon.
- *
- *  powersensordaemon is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  powersensordaemon is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with powersensordaemon. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "datatypes.h"
-
-#include "options.h"
-#include "log.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-
-#include "autosample.h"
-int send_sample_cmd(int fd, const char* device_name)
-{
-  if(!device_name)
-    return -1;
-
-  char* buf;
-  int len = asprintf(&buf, "sample %s\n", device_name);
-  if(len <= 0)
-    return len;
-  int offset = 0;
-  int ret;
-  for(;;) {
-    ret = write(fd, &buf[offset], len - offset);
-    if(ret < 0) {
-      if(errno != EINTR) {
-        free(buf);
-        return ret;
-      }
-
-      ret = 0;
-    }
-
-    offset += ret;
-    if(offset+1 >= len)
-      break;
-  }
-  free(buf);
-
-  if(ret > 0)
-    return 0;
-
-  return ret;
-}
-
-int start_autosample_process(options_t* opt, autosample_process_t* a)
-{
-  int write_pipefd[2];
-  int read_pipefd[2];
-  pid_t cpid;
-  
-  if (pipe(write_pipefd) == -1) {
-    log_printf(ERROR, "autosample_process: pipe() failed: %s", strerror(errno));
-    return -1;
-  }
-
-  if (pipe(read_pipefd) == -1) {
-    log_printf(ERROR, "autosample_process: pipe() failed: %s", strerror(errno));
-    close(write_pipefd[0]);
-    close(write_pipefd[1]);
-    return -1;
-  }
-  
-  cpid = fork();
-  if (cpid == -1) {
-    log_printf(ERROR, "autosample_process: fork() failed: %s", strerror(errno));
-    close(write_pipefd[0]);
-    close(write_pipefd[1]);
-    close(read_pipefd[0]);
-    close(read_pipefd[1]);
-    return -1;
-  }
-  
-  if (cpid == 0) {
-    close(write_pipefd[0]);
-    close(read_pipefd[1]);
-    int ret = autosample_process(opt, write_pipefd[1], read_pipefd[0]);
-    if(!ret)
-      log_printf(NOTICE, "autosample process normal shutdown");
-    else if(ret > 0)
-      log_printf(NOTICE, "autosample shutdown after signal");
-    else
-      log_printf(NOTICE, "autosample shutdown after error");
-    
-    options_clear(opt);
-    log_close();
-    exit(0);
-  }
-
-  close(write_pipefd[1]);
-  close(read_pipefd[0]);
-  a->pid_ = cpid;
-  a->write_fd_ = write_pipefd[0];
-  a->read_fd_ = read_pipefd[1];
-  return 0;
-}
-
-int autosample_process(options_t *opt, int writefd, int readfd)
-{
-  log_printf(NOTICE, "autosample process just started");
-
-  int device_num = key_value_storage_length(&opt->autosampledevs_);
-  if(device_num <= 0) {
-    log_printf(WARNING, "autosample no devices to sample, exiting");
-    return 0;
-  }
-
-  autosample_device_t* devices = malloc(sizeof(autosample_device_t)*device_num);
-  if(!devices) {
-    log_printf(WARNING, "autosample memory error, exiting");
-    return -3;
-  }
-
-  int i = 0;
-  string_list_element_t* k = opt->autosampledevs_.keys_.first_;
-  string_list_element_t* v = opt->autosampledevs_.values_.first_;
-  while(k && v) {
-    devices[i].delay_ = atoi(v->string_);
-    devices[i].cnt_ = 0;
-    devices[i].device_name_ = k->string_;
-    k = k->next_;
-    v = v->next_;
-    i++;
-  }
-
-  int sig_fd = signal_init();
-  if(sig_fd < 0)
-    return -1;
-
-  fd_set readfds, tmpfds;
-  FD_ZERO(&readfds);
-  FD_SET(readfd, &readfds);
-  FD_SET(sig_fd, &readfds);
-  int max_fd = (readfd < sig_fd) ? sig_fd : readfd;
-
-  struct timeval timeout;
-  int return_value = 0;
-  unsigned char sample_enabled = 0;
-  while(!return_value) {
-    memcpy(&tmpfds, &readfds, sizeof(tmpfds));
-    timeout.tv_sec = 1;
-    timeout.tv_usec = 0;
-    int ret = select(max_fd+1, &tmpfds, NULL, NULL, &timeout);
-    if(ret == -1 && errno != EINTR) {
-      log_printf(ERROR, "autosample process select returned with error: %s", strerror(errno));
-      return_value = -3;
-      break;
-    }
-    if(ret == -1)
-      continue;
-    if(!ret) {
-      int i;
-      for(i = 0; i < device_num; i++) {
-        devices[i].cnt_++;
-        if(devices[i].cnt_ >= devices[i].delay_) {
-          if(sample_enabled) {
-            log_printf(DEBUG, "autosample send sample command for '%s'", devices[i].device_name_);
-            send_sample_cmd(writefd, devices[i].device_name_);
-          }
-          devices[i].cnt_ = 0;
-        }
-      }
-    }
-
-    if(FD_ISSET(readfd, &tmpfds)) {
-      int ret;
-      do {
-        ret = read(readfd, &sample_enabled, 1);
-      } while(!ret || (ret == -1 && errno == EINTR));
-      log_printf(NOTICE, "autosample %s", sample_enabled == 0 ? "disabled" : "enabled");
-    }
-
-    if(FD_ISSET(sig_fd, &tmpfds)) {
-      if(signal_handle()) {
-        return_value = 1;
-        break;
-      }
-    } 
-  }
-
-  signal_stop();
-  free(devices);
-  return return_value;
-}
-
-
-
-
-
diff --git a/powersensordaemon/autosample.h b/powersensordaemon/autosample.h
deleted file mode 100644 (file)
index 254585c..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  powersensordaemon
- *
- *  Copyright (C) 2009 Christian Pointner <equinox@spreadspace.org>
- *
- *  This file is part of powersensordaemon.
- *
- *  powersensordaemon is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  powersensordaemon is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with powersensordaemon. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef POWERSENSORDAEMON_autosample_h_INCLUDED
-#define POWERSENSORDAEMON_autosample_h_INCLUDED
-
-#include "options.h"
-
-struct autosample_process_struct {
-  pid_t pid_;
-  int read_fd_;
-  int write_fd_;
-};
-typedef struct autosample_process_struct autosample_process_t;
-
-struct autosample_device_struct {
-  int delay_;
-  int cnt_;
-  char* device_name_;
-};
-typedef struct autosample_device_struct autosample_device_t;
-
-int send_sample_cmd(int fd, const char* device_name);
-int start_autosample_process(options_t* opt, autosample_process_t* a);
-int autosample_process(options_t *opt, int writefd, int readfd);
-
-#endif
diff --git a/powersensordaemon/client_list.c b/powersensordaemon/client_list.c
deleted file mode 100644 (file)
index 5a79cd8..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- *  powersensordaemon
- *
- *  Copyright (C) 2009 Christian Pointner <equinox@spreadspace.org>
- *
- *  This file is part of powersensordaemon.
- *
- *  powersensordaemon is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  powersensordaemon is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with powersensordaemon. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <stdlib.h>
-
-#include "client_list.h"
-#include "datatypes.h"
-
-client_t* client_get_last(client_t* first)
-{
-  if(!first) 
-    return NULL;
-
-  while(first->next) {
-    first = first->next;
-  }
-
-  return first;
-}
-
-int client_add(client_t** first, int fd)
-{
-  if(!first)
-    return -1;
-
-  client_t* new_client = malloc(sizeof(client_t));
-  if(!new_client)
-    return -2;
-
-  new_client->fd = fd;
-  new_client->request_listener = 0;
-  new_client->error_listener = 0;
-  new_client->sensor_listener = 0;
-  new_client->movement_listener = 0;
-  new_client->button_listener = 0;
-  new_client->next = NULL;
-  new_client->buffer.offset = 0;
-
-  if(!(*first)) {
-    *first = new_client;
-    return 0;
-  }
-    
-  client_get_last(*first)->next = new_client;
-
-  return 0;
-}
-
-void client_remove(client_t** first, int fd)
-{
-  if(!first || !(*first)) 
-    return;
-
-  client_t* deletee = *first;
-  if((*first)->fd == fd) {
-    *first = (*first)->next;
-    close(deletee->fd);
-    free(deletee);
-    return;
-  }
-
-  client_t* prev = deletee;
-  deletee = deletee->next;
-  while(deletee) {
-    if(deletee->fd == fd) {
-      prev->next = deletee->next;
-      close(deletee->fd);
-      free(deletee);
-      return;
-    }
-    prev = deletee;
-    deletee = deletee->next;
-  }
-}
-
-client_t* client_find(client_t* first, int fd)
-{
-  if(!first)
-    return NULL;
-  
-  while(first) {
-    if(first->fd == fd)
-      return first;
-
-    first = first->next;
-  }
-  return NULL;
-}
-
-void client_clear(client_t** first)
-{
-  if(!first || !(*first)) 
-    return;
-
-  while(*first) {
-    client_t* deletee = *first;
-    *first = (*first)->next;
-    close(deletee->fd);
-    free(deletee);
-  }
-}
diff --git a/powersensordaemon/client_list.h b/powersensordaemon/client_list.h
deleted file mode 100644 (file)
index 9237688..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *  powersensordaemon
- *
- *  Copyright (C) 2009 Christian Pointner <equinox@spreadspace.org>
- *
- *  This file is part of powersensordaemon.
- *
- *  powersensordaemon is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  powersensordaemon is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with powersensordaemon. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef POWERSENSORDAEMON_client_list_h_INCLUDED
-#define POWERSENSORDAEMON_client_list_h_INCLUDED
-
-#include "datatypes.h"
-
-struct client_struct {
-  int fd;
-  int request_listener;
-  int error_listener;
-  int sensor_listener;
-  int movement_listener;
-  int button_listener;
-  struct client_struct* next;
-  read_buffer_t buffer;
-};
-typedef struct client_struct client_t;
-
-int client_add(client_t** first, int fd);
-void client_remove(client_t** first, int fd);
-client_t* client_find(client_t* first, int fd);
-void client_clear(client_t** first);
-
-#endif
diff --git a/powersensordaemon/command_queue.c b/powersensordaemon/command_queue.c
deleted file mode 100644 (file)
index e1dbba2..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- *  powersensordaemon
- *
- *  Copyright (C) 2009 Christian Pointner <equinox@spreadspace.org>
- *
- *  This file is part of powersensordaemon.
- *
- *  powersensordaemon is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  powersensordaemon is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with powersensordaemon. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "command_queue.h"
-#include "datatypes.h"
-
-cmd_t* cmd_get_last(cmd_t* first)
-{
-  if(!first) 
-    return NULL;
-
-  while(first->next) {
-    first = first->next;
-  }
-
-  return first;
-}
-
-int cmd_push(cmd_t** first, int fd, cmd_id_t cmd, const char* param)
-{
-  if(!first)
-    return -1;
-
-  cmd_t* new_cmd = malloc(sizeof(cmd_t));
-  if(!new_cmd)
-    return -2;
-
-  new_cmd->fd = fd;
-  new_cmd->cmd = cmd;
-  if(param) {
-    new_cmd->param = strdup(param);
-    if(!new_cmd->param) {
-      free(new_cmd);
-      return -2;
-    }
-  }
-  else
-    new_cmd->param = NULL;
-  new_cmd->sent = 0;
-  new_cmd->tv_start.tv_sec = 0;
-  new_cmd->tv_start.tv_usec = 0;
-  new_cmd->next = NULL;
-
-  if(!(*first)) {
-    *first = new_cmd;
-    return 0;
-  }
-    
-  cmd_get_last(*first)->next = new_cmd;
-
-  return 0;
-}
-
-void cmd_sent(cmd_t* cmd)
-{
-  if(!cmd)
-    return;
-
-  cmd->sent = 1;
-  gettimeofday(&cmd->tv_start, NULL);
-}
-
-int cmd_has_expired(cmd_t cmd)
-{
-  struct timeval now;
-  timerclear(&now);
-  gettimeofday(&now, NULL);
-  cmd.tv_start.tv_sec+=2;
-
-  return timercmp(&cmd.tv_start, &now, <);
-}
-
-void cmd_pop(cmd_t** first)
-{
-  if(!first || !(*first)) 
-    return;
-
-  cmd_t* deletee = *first;
-  *first = (*first)->next;
-  if(deletee->param)
-    free(deletee->param);
-  free(deletee);
-}
-
-void cmd_clear(cmd_t** first)
-{
-  if(!first || !(*first)) 
-    return;
-
-  while(*first) {
-    cmd_t* deletee = *first;
-    *first = (*first)->next;
-    if(deletee->param)
-      free(deletee->param);
-    free(deletee);
-  }
-}
diff --git a/powersensordaemon/command_queue.h b/powersensordaemon/command_queue.h
deleted file mode 100644 (file)
index 6ace3ec..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *  powersensordaemon
- *
- *  Copyright (C) 2009 Christian Pointner <equinox@spreadspace.org>
- *
- *  This file is part of powersensordaemon.
- *
- *  powersensordaemon is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  powersensordaemon is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with powersensordaemon. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef POWERSENSORDAEMON_command_queue_h_INCLUDED
-#define POWERSENSORDAEMON_command_queue_h_INCLUDED
-
-#include <sys/time.h>
-
-enum cmd_id_enum { POWER_ON, POWER_OFF, SAMPLE, LOG , LISTEN };
-typedef enum cmd_id_enum cmd_id_t;
-
-struct cmd_struct {
-  int fd;
-  cmd_id_t cmd;
-  char* param;
-  int sent;
-  struct timeval tv_start;
-  struct cmd_struct* next;
-};
-typedef struct cmd_struct cmd_t;
-
-int cmd_push(cmd_t** first, int fd, cmd_id_t cmd, const char* param);
-void cmd_sent(cmd_t* cmd);
-int cmd_has_expired(cmd_t cmd);
-void cmd_pop(cmd_t** first);
-void cmd_clear(cmd_t** first);
-
-#endif
diff --git a/powersensordaemon/configure b/powersensordaemon/configure
deleted file mode 100755 (executable)
index 0f94e83..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-#!/bin/sh
-#
-#
-#  powersensordaemon
-#
-#  Copyright (C) 2009 Christian Pointner <equinox@spreadspace.org>
-#
-#  This file is part of powersensordaemon.
-#
-#  powersensordaemon is free software: you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation, either version 3 of the License, or
-#  any later version.
-#
-#  powersensordaemon is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  You should have received a copy of the GNU General Public License
-#  along with powersensordaemon. If not, see <http://www.gnu.org/licenses/>.
-#
-
-TARGET=`uname -s`
-
-CFLAGS='-g -O2'
-LDFLAGS='-g -Wall -O2'
-
-PREFIX='/usr/local'
-USERNAME='uanytun'
-USERHOME='/var/run/uanytun'
-
-print_usage() {
-  echo "configure --help                    print this"
-  echo "          --target=<TARGET>         build target i.e. Linux (default: autodetect)"
-  echo "          --prefix=<PREFIX>         the installation prefix (default: /usr/local)"
-  echo "          --username=<USERNAME>     create this user when installing (default: uanytun)"
-  echo "          --userhome=<PATH>         the home directory of the user to be created  (default: /var/run/uanytun)"
-}
-
-for arg
-do
-  case $arg in
-  --target=*)
-    TARGET=${arg#--target=}
-  ;;
-  --prefix=*)
-    PREFIX=${arg#--prefix=}
-  ;;
-  --username=*)
-    USERNAME=${arg#--username=}
-  ;;
-  --userhome=*)
-    USERHOME=${arg#--userhome=}
-  ;;
-  --help)
-    print_usage
-    exit 0
-  ;;
-  *)
-    echo "Unknown argument: $arg"
-    print_usage
-    exit 1
-  ;;
-  esac
-done
-
-rm -f include.mk
-case $TARGET in 
-  Linux)
-    echo "Linux specific build options"
-  ;;
-  OpenBSD|FreeBSD|NetBSD)
-    echo "BSD specific build options"
-    CFLAGS=$CFLAGS' -I/usr/local/include'
-    LDFLAGS=$LDFLAGS' -L/usr/local/lib'
-  ;;
-  *)
-    echo "Plattform not supported"
-    exit 1;
-  ;;
-esac
-
-if [ "x$PREFIX" = "x/usr" ]; then
- ETCDIR=/etc
-else
- ETCDIR=$PREFIX/etc
-fi
-
-cat >> include.mk <<EOF
-# this file was created automatically
-# do not edit this file directly 
-# use ./configure instead
-
-TARGET := $TARGET
-CC := gcc
-CFLAGS := $CFLAGS
-LDFLAGS := $LDFLAGS
-
-SBINDIR := $PREFIX/sbin
-MANDIR := $PREFIX/share/man
-ETCDIR := $ETCDIR
-USERNAME := $USERNAME
-USERHOME := $USERHOME
-EOF
-
-exit 0
diff --git a/powersensordaemon/daemon.h b/powersensordaemon/daemon.h
deleted file mode 100644 (file)
index 22e0ac0..0000000
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- *  uAnytun
- *
- *  uAnytun is a tiny implementation of SATP. Unlike Anytun which is a full
- *  featured implementation uAnytun has no support for multiple connections
- *  or synchronisation. It is a small single threaded implementation intended
- *  to act as a client on small platforms.
- *  The secure anycast tunneling protocol (satp) defines a protocol used
- *  for communication between any combination of unicast and anycast
- *  tunnel endpoints.  It has less protocol overhead than IPSec in Tunnel
- *  mode and allows tunneling of every ETHER TYPE protocol (e.g.
- *  ethernet, ip, arp ...). satp directly includes cryptography and
- *  message authentication based on the methodes used by SRTP.  It is
- *  intended to deliver a generic, scaleable and secure solution for
- *  tunneling and relaying of packets of any protocol.
- *  
- *
- *  Copyright (C) 2007-2008 Christian Pointner <equinox@anytun.org>
- *
- *  This file is part of uAnytun.
- *
- *  uAnytun is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  uAnytun is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with uAnytun. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef UANYTUN_daemon_h_INCLUDED
-#define UANYTUN_daemon_h_INCLUDED
-
-#include <poll.h>
-#include <fcntl.h>
-#include <pwd.h>
-#include <grp.h>
-#include <sys/wait.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-struct priv_info_struct {
-  struct passwd* pw_;
-  struct group* gr_;
-};
-typedef struct priv_info_struct priv_info_t;
-
-int priv_init(priv_info_t* priv, const char* username, const char* groupname)
-{
-  if(!priv)
-    return -1;
-
-  priv->pw_ = NULL;
-  priv->gr_ = NULL;
-
-  priv->pw_ = getpwnam(username);
-  if(!priv->pw_) {
-    log_printf(ERROR, "unkown user %s", username);
-    return -1;
-  }
-
-  if(groupname)
-    priv->gr_ = getgrnam(groupname);
-  else
-    priv->gr_ = getgrgid(priv->pw_->pw_gid);
-
-  if(!priv->gr_) {
-    log_printf(ERROR, "unkown group %s", groupname);
-    return -1;
-  }
-
-  return 0;
-}
-
-int priv_drop(priv_info_t* priv)
-{
-  if(!priv || !priv->pw_ || !priv->gr_) {
-    log_printf(ERROR, "privileges not initialized properly");
-    return -1;
-  }
-
-  if(setgid(priv->gr_->gr_gid))  {
-    log_printf(ERROR, "setgid('%s') failed: %s", priv->gr_->gr_name, strerror(errno));
-    return -1;
-  }
-
-  gid_t gr_list[1];
-  gr_list[0] = priv->gr_->gr_gid;
-  if(setgroups (1, gr_list)) {
-    log_printf(ERROR, "setgroups(['%s']) failed: %s", priv->gr_->gr_name, strerror(errno));
-    return -1;
-  }
-
-  if(setuid(priv->pw_->pw_uid)) {
-    log_printf(ERROR, "setuid('%s') failed: %s", priv->pw_->pw_name, strerror(errno));
-    return -1;
-  }
-
-  log_printf(NOTICE, "dropped privileges to %s:%s", priv->pw_->pw_name, priv->gr_->gr_name);
-  return 0;
-}
-
-
-int do_chroot(const char* chrootdir)
-{
-  if(getuid() != 0) {
-    log_printf(ERROR, "this programm has to be run as root in order to run in a chroot");
-    return -1;
-  }
-
-  if(chroot(chrootdir)) {
-    log_printf(ERROR, "can't chroot to %s: %s", chrootdir, strerror(errno));
-    return -1;
-  }
-  log_printf(NOTICE, "we are in chroot jail (%s) now", chrootdir);
-  if(chdir("/")) {
-    log_printf(ERROR, "can't change to /: %s", strerror(errno));
-    return -1;
-  }
-}
-
-void daemonize()
-{
-  pid_t pid;
-
-  pid = fork();
-  if(pid < 0) {
-    log_printf(ERROR, "daemonizing failed at fork(): %s, exitting", strerror(errno));
-    exit(-1);
-  }
-  if(pid) exit(0);
-
-  umask(0);
-
-  if(setsid() < 0) {
-    log_printf(ERROR, "daemonizing failed at setsid(): %s, exitting", strerror(errno));
-    exit(-1);
-  }
-
-  pid = fork();
-  if(pid < 0) {
-    log_printf(ERROR, "daemonizing failed at fork(): %s, exitting", strerror(errno));
-    exit(-1);
-  }
-  if(pid) exit(0);
-
-  if ((chdir("/")) < 0) {
-    log_printf(ERROR, "daemonizing failed at chdir(): %s, exitting", strerror(errno));
-    exit(-1);
-  }
-
-  int fd;
-  for (fd=0;fd<=2;fd++) // close all file descriptors
-    close(fd);
-  fd = open("/dev/null",O_RDWR);        // stdin
-  if(fd == -1)
-    log_printf(WARNING, "can't open stdin (chroot and no link to /dev/null?)");
-  else {
-    if(dup(fd) == -1)   // stdout
-      log_printf(WARNING, "can't open stdout");
-    if(dup(fd) == -1)   // stderr
-      log_printf(WARNING, "can't open stderr");
-  }
-  umask(027);
-}
-
-#endif
-
diff --git a/powersensordaemon/datatypes.h b/powersensordaemon/datatypes.h
deleted file mode 100644 (file)
index 3f590a8..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- *  powersensordaemon
- *
- *  Copyright (C) 2009 Christian Pointner <equinox@spreadspace.org>
- *
- *  This file is part of powersensordaemon.
- *
- *  powersensordaemon is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  powersensordaemon is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with powersensordaemon. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef POWERSENSORDAEMON_datatypes_h_INCLUDED
-#define POWERSENSORDAEMON_datatypes_h_INCLUDED
-
-#include <stdint.h>
-#include <arpa/inet.h>
-
-typedef uint8_t u_int8_t;
-typedef uint16_t u_int16_t;
-typedef uint32_t u_int32_t;
-typedef uint64_t u_int64_t;
-/* typedef int8_t int8_t; */
-/* typedef int16_t int16_t; */
-/* typedef int32_t int32_t; */
-/* typedef int64_t int64_t; */
-
-struct buffer_struct {
-  u_int32_t length_;
-  u_int8_t* buf_;
-};
-typedef struct buffer_struct buffer_t;
-
-struct read_buffer_struct {
-  u_int32_t offset;
-  u_int8_t buf[100];
-};
-typedef struct read_buffer_struct read_buffer_t;
-
-#endif
diff --git a/powersensordaemon/key_value_storage.c b/powersensordaemon/key_value_storage.c
deleted file mode 100644 (file)
index de5e054..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- *  rhctl
- *
- *  Copyright (C) 2009 Christian Pointner <equinox@spreadspace.org>
- *
- *  This file is part of rhctl.
- *
- *  rhctl is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  rhctl is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with rhctl. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <stdio.h>
-#include <string.h>
-
-#include "key_value_storage.h"
-
-void key_value_storage_init(key_value_storage_t* stor)
-{
-  if(!stor)
-    return;
-
-  string_list_init(&(stor->keys_));
-  string_list_init(&(stor->values_));
-}
-
-void key_value_storage_clear(key_value_storage_t* stor)
-{
-  if(!stor)
-    return;
-
-  string_list_clear(&(stor->keys_));
-  string_list_clear(&(stor->values_));
-}
-
-int key_value_storage_add(key_value_storage_t* stor, const char* key, const char* value)
-{
-  if(!stor || !key || !value)
-    return -1;
-
-  int ret = string_list_add(&(stor->keys_), key);
-  if(ret!=0) 
-    return ret;
-
-  ret = string_list_add(&(stor->values_), value);
-  if(ret!=0) 
-    return ret;
-
-  return 0;
-}
-
-char* key_value_storage_find(key_value_storage_t* stor, const char* key)
-{
-  if(!stor || !key)
-    return NULL;
-
-  string_list_element_t* k = stor->keys_.first_;
-  string_list_element_t* v = stor->values_.first_;
-  while(v && k) {
-    if(!strcmp(k->string_, key))
-      return v->string_;
-    
-    k = k->next_;
-    v = v->next_;
-  }
-
-  return NULL;
-}
-
-/* Warning: this function only works if you actually store \0-terminated strings as values!! */
-char const * key_value_storage_find_first_stringvalue(key_value_storage_t* stor, char const * value)
-{
-  if(!stor || !value)
-    return NULL;
-
-  string_list_element_t* k = stor->keys_.first_;
-  string_list_element_t* v = stor->values_.first_;
-  while(v && k) {
-    if(!strcmp(v->string_, value))
-      return k->string_;
-    
-    k = k->next_;
-    v = v->next_;
-  }
-
-  return NULL;
-}
-
-int key_value_storage_length(key_value_storage_t* stor)
-{
-  if(!stor)
-    return 0;
-
-  int length = 0;
-  string_list_element_t* k = stor->keys_.first_;
-  while(k) {
-    length++;
-    k = k->next_;
-  }
-
-  return length;
-}
-
-void key_value_storage_print(key_value_storage_t* stor, const char* head, const char* sep, const char* tail)
-{
-  if(!stor)
-    return;
-
-  string_list_element_t* k = stor->keys_.first_;
-  string_list_element_t* v = stor->values_.first_;
-  while(v && k) {
-    printf("%s%s%s%s%s", head, k->string_, sep, v->string_, tail);
-    k = k->next_;
-    v = v->next_;
-  }
-  printf("\n");
-}
diff --git a/powersensordaemon/key_value_storage.h b/powersensordaemon/key_value_storage.h
deleted file mode 100644 (file)
index ce8c3c8..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *  rhctl
- *
- *  Copyright (C) 2009 Christian Pointner <equinox@spreadspace.org>
- *
- *  This file is part of rhctl.
- *
- *  rhctl is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  rhctl is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with rhctl. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef RHCTL_key_value_storage_h_INCLUDED
-#define RHCTL_key_value_storage_h_INCLUDED
-
-#include "string_list.h"
-
-struct key_value_storage_struct {
-  string_list_t keys_;
-  string_list_t values_;
-};
-typedef struct key_value_storage_struct key_value_storage_t;
-
-void key_value_storage_init(key_value_storage_t* stor);
-void key_value_storage_clear(key_value_storage_t* stor);
-int key_value_storage_add(key_value_storage_t* stor, const char* key, const char* value);
-char* key_value_storage_find(key_value_storage_t* stor, const char* key);
-/* Warning: this function only works if you actually store \0-terminated strings as values!! */
-char const * key_value_storage_find_first_stringvalue(key_value_storage_t* stor, char const * value);
-int key_value_storage_length(key_value_storage_t* stor);
-
-void key_value_storage_print(key_value_storage_t* stor, const char* head, const char* sep, const char* tail);
-
-
-#endif
diff --git a/powersensordaemon/lightlevel.cgi b/powersensordaemon/lightlevel.cgi
deleted file mode 100755 (executable)
index ff73464..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-UNIXSOCK=/var/run/powersensordaemon/cmd.sock
-TMPFILE=$(mktemp)
-echo "sample photo0" | usocket $UNIXSOCK -n > $TMPFILE &
-PID=$!
-echo "Content-type: text/html"
-echo ""
-A=0
-while [ ! -s $TMPFILE ]; do
-       if [ $((A++)) -gt 2000 ]; then
-               break
-       else
-               continue
-       fi
-done
-cat $TMPFILE | cut -d' ' -f 2
-rm $TMPFILE
-kill $PID
-exit 0
diff --git a/powersensordaemon/log.c b/powersensordaemon/log.c
deleted file mode 100644 (file)
index 43a0a5a..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- *  uAnytun
- *
- *  uAnytun is a tiny implementation of SATP. Unlike Anytun which is a full
- *  featured implementation uAnytun has no support for multiple connections
- *  or synchronisation. It is a small single threaded implementation intended
- *  to act as a client on small platforms.
- *  The secure anycast tunneling protocol (satp) defines a protocol used
- *  for communication between any combination of unicast and anycast
- *  tunnel endpoints.  It has less protocol overhead than IPSec in Tunnel
- *  mode and allows tunneling of every ETHER TYPE protocol (e.g.
- *  ethernet, ip, arp ...). satp directly includes cryptography and
- *  message authentication based on the methodes used by SRTP.  It is
- *  intended to deliver a generic, scaleable and secure solution for
- *  tunneling and relaying of packets of any protocol.
- *  
- *
- *  Copyright (C) 2007-2008 Christian Pointner <equinox@anytun.org>
- *
- *  This file is part of uAnytun.
- *
- *  uAnytun is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  uAnytun is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with uAnytun. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "datatypes.h"
-
-#include <string.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#define SYSLOG_NAMES
-#include <syslog.h>
-
-#include "log.h"
-
-log_t stdlog;
-
-#include "log_targets.h"
-
-const char* log_prio_to_string(log_prio_t prio)
-{
-  switch(prio) {
-  case ERROR: return "ERROR";
-  case WARNING: return "WARNING";
-  case NOTICE: return "NOTICE";
-  case INFO: return "INFO";
-  case DEBUG: return "DEBUG";
-  }
-  return "UNKNOWN";
-}
-
-log_target_type_t log_target_parse_type(const char* conf)
-{
-  if(!conf)
-    return TARGET_UNKNOWN;
-
-  if(!strncmp(conf, "syslog", 6)) return TARGET_SYSLOG;
-  if(!strncmp(conf, "file", 4)) return TARGET_FILE;
-  if(!strncmp(conf, "stdout", 6)) return TARGET_STDOUT;
-  if(!strncmp(conf, "stderr", 6)) return TARGET_STDERR;
-
-  return TARGET_UNKNOWN;
-}
-
-int log_targets_target_exists(log_targets_t* targets, log_target_type_t type)
-{
-  if(!targets && !targets->first_)
-    return 0;
-
-  log_target_t* tmp = targets->first_;
-  while(tmp) {
-    if(tmp->type_ == type)
-      return 1;
-    tmp = tmp->next_;
-  }  
-  return 0;
-}
-
-int log_targets_add(log_targets_t* targets, const char* conf)
-{
-  if(!targets)
-    return -1;
-
-  log_target_t* new_target = NULL;
-  int duplicates_allowed = 0;
-  switch(log_target_parse_type(conf)) {
-  case TARGET_SYSLOG: new_target = log_target_syslog_new(); break;
-  case TARGET_FILE: new_target = log_target_file_new(); duplicates_allowed = 1; break;
-  case TARGET_STDOUT: new_target = log_target_stdout_new(); break;
-  case TARGET_STDERR: new_target = log_target_stderr_new(); break;
-  default: return -3;
-  }
-  if(!new_target)
-    return -2;
-
-  if(!duplicates_allowed && log_targets_target_exists(targets, new_target->type_)) {
-    free(new_target);
-    return -4;
-  }
-
-  const char* prioptr = strchr(conf, ':');
-  if(!prioptr || prioptr[1] == 0) {
-    free(new_target);
-    return -1;
-  }
-  prioptr++;
-  if(!isdigit(prioptr[0]) || (prioptr[1] != 0 && prioptr[1] != ',')) {
-    free(new_target);
-    return -1;
-  }
-  new_target->max_prio_ = prioptr[0] - '0';
-  if(new_target->max_prio_ > 0)
-    new_target->enabled_ = 1;
-
-  if(new_target->init != NULL) {
-    const char* confptr = NULL;
-    if(prioptr[1] != 0)
-      confptr = prioptr+2;
-
-    int ret = (*new_target->init)(new_target, confptr);
-    if(ret) {
-      free(new_target);
-      return ret;
-    }
-  }
-
-  if(new_target->open != NULL)
-    (*new_target->open)(new_target);
-
-
-  if(!targets->first_) {
-    targets->first_ = new_target;
-  }
-  else {
-    log_target_t* tmp = targets->first_;
-    while(tmp->next_)
-      tmp = tmp->next_;
-    
-    tmp->next_ = new_target;
-  }
-  return 0;
-}
-
-void log_targets_log(log_targets_t* targets, log_prio_t prio, const char* msg)
-{
-  if(!targets)
-    return;
-
-  log_target_t* tmp = targets->first_;
-  while(tmp) {
-    if(tmp->log != NULL && tmp->enabled_ && tmp->max_prio_ >= prio)
-      (*tmp->log)(tmp, prio, msg);
-
-    tmp = tmp->next_;
-  }
-}
-
-void log_targets_clear(log_targets_t* targets)
-{
-  if(!targets)
-    return;
-
-  while(targets->first_) {
-    log_target_t* tmp = targets->first_;
-    targets->first_ = tmp->next_;
-    if(tmp->close != NULL)
-      (*tmp->close)(tmp);
-    if(tmp->clear != NULL)
-      (*tmp->clear)(tmp);
-    free(tmp);
-  }
-}
-
-
-void log_init()
-{
-  stdlog.max_prio_ = 0;
-  stdlog.targets_.first_ = NULL;
-}
-
-void log_close()
-{
-  log_targets_clear(&stdlog.targets_);
-}
-
-void update_max_prio()
-{
-  log_target_t* tmp = stdlog.targets_.first_;
-  while(tmp) {
-    if(tmp->enabled_ && tmp->max_prio_ > stdlog.max_prio_)
-      stdlog.max_prio_ = tmp->max_prio_;
-
-    tmp = tmp->next_;
-  }
-}
-
-int log_add_target(const char* conf)
-{
-  if(!conf)
-    return -1;
-
-  int ret = log_targets_add(&stdlog.targets_, conf);
-  if(!ret) update_max_prio();
-  return ret;
-}
-
-void log_printf(log_prio_t prio, const char* fmt, ...)
-{
-  if(stdlog.max_prio_ < prio)
-    return;
-
-  static char msg[MSG_LENGTH_MAX];
-  va_list args;
-
-  va_start(args, fmt);
-  vsnprintf(msg, MSG_LENGTH_MAX, fmt, args);
-  va_end(args);
-
-  log_targets_log(&stdlog.targets_, prio, msg);
-}
-
-void log_print_hex_dump(log_prio_t prio, const u_int8_t* buf, u_int32_t len)
-{
-  if(stdlog.max_prio_ < prio)
-    return;
-
-  static char msg[MSG_LENGTH_MAX];
-
-  if(!buf) {
-    snprintf(msg, MSG_LENGTH_MAX, "(NULL)");
-  }
-  else {
-    u_int32_t i;
-    int offset = snprintf(msg, MSG_LENGTH_MAX, "dump(%d): ", len);
-    if(offset < 0)
-      return;
-    u_int8_t* ptr = &msg[offset];
-    
-    for(i=0; i < len; i++) {
-      if(((i+1)*3) >= (MSG_LENGTH_MAX - offset))
-        break;
-      snprintf(ptr, 3, "%02X ", buf[i]);
-      ptr+=3;
-    }
-  }
-  log_targets_log(&stdlog.targets_, prio, msg);
-}
diff --git a/powersensordaemon/log.h b/powersensordaemon/log.h
deleted file mode 100644 (file)
index 2717622..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- *  uAnytun
- *
- *  uAnytun is a tiny implementation of SATP. Unlike Anytun which is a full
- *  featured implementation uAnytun has no support for multiple connections
- *  or synchronisation. It is a small single threaded implementation intended
- *  to act as a client on small platforms.
- *  The secure anycast tunneling protocol (satp) defines a protocol used
- *  for communication between any combination of unicast and anycast
- *  tunnel endpoints.  It has less protocol overhead than IPSec in Tunnel
- *  mode and allows tunneling of every ETHER TYPE protocol (e.g.
- *  ethernet, ip, arp ...). satp directly includes cryptography and
- *  message authentication based on the methodes used by SRTP.  It is
- *  intended to deliver a generic, scaleable and secure solution for
- *  tunneling and relaying of packets of any protocol.
- *  
- *
- *  Copyright (C) 2007-2008 Christian Pointner <equinox@anytun.org>
- *
- *  This file is part of uAnytun.
- *
- *  uAnytun is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  uAnytun is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with uAnytun. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef UANYTUN_log_h_INCLUDED
-#define UANYTUN_log_h_INCLUDED
-
-#define MSG_LENGTH_MAX 150
-
-enum log_prio_enum { ERROR = 1, WARNING = 2, NOTICE = 3,
-                     INFO = 4, DEBUG = 5 };
-typedef enum log_prio_enum log_prio_t;
-
-const char* log_prio_to_string(log_prio_t prio);
-
-enum log_target_type_enum { TARGET_SYSLOG , TARGET_STDOUT, TARGET_STDERR, TARGET_FILE , TARGET_UNKNOWN };
-typedef enum log_target_type_enum log_target_type_t;
-
-struct log_target_struct {
-  log_target_type_t type_;
-  int (*init)(struct log_target_struct* self, const char* conf);
-  void (*open)(struct log_target_struct* self);
-  void (*log)(struct log_target_struct* self, log_prio_t prio, const char* msg);
-  void (*close)(struct log_target_struct* self);
-  void (*clear)(struct log_target_struct* self);
-  int opened_;
-  int enabled_;
-  log_prio_t max_prio_;
-  void* param_;
-  struct log_target_struct* next_;
-};
-typedef struct log_target_struct log_target_t;
-
-
-struct log_targets_struct {
-  log_target_t* first_;
-};
-typedef struct log_targets_struct log_targets_t;
-
-int log_targets_target_exists(log_targets_t* targets, log_target_type_t type);
-int log_targets_add(log_targets_t* targets, const char* conf);
-void log_targets_log(log_targets_t* targets, log_prio_t prio, const char* msg);
-void log_targets_clear(log_targets_t* targets);
-
-
-struct log_struct {
-  log_prio_t max_prio_;
-  log_targets_t targets_;
-};
-typedef struct log_struct log_t;
-
-void log_init();
-void log_close();
-void update_max_prio();
-int log_add_target(const char* conf);
-void log_printf(log_prio_t prio, const char* fmt, ...);
-void log_print_hex_dump(log_prio_t prio, const u_int8_t* buf, u_int32_t len);
-
-#endif
diff --git a/powersensordaemon/log_targets.h b/powersensordaemon/log_targets.h
deleted file mode 100644 (file)
index 8db3812..0000000
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- *  uAnytun
- *
- *  uAnytun is a tiny implementation of SATP. Unlike Anytun which is a full
- *  featured implementation uAnytun has no support for multiple connections
- *  or synchronisation. It is a small single threaded implementation intended
- *  to act as a client on small platforms.
- *  The secure anycast tunneling protocol (satp) defines a protocol used
- *  for communication between any combination of unicast and anycast
- *  tunnel endpoints.  It has less protocol overhead than IPSec in Tunnel
- *  mode and allows tunneling of every ETHER TYPE protocol (e.g.
- *  ethernet, ip, arp ...). satp directly includes cryptography and
- *  message authentication based on the methodes used by SRTP.  It is
- *  intended to deliver a generic, scaleable and secure solution for
- *  tunneling and relaying of packets of any protocol.
- *  
- *
- *  Copyright (C) 2007-2008 Christian Pointner <equinox@anytun.org>
- *
- *  This file is part of uAnytun.
- *
- *  uAnytun is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  uAnytun is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with uAnytun. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef UANYTUN_log_targets_h_INCLUDED
-#define UANYTUN_log_targets_h_INCLUDED
-
-#include <time.h>
-
-static char* get_time_formatted()
-{
-  char* time_string;
-  time_t t = time(NULL);
-  if(t < 0) 
-    time_string = "<time read error>";
-  else {
-    time_string = ctime(&t);
-    if(!time_string)
-      time_string = "<time format error>";
-    else {
-      char* newline = strchr(time_string, '\n');
-      if(newline)
-        newline[0] = 0;
-    }
-  }
-  return time_string;
-}
-
-enum syslog_facility_enum { USER = LOG_USER, MAIL = LOG_MAIL,
-                            DAEMON = LOG_DAEMON, AUTH = LOG_AUTH,
-                            SYSLOG = LOG_SYSLOG, LPR = LOG_LPR,
-                            NEWS = LOG_NEWS, UUCP = LOG_UUCP,
-                            CRON = LOG_CRON, AUTHPRIV = LOG_AUTHPRIV,
-                            FTP = LOG_FTP, LOCAL0 = LOG_LOCAL0,
-                            LOCAL1 = LOG_LOCAL1, LOCAL2 = LOG_LOCAL2,
-                            LOCAL3 = LOG_LOCAL3, LOCAL4 = LOG_LOCAL4,
-                            LOCAL5 = LOG_LOCAL5, LOCAL6 = LOG_LOCAL6,
-                            LOCAL7 = LOG_LOCAL7 };
-typedef enum syslog_facility_enum syslog_facility_t;
-
-struct log_target_syslog_param_struct {
-  char* logname_;
-  syslog_facility_t facility_;
-};
-typedef struct log_target_syslog_param_struct log_target_syslog_param_t;
-
-int log_target_syslog_init(log_target_t* self, const char* conf)
-{
-  if(!self || (conf && conf[0] == 0))
-    return -1;
-  
-  self->param_ = malloc(sizeof(log_target_syslog_param_t));
-  if(!self->param_)
-    return -2;
-
-  char* logname;
-  const char* end = NULL;
-  if(!conf)
-    logname = strdup("uanytun");
-  else {
-    end = strchr(conf, ',');
-    if(end) {
-      size_t len = (size_t)(end - conf);
-      if(!len) {
-        free(self->param_);
-        return -1;
-      }  
-      logname = malloc(len+1);
-      if(logname) {
-        strncpy(logname, conf, len);
-        logname[len] = 0;
-      }
-    }
-    else
-      logname = strdup(conf);
-  }
-
-  if(!logname) {
-    free(self->param_);
-    return -2;
-  }
-  ((log_target_syslog_param_t*)(self->param_))->logname_ = logname;
-
-  if(!end) {
-    ((log_target_syslog_param_t*)(self->param_))->facility_ = DAEMON;
-    return 0;
-  }
-  
-  if(end[1] == 0 || end[1] == ',') {
-    free(logname);
-    free(self->param_);
-    return -1;
-  }
-    
-  const char* start = end + 1;
-  end = strchr(start, ',');
-  int i;
-  for(i=0;;++i) {
-    if(facilitynames[i].c_name == NULL) {
-      free(logname);
-      free(self->param_);
-      return -1;
-    }
-
-    if(( end && !strncmp(start, facilitynames[i].c_name, (size_t)(end - start)) && facilitynames[i].c_name[(size_t)(end-start)] == 0) ||
-       (!end && !strcmp(start, facilitynames[i].c_name))) {
-        ((log_target_syslog_param_t*)(self->param_))->facility_ = facilitynames[i].c_val;
-        break;
-    }
-  }
-
-  return 0;
-}
-
-void log_target_syslog_open(log_target_t* self)
-{
-  if(!self || !self->param_)
-    return;
-
-  openlog(((log_target_syslog_param_t*)(self->param_))->logname_, LOG_PID, ((log_target_syslog_param_t*)(self->param_))->facility_);
-  self->opened_ = 1;
-}
-
-void log_target_syslog_log(log_target_t* self, log_prio_t prio, const char* msg)
-{
-  if(!self || !self->param_ || !self->opened_)
-    return;
-
-  syslog((prio + 2) | ((log_target_syslog_param_t*)(self->param_))->facility_, "%s", msg);  
-}
-
-void log_target_syslog_close(log_target_t* self)
-{
-  closelog();
-  self->opened_ = 0;
-}
-
-void log_target_syslog_clear(log_target_t* self)
-{
-  if(!self || !self->param_)
-    return;
-
-  if(((log_target_syslog_param_t*)(self->param_))->logname_)
-    free(((log_target_syslog_param_t*)(self->param_))->logname_);
-
-  free(self->param_);
-}
-
-log_target_t* log_target_syslog_new()
-{
-  log_target_t* tmp = malloc(sizeof(log_target_t));
-  if(!tmp)
-    return NULL;
-
-  tmp->type_ = TARGET_SYSLOG;
-  tmp->init = &log_target_syslog_init;
-  tmp->open = &log_target_syslog_open;
-  tmp->log = &log_target_syslog_log;
-  tmp->close = &log_target_syslog_close;
-  tmp->clear = &log_target_syslog_clear;
-  tmp->opened_ = 0;
-  tmp->enabled_ = 0;
-  tmp->max_prio_ = NOTICE;
-  tmp->param_ = NULL;
-  tmp->next_ = NULL;
-
-  return tmp;
-}
-
-
-struct log_target_file_param_struct {
-  char* logfilename_;
-  FILE* file_;
-};
-typedef struct log_target_file_param_struct log_target_file_param_t;
-
-int log_target_file_init(log_target_t* self, const char* conf)
-{
-  if(!self || (conf && conf[0] == 0))
-    return -1;
-  
-  self->param_ = malloc(sizeof(log_target_file_param_t));
-  if(!self->param_)
-    return -2;
-
-  char* logfilename;
-  if(!conf)
-    logfilename = strdup("uanytun.log");
-  else {
-    const char* end = strchr(conf, ',');
-    if(end) {
-      size_t len = (size_t)(end - conf);
-      if(!len) {
-        free(self->param_);
-        return -1;
-      }  
-      logfilename = malloc(len+1);
-      if(logfilename) {
-        strncpy(logfilename, conf, len);
-        logfilename[len] = 0;
-      }
-    }
-    else
-      logfilename = strdup(conf);
-  }
-
-  if(!logfilename) {
-    free(self->param_);
-    return -2;
-  }
-  ((log_target_file_param_t*)(self->param_))->logfilename_ = logfilename;
-  ((log_target_file_param_t*)(self->param_))->file_ = NULL;
-
-  return 0;
-}
-
-void log_target_file_open(log_target_t* self)
-{
-  if(!self || !self->param_)
-    return;
-
-  ((log_target_file_param_t*)(self->param_))->file_ = fopen(((log_target_file_param_t*)(self->param_))->logfilename_, "w");
-  if(((log_target_file_param_t*)(self->param_))->file_)
-    self->opened_ = 1;
-}
-
-void log_target_file_log(log_target_t* self, log_prio_t prio, const char* msg)
-{
-  if(!self || !self->param_ || !self->opened_)
-    return;
-
-  fprintf(((log_target_file_param_t*)(self->param_))->file_, "%s %s: %s\n", get_time_formatted(), log_prio_to_string(prio), msg);
-  fflush(((log_target_file_param_t*)(self->param_))->file_);
-}
-
-void log_target_file_close(log_target_t* self)
-{
-  if(!self || !self->param_)
-    return;
-
-  fclose(((log_target_file_param_t*)(self->param_))->file_);
-  self->opened_ = 0;
-}
-
-void log_target_file_clear(log_target_t* self)
-{
-  if(!self || !self->param_)
-    return;
-
-  if(((log_target_file_param_t*)(self->param_))->logfilename_)
-    free(((log_target_file_param_t*)(self->param_))->logfilename_);
-
-  free(self->param_);
-}
-
-
-log_target_t* log_target_file_new()
-{
-  log_target_t* tmp = malloc(sizeof(log_target_t));
-  if(!tmp)
-    return NULL;
-
-  tmp->type_ = TARGET_FILE;
-  tmp->init = &log_target_file_init;
-  tmp->open = &log_target_file_open;
-  tmp->log = &log_target_file_log;
-  tmp->close = &log_target_file_close;
-  tmp->clear = &log_target_file_clear;
-  tmp->opened_ = 0;
-  tmp->enabled_ = 0;
-  tmp->max_prio_ = NOTICE;
-  tmp->param_ = NULL;
-  tmp->next_ = NULL;
-
-  return tmp;
-}
-
-
-void log_target_stdout_log(log_target_t* self, log_prio_t prio, const char* msg)
-{
-  printf("%s %s: %s\n", get_time_formatted(), log_prio_to_string(prio), msg);
-}
-
-log_target_t* log_target_stdout_new()
-{
-  log_target_t* tmp = malloc(sizeof(log_target_t));
-  if(!tmp)
-    return NULL;
-
-  tmp->type_ = TARGET_STDOUT;
-  tmp->init = NULL;
-  tmp->open = NULL;
-  tmp->log = &log_target_stdout_log;
-  tmp->close = NULL;
-  tmp->clear = NULL;
-  tmp->opened_ = 0;
-  tmp->enabled_ = 0;
-  tmp->max_prio_ = NOTICE;
-  tmp->param_ = NULL;
-  tmp->next_ = NULL;
-
-  return tmp;
-}
-
-
-void log_target_stderr_log(log_target_t* self, log_prio_t prio, const char* msg)
-{
-  fprintf(stderr, "%s %s: %s\n", get_time_formatted(), log_prio_to_string(prio), msg);
-}
-
-log_target_t* log_target_stderr_new()
-{
-  log_target_t* tmp = malloc(sizeof(log_target_t));
-  if(!tmp)
-    return NULL;
-
-  tmp->type_ = TARGET_STDERR;
-  tmp->init = NULL;
-  tmp->open = NULL;
-  tmp->log = &log_target_stderr_log;
-  tmp->close = NULL;
-  tmp->clear = NULL;
-  tmp->opened_ = 0;
-  tmp->enabled_ = 0;
-  tmp->max_prio_ = NOTICE;
-  tmp->param_ = NULL;
-  tmp->next_ = NULL;
-
-  return tmp;
-}
-
-#endif
diff --git a/powersensordaemon/options.c b/powersensordaemon/options.c
deleted file mode 100644 (file)
index 51aabd9..0000000
+++ /dev/null
@@ -1,364 +0,0 @@
-/*
- *  powersensordaemon
- *
- *  Copyright (C) 2009 Christian Pointner <equinox@spreadspace.org>
- *
- *  This file is part of powersensordaemon.
- *
- *  powersensordaemon is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  powersensordaemon is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with powersensordaemon. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "datatypes.h"
-
-#include "options.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-
-#include "log.h"
-
-#define PARSE_BOOL_PARAM(SHORT, LONG, VALUE)             \
-    else if(!strcmp(str,SHORT) || !strcmp(str,LONG))     \
-      VALUE = 1;
-
-#define PARSE_INVERSE_BOOL_PARAM(SHORT, LONG, VALUE)     \
-    else if(!strcmp(str,SHORT) || !strcmp(str,LONG))     \
-      VALUE = 0;
-
-#define PARSE_INT_PARAM(SHORT, LONG, VALUE)              \
-    else if(!strcmp(str,SHORT) || !strcmp(str,LONG))     \
-    {                                                    \
-      if(argc < 1)                                       \
-        return i;                                        \
-      VALUE = atoi(argv[i+1]);                           \
-      argc--;                                            \
-      i++;                                               \
-    }
-
-#define PARSE_STRING_PARAM(SHORT, LONG, VALUE)           \
-    else if(!strcmp(str,SHORT) || !strcmp(str,LONG))     \
-    {                                                    \
-      if(argc < 1 || argv[i+1][0] == '-')                \
-        return i;                                        \
-      if(VALUE) free(VALUE);                             \
-      VALUE = strdup(argv[i+1]);                         \
-      if(!VALUE)                                         \
-        return -2;                                       \
-      argc--;                                            \
-      i++;                                               \
-    }
-
-#define PARSE_STRING_PARAM_SEC(SHORT, LONG, VALUE)       \
-    else if(!strcmp(str,SHORT) || !strcmp(str,LONG))     \
-    {                                                    \
-      if(argc < 1 || argv[i+1][0] == '-')                \
-        return i;                                        \
-      if(VALUE) free(VALUE);                             \
-      VALUE = strdup(argv[i+1]);                         \
-      if(!VALUE)                                         \
-        return -2;                                       \
-      size_t j;                                          \
-      for(j=0; j < strlen(argv[i+1]); ++j)               \
-        argv[i+1][j] = '#';                              \
-      argc--;                                            \
-      i++;                                               \
-    }
-
-#define PARSE_HEXSTRING_PARAM_SEC(SHORT, LONG, VALUE)    \
-    else if(!strcmp(str,SHORT) || !strcmp(str,LONG))     \
-    {                                                    \
-      if(argc < 1 || argv[i+1][0] == '-')                \
-        return i;                                        \
-      int ret;                                           \
-      ret = options_parse_hex_string(argv[i+1], &VALUE); \
-      if(ret > 0)                                        \
-        return i+1;                                      \
-      else if(ret < 0)                                   \
-        return ret;                                      \
-      size_t j;                                          \
-      for(j=0; j < strlen(argv[i+1]); ++j)               \
-        argv[i+1][j] = '#';                              \
-      argc--;                                            \
-      i++;                                               \
-    }
-
-#define PARSE_STRING_LIST(SHORT, LONG, LIST)             \
-    else if(!strcmp(str,SHORT) || !strcmp(str,LONG))     \
-    {                                                    \
-      if(argc < 1 || argv[i+1][0] == '-')                \
-        return i;                                        \
-      int ret = string_list_add(&LIST, argv[i+1]);       \
-      if(ret == -2)                                      \
-        return ret;                                      \
-      else if(ret)                                       \
-        return i+1;                                      \
-      argc--;                                            \
-      i++;                                               \
-    }
-
-#define PARSE_KEY_VALUE(SHORT, LONG, SEP, KV)            \
-    else if(!strcmp(str,SHORT) || !strcmp(str,LONG))     \
-    {                                                    \
-      if(argc < 1 || argv[i+1][0] == '-')                \
-        return i;                                        \
-      char* value = strchr(argv[i+1], SEP);              \
-      if(!value || value[1] == 0)                        \
-        return i+1;                                      \
-      value[0] = 0;                                      \
-      value++;                                           \
-      if(key_value_storage_add(&KV, argv[i+1], value))   \
-        return -2;                                       \
-      argc--;                                            \
-      i++;                                               \
-    }
-
-int options_parse_hex_string(const char* hex, buffer_t* buffer)
-{
-  if(!hex || !buffer)
-    return -1;
-
-  u_int32_t hex_len = strlen(hex);
-  if(hex_len%2)
-    return 1;
-
-  if(buffer->buf_) 
-    free(buffer->buf_);
-  
-  buffer->length_ = hex_len/2;
-  buffer->buf_ = malloc(buffer->length_);
-  if(!buffer->buf_) {
-    buffer->length_ = 0;
-    return -2;
-  }
-
-  const char* ptr = hex;
-  int i;
-  for(i=0;i<buffer->length_;++i) {
-    u_int32_t tmp;
-    sscanf(ptr, "%2X", &tmp);
-    buffer->buf_[i] = (u_int8_t)tmp;
-    ptr += 2;
-  }
-
-  return 0;
-}
-
-
-
-int options_parse(options_t* opt, int argc, char* argv[])
-{
-  if(!opt)
-    return -1;
-
-  options_default(opt);
-
-  if(opt->progname_)
-    free(opt->progname_);
-  opt->progname_ = strdup(argv[0]);
-  if(!opt->progname_)
-    return -2;
-
-  argc--;
-
-  int i;
-  for(i=1; argc > 0; ++i)
-  {
-    char* str = argv[i];
-    argc--;
-
-    if(!strcmp(str,"-h") || !strcmp(str,"--help"))
-      return -1;
-    PARSE_INVERSE_BOOL_PARAM("-D","--nodaemonize", opt->daemonize_)
-    PARSE_STRING_PARAM("-u","--username", opt->username_)
-    PARSE_STRING_PARAM("-g","--groupname", opt->groupname_)
-    PARSE_STRING_PARAM("-C","--chroot", opt->chroot_dir_)
-    PARSE_STRING_PARAM("-P","--write-pid", opt->pid_file_)
-    PARSE_STRING_LIST("-L","--log", opt->log_targets_)
-    PARSE_STRING_PARAM("-d","--device", opt->tty_dev_)
-    PARSE_STRING_PARAM("-s","--socket", opt->command_sock_)
-    PARSE_STRING_PARAM("-p","--powerid-file", opt->powerid_file_)
-    PARSE_STRING_PARAM("-a","--sampledev-file", opt->sampledev_file_)
-    PARSE_KEY_VALUE("-A","--autosampledev", ',', opt->autosampledevs_)
-    else 
-      return i;
-  }
-
-  return 0;
-}
-
-
-int options_parse_key_value_file(const char* filename, key_value_storage_t* storage)
-{
-  FILE* file = fopen(filename, "r");
-  if(file) {
-    char buf[100];
-    while(fgets(buf, 100, file) != NULL) {
-      char* tmp, *key, *value;
-      for(tmp = buf;*tmp == ' '; ++tmp);
-      if(*(key = tmp) == 0) continue;
-      for(;*tmp != ' ' && *tmp != 0;++tmp);
-      if(*tmp == 0) continue;
-      *tmp=0;
-      ++tmp;
-      for(;*tmp == ' ';++tmp);
-      if(*(value = tmp) == 0) continue;
-      for(;*tmp != ' ' && *tmp != 0 && *tmp != '\n';++tmp);
-      *tmp = 0;
-      
-      if(key_value_storage_add(storage, key, value))
-        return -2;
-    }
-    fclose(file);
-  }
-  else {
-    log_printf(ERROR,"unable to open conf file (%s): %s", filename, strerror(errno));
-    return -1;
-  }
-}
-
-int options_parse_post(options_t* opt)
-{
-  if(!opt)
-    return -1;
-
-  if(opt->powerid_file_) {
-    int ret = options_parse_key_value_file(opt->powerid_file_, &opt->powerids_);
-    if(ret)
-      return ret;
-  }
-
-  if(opt->sampledev_file_) {
-    int ret = options_parse_key_value_file(opt->sampledev_file_, &opt->sampledevs_);
-    if(ret)
-      return ret;
-  }
-
-  string_list_element_t* k = opt->autosampledevs_.keys_.first_;
-  string_list_element_t* v = opt->autosampledevs_.values_.first_;
-  while(k && v) {
-    if(!key_value_storage_find(&opt->sampledevs_, k->string_)) {
-      log_printf(ERROR, "sample dev '%s' not in file '%s'", k->string_, opt->sampledev_file_);
-      return -1;
-    }
-    if(atoi(v->string_) <= 0) {
-      log_printf(ERROR, "invalid rate '%s' for sample dev '%s'", v->string_, k->string_);
-      return -1;
-    }
-    k = k->next_;
-    v = v->next_;
-  }
-  
-  return 0;
-}
-
-void options_default(options_t* opt)
-{
-  if(!opt)
-    return;
-
-  opt->progname_ = strdup("powersensordaemon");
-  opt->daemonize_ = 1;
-  opt->username_ = NULL;
-  opt->groupname_ = NULL;
-  opt->chroot_dir_ = NULL;
-  opt->pid_file_ = NULL;
-  string_list_init(&opt->log_targets_);
-
-  opt->tty_dev_ = strdup("/dev/ttyUSB0");
-  opt->command_sock_ = strdup("/var/run/powersensordaemon/cmd.sock");
-  opt->powerid_file_ = NULL;
-  key_value_storage_init(&opt->powerids_);
-  opt->sampledev_file_ = NULL;
-  key_value_storage_init(&opt->sampledevs_);
-  key_value_storage_init(&opt->autosampledevs_);
-}
-
-void options_clear(options_t* opt)
-{
-  if(!opt)
-    return;
-
-  if(opt->progname_)
-    free(opt->progname_);
-  if(opt->username_)
-    free(opt->username_);
-  if(opt->groupname_)
-    free(opt->groupname_);
-  if(opt->chroot_dir_)
-    free(opt->chroot_dir_);
-  if(opt->pid_file_)
-    free(opt->pid_file_);
-  string_list_clear(&opt->log_targets_);
-
-  if(opt->tty_dev_)
-    free(opt->tty_dev_);
-  if(opt->command_sock_)
-    free(opt->command_sock_);
-  if(opt->powerid_file_)
-    free(opt->powerid_file_);
-  key_value_storage_clear(&opt->powerids_);
-  if(opt->sampledev_file_)
-    free(opt->sampledev_file_);
-  key_value_storage_clear(&opt->sampledevs_);
-  key_value_storage_clear(&opt->autosampledevs_);
-}
-
-void options_print_usage()
-{
-  printf("USAGE:\n");
-  printf("powersensordaemon [-h|--help]                         prints this...\n");
-  printf("            [-D|--nodaemonize]                  don't run in background\n");
-  printf("            [-u|--username] <username>          change to this user\n");
-  printf("            [-g|--groupname] <groupname>        change to this group\n");
-  printf("            [-C|--chroot] <path>                chroot to this directory\n");
-  printf("            [-P|--write-pid] <path>             write pid to this file\n");
-  printf("            [-L|--log] <target>:<level>[,<param1>[,<param2>..]]\n");
-  printf("                                                add a log target, can be invoked several times\n");
-
-  printf("            [-d|--device] <tty device>          the device file e.g. /dev/ttyUSB0\n");
-  printf("            [-s|--command-sock] <unix sock>     the command socket e.g. /var/run/powersensordaemon/cmd.sock\n");
-  printf("            [-p|--powerid-file] <path>          file that contains the power ids\n");
-  printf("            [-a|--sampledev-file] <path>        file that contains all sample devices\n");
-  printf("            [-A|--autosampledev] <device>,<delay between samples in seconds>\n");
-  printf("                                                automatic sample this devices, can be invoked several times\n");
-}
-
-void options_print(options_t* opt)
-{
-  if(!opt)
-    return;
-
-  printf("progname: '%s'\n", opt->progname_);
-  printf("daemonize: %d\n", opt->daemonize_);
-  printf("username: '%s'\n", opt->username_);
-  printf("groupname: '%s'\n", opt->groupname_);
-  printf("chroot_dir: '%s'\n", opt->chroot_dir_);
-  printf("pid_file: '%s'\n", opt->pid_file_);
-  printf("log_targets: \n");
-  string_list_print(&opt->log_targets_, "  '", "'\n");
-
-  printf("tty_dev: '%s'\n", opt->tty_dev_);
-  printf("command_sock: '%s'\n", opt->command_sock_);
-  printf("powerid_file: '%s'\n", opt->powerid_file_);
-  printf("powerids: \n");
-  key_value_storage_print(&opt->powerids_, "  '", "' -> '", "'\n");
-  printf("sampledev_file: '%s'\n", opt->sampledev_file_);
-  printf("sampledevs: \n");
-  key_value_storage_print(&opt->sampledevs_, "  '", "' -> '", "'\n");
-  printf("autosampledevs: \n");
-  key_value_storage_print(&opt->autosampledevs_, "  '", "' -> '", "'\n");
-}
diff --git a/powersensordaemon/options.h b/powersensordaemon/options.h
deleted file mode 100644 (file)
index 8ca8d3f..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- *  powersensordaemon
- *
- *  Copyright (C) 2009 Christian Pointner <equinox@spreadspace.org>
- *
- *  This file is part of powersensordaemon.
- *
- *  powersensordaemon is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  powersensordaemon is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with powersensordaemon. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef POWERSENSORDAEMON_options_h_INCLUDED
-#define POWERSENSORDAEMON_options_h_INCLUDED
-
-#include "string_list.h"
-#include "key_value_storage.h"
-
-struct options_struct {
-  char* progname_;
-  int daemonize_;
-  char* username_;
-  char* groupname_;
-  char* chroot_dir_;
-  char* pid_file_;
-  string_list_t log_targets_;
-
-  char* tty_dev_;
-  char* command_sock_;
-  char* powerid_file_;
-  key_value_storage_t powerids_;
-  char* sampledev_file_;
-  key_value_storage_t sampledevs_;
-  key_value_storage_t autosampledevs_;
-};
-typedef struct options_struct options_t;
-
-int options_parse_hex_string(const char* hex, buffer_t* buffer);
-
-int options_parse(options_t* opt, int argc, char* argv[]);
-int options_parse_key_value_file(const char* filename, key_value_storage_t* storage);
-int options_parse_post(options_t* opt);
-void options_default(options_t* opt);
-void options_clear(options_t* opt);
-void options_print_usage();
-void options_print(options_t* opt);
-
-#endif
diff --git a/powersensordaemon/powerids.txt b/powersensordaemon/powerids.txt
deleted file mode 100644 (file)
index 3d29fa5..0000000
Binary files a/powersensordaemon/powerids.txt and /dev/null differ
diff --git a/powersensordaemon/powersensordaemon.c b/powersensordaemon/powersensordaemon.c
deleted file mode 100644 (file)
index 133533e..0000000
+++ /dev/null
@@ -1,771 +0,0 @@
-/*
- *  powersensordaemon
- *
- *  Copyright (C) 2009 Christian Pointner <equinox@spreadspace.org>
- *
- *  This file is part of powersensordaemon.
- *
- *  powersensordaemon is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  powersensordaemon is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with powersensordaemon. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "datatypes.h"
-
-#include <termios.h>
-#include <unistd.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-
-#include <sys/un.h>
-
-#include "log.h"
-#include "sig_handler.h"
-#include "options.h"
-
-#include "command_queue.h"
-#include "client_list.h"
-
-#include "daemon.h"
-
-#include "autosample.h"
-
-int init_command_socket(const char* path)
-{
-  int fd = socket(AF_UNIX, SOCK_STREAM, 0);
-  if(fd < 0) {
-    log_printf(ERROR, "unable to open socket: %s", strerror(errno));
-    return -1;
-  }
-
-  struct sockaddr_un local;
-  local.sun_family = AF_UNIX;
-  if(sizeof(local.sun_path) <= strlen(path)) {
-    log_printf(ERROR, "socket path is to long (max %d)", sizeof(local.sun_path)-1);
-    return -1;
-  }
-  strcpy(local.sun_path, path);
-  unlink(local.sun_path);
-  int len = SUN_LEN(&local);
-  int ret = bind(fd, (struct sockaddr*)&local, len);
-  if(ret) {
-    log_printf(ERROR, "unable to bind to '%s': %s", local.sun_path, strerror(errno));
-    return -1;
-  }
-  
-  ret = listen(fd, 4);
-  if(ret) {
-    log_printf(ERROR, "unable to listen on command socket: %s", local.sun_path, strerror(errno));
-    return -1;
-  }
-
-  log_printf(INFO, "now listening on %s for incoming commands", path);
-  
-  return fd;
-}
-
-void clear_fd(int fd)
-{
-  fd_set fds;
-  struct timeval tv;
-  FD_ZERO(&fds);
-  FD_SET(fd, &fds);
-  tv.tv_sec = 0;
-  tv.tv_usec = 50000;
-  for(;;) {
-    int ret = select(fd+1, &fds, NULL, NULL, &tv);
-    if(ret > 0) {
-      char buffer[100];
-      ret = read(fd, buffer, sizeof(buffer));
-    }
-    else
-      break;
-  }
-}
-
-int send_command(int tty_fd, cmd_t* cmd)
-{
-  if(!cmd)
-    return -1;
-  
-  if(!cmd->param)
-    return 0;
-
-  unsigned int j,cmd_param_len = strnlen(cmd->param,60);
-  char c[cmd_param_len];
-  switch(cmd->cmd) {
-  case POWER_ON: {
-    for (j=0; j< cmd_param_len; j++)
-      c[j] = toupper(cmd->param[j]);
-    break;
-  }
-  case POWER_OFF: {
-    for (j=0; j< cmd_param_len; j++)
-      c[j] = tolower(cmd->param[j]);
-    break;
-  }
-  case SAMPLE: {
-    for (j=0; j< cmd_param_len; j++)
-      c[j] = cmd->param[j];
-    break;
-  }
-  default: return 0;
-  }
-  
-  int ret;
-  do {
-    ret = write(tty_fd, c, cmd_param_len);
-  } while(!ret || (ret == -1 && errno == EINTR));
-
-  if(ret > 0) {
-    cmd_sent(cmd);
-    return 0;
-  }
-
-  return ret;
-}
-
-int send_response(int fd, const char* response)
-{
-  if(!response)
-    return -1;
-
-  int len = strlen(response);
-  int offset = 0;
-  int ret;
-  for(;;) {
-    ret = write(fd, &response[offset], len - offset);
-    if(ret < 0) {
-      if(errno != EINTR)
-        return ret;
-
-      ret = 0;
-    }
-
-    offset += ret;
-    if(offset+1 >= len)
-      break;
-  }
-  do {
-    ret = write(fd, "\n", 1);
-  } while(!ret || (ret == -1 && errno == EINTR));
-
-  if(ret > 0)
-    return 0;
-
-  return ret;
-}
-
-#define SEND_TO_LISTENER(LISTENER_TYPE, TYPE_NAME, FD, STRING)                        \
-      client_t* client;                                                               \
-      int listener_cnt = 0;                                                           \
-      for(client = client_lst; client; client = client->next)                         \
-        if(client->LISTENER_TYPE && client->fd != FD) {                               \
-          send_response(client->fd, STRING);                                          \
-          listener_cnt++;                                                             \
-        }                                                                             \
-      log_printf(DEBUG, "sent %s to %d additional listeners", TYPE_NAME,listener_cnt);
-  
-
-int process_cmd(char* cmd, int fd, cmd_t **cmd_q, client_t* client_lst, options_t* opt)
-{
-  log_printf(DEBUG, "processing command from %d", fd);
-
-  if(!cmd_q || !cmd)
-    return -1;
-  
-  cmd_id_t cmd_id;
-  if(!strncmp(cmd, "power on", 8)) {
-    cmd_id = POWER_ON;
-    cmd[5] = '_';
-  }
-  else if(!strncmp(cmd, "power off", 9)) {
-    cmd_id = POWER_OFF;
-    cmd[5] = '_';
-  }
-  else if(!strncmp(cmd, "sample", 6))
-    cmd_id = SAMPLE;
-  else if(!strncmp(cmd, "log", 3))
-    cmd_id = LOG;
-  else if(!strncmp(cmd, "listen", 6)) {
-    cmd_id = LISTEN;
-  }
-  else {
-    log_printf(WARNING, "unknown command '%s'", cmd);
-    return 0;
-  }
-  char* param = strchr(cmd, ' ');
-  if(param)
-    param++;
-
-  if(cmd_id == POWER_ON || cmd_id == POWER_OFF) {
-    char* orig_param = param;
-    param = key_value_storage_find(&(opt->powerids_), param);
-    if(!param) {
-      send_response(fd, "Error: invalid power id");
-      log_printf(WARNING, "invalid power id '%s' in command from %d", orig_param, fd);
-    }
-  }
-
-  if(cmd_id == SAMPLE) {
-    char* orig_param = param;
-    param = key_value_storage_find(&(opt->sampledevs_), param);
-    if(!param) {
-      send_response(fd, "Error: invalid sample device");
-      log_printf(WARNING, "invalid sample device '%s' in command from %d", orig_param, fd);
-    }
-  }
-
-  if(cmd_id == POWER_ON || cmd_id == POWER_OFF || cmd_id == SAMPLE) {
-    char* resp;
-    asprintf(&resp, "Request: %s", cmd);
-    if(resp) {
-      char* linefeed = strchr(resp, '\n');
-      if(linefeed) linefeed[0] = 0;
-      SEND_TO_LISTENER(request_listener, "request", fd, resp);
-      free(resp);
-    }
-// else silently ignore memory alloc error
-  }
-
-  switch(cmd_id) {
-  case POWER_ON:
-  case POWER_OFF:
-  case SAMPLE: {
-    int ret = cmd_push(cmd_q, fd, cmd_id, param);
-    if(ret)
-      return ret;
-
-    log_printf(NOTICE, "command: %s", cmd); 
-    break;
-  }
-  case LOG: {
-    if(param && param[0])
-      log_printf(NOTICE, "ext msg: %s", param); 
-    else
-      log_printf(DEBUG, "ignoring empty ext log message");
-    break;
-  }
-  case LISTEN: {
-    client_t* listener = client_find(client_lst, fd);
-    if(listener) {
-      if(!param || !strncmp(param, "all", 3)) {
-        listener->request_listener = 1;
-        listener->error_listener = 1;
-        listener->sensor_listener = 1;
-        listener->movement_listener = 1;
-        listener->button_listener = 1;
-      }
-      else if(!strncmp(param, "none", 4)) {
-        listener->request_listener = 0;
-        listener->error_listener = 0;
-        listener->sensor_listener = 0;
-        listener->movement_listener = 0;
-        listener->button_listener = 0;
-      }
-      else if(!strncmp(param, "request", 7))
-        listener->request_listener = 1;
-      else if(!strncmp(param, "error", 5))
-        listener->error_listener = 1;
-      else if(!strncmp(param, "sensor", 6))
-        listener->sensor_listener = 1;      
-      else if(!strncmp(param, "movement", 8))
-        listener->movement_listener = 1;      
-      else if(!strncmp(param, "button", 6))
-        listener->button_listener = 1;      
-      else {
-        log_printf(DEBUG, "unkown listener type '%s'", param);
-        break;
-      }
-      log_printf(DEBUG, "listener %d requests %s messages", fd, param ? param:"all");
-    }
-    else {
-      log_printf(ERROR, "unable to add listener %d", fd);
-    }
-    break;
-  }
-  }
-  
-  return 0;
-}
-
-int nonblock_readline(read_buffer_t* buffer, int fd, cmd_t** cmd_q, client_t* client_lst, options_t* opt)
-{
-  int ret = 0;
-  for(;;) {
-    ret = read(fd, &buffer->buf[buffer->offset], 1);
-    if(!ret || (ret == -1 && errno == EBADF))
-      return 2;
-    if(ret == -1 && (errno == EAGAIN || errno == EWOULDBLOCK))
-      return 0;
-    else if(ret < 0)
-      break;
-
-    if(buffer->buf[buffer->offset] == '\n') {
-      buffer->buf[buffer->offset] = 0;
-      ret = process_cmd(buffer->buf, fd, cmd_q, client_lst, opt);
-      buffer->offset = 0;
-      break;
-    }
-
-    buffer->offset++;
-    if(buffer->offset >= sizeof(buffer->buf)) {
-      log_printf(DEBUG, "string too long (fd=%d)", fd);
-      buffer->offset = 0;
-      return 0;
-    }
-  }
-
-  return ret;
-}
-
-int process_tty(read_buffer_t* buffer, int tty_fd, cmd_t **cmd_q, client_t* client_lst, options_t* opt)
-{
-  u_int8_t *response_data;
-  int ret = 0;
-  struct timeval tv;
-  fd_set fds;
-  FD_ZERO(&fds);
-  FD_SET(tty_fd, &fds);
-
-  for(;;) {
-    tv.tv_sec = 0;
-    tv.tv_usec = 0;
-    ret = select(tty_fd+1, &fds, NULL, NULL, &tv);
-    if(!ret)
-      return 0;
-    else if(ret < 0)
-      return ret;
-
-    ret = read(tty_fd, &buffer->buf[buffer->offset], 1);
-    if(!ret)
-      return 2;
-    if(ret == -1 && errno == EAGAIN)
-      return 0;
-    else if(ret < 0)
-      break;
-
-    if(buffer->buf[buffer->offset] == '\n') {
-      buffer->buf[buffer->offset] = 0;
-
-      if(buffer->offset > 0 && buffer->buf[buffer->offset-1] == '\r')
-        buffer->buf[buffer->offset-1] = 0;
-
-      log_printf(NOTICE, "firmware: %s", buffer->buf);      
-
-      /* modify response if necessary */
-      response_data = buffer->buf;
-      if(!strncmp(buffer->buf, "Sensor ", 7)) {
-        if (buffer->buf[7] != 0)
-        {
-          char *sampledev_key;
-          if (asprintf(&sampledev_key, "%c",buffer->buf[7]))
-          {
-            char const *sampledev_name = key_value_storage_find_first_stringvalue(&(opt->sampledevs_), sampledev_key);
-            if(sampledev_name)
-            {
-              char *rev_lookuped_output;
-              if (asprintf(&rev_lookuped_output, "%s%s", sampledev_name, &(buffer->buf[8]) ))
-                response_data = rev_lookuped_output;
-            }
-            else
-              log_printf(WARNING, "unknown sample device key '%s' encountered", sampledev_key);
-            free(sampledev_key);
-          }
-        }
-      }
-
-      int cmd_fd = -1;
-      if(cmd_q && (*cmd_q)) {
-        cmd_fd = (*cmd_q)->fd;
-        send_response(cmd_fd, response_data);
-      }
-      
-      if(!strncmp(buffer->buf, "Error:", 6)) {
-        SEND_TO_LISTENER(error_listener, "error", cmd_fd, response_data);
-      }
-      
-      if(!strncmp(buffer->buf, "movement", 8)) {
-        SEND_TO_LISTENER(movement_listener, "movement", cmd_fd, response_data);
-      }
-
-      if(!strncmp(buffer->buf, "PanicButton", 11)) {
-        SEND_TO_LISTENER(button_listener, "panic button", cmd_fd, response_data);
-      }
-
-      if(!strncmp(buffer->buf, "Sensor ", 7)) {
-        SEND_TO_LISTENER(sensor_listener, "sensor data", cmd_fd, response_data);
-      }
-
-      /* free allocated buffer if response was modified */
-      if (response_data != buffer->buf)
-        free(response_data);
-
-      cmd_pop(cmd_q);
-      buffer->offset = 0;
-      return 0;
-    }
-
-    buffer->offset++;
-    if(buffer->offset >= sizeof(buffer->buf)) {
-      log_printf(DEBUG, "string too long (fd=%d)", tty_fd);
-      buffer->offset = 0;
-      return 0;
-    }
-  }
-
-  return ret;
-}
-
-int main_loop(int tty_fd, int cmd_listen_fd, autosample_process_t* autosample, options_t* opt)
-{
-  log_printf(NOTICE, "entering main loop");
-
-  fd_set readfds, tmpfds;
-  FD_ZERO(&readfds);
-
-  clear_fd(tty_fd);
-  FD_SET(tty_fd, &readfds);
-  FD_SET(cmd_listen_fd, &readfds);
-  int max_fd = tty_fd > cmd_listen_fd ? tty_fd : cmd_listen_fd;
-
-  u_int8_t autosample_enabled = 0;
-  if(autosample->pid_ > 0) {
-    clear_fd(autosample->write_fd_);
-    FD_SET(autosample->write_fd_, &readfds);
-    max_fd = (max_fd < autosample->write_fd_) ? autosample->write_fd_ : max_fd;
-  }
-  cmd_t* cmd_q = NULL;
-  client_t* client_lst = NULL;
-
-  read_buffer_t tty_buffer;
-  tty_buffer.offset = 0;
-  read_buffer_t autosample_buffer;
-  autosample_buffer.offset = 0;
-
-  int sig_fd = signal_init();
-  if(sig_fd < 0)
-    return -1;
-  FD_SET(sig_fd, &readfds);
-  max_fd = (max_fd < sig_fd) ? sig_fd : max_fd;
-
-  struct timeval timeout;
-  int return_value = 0;
-  while(!return_value) {
-    memcpy(&tmpfds, &readfds, sizeof(tmpfds));
-
-    timeout.tv_sec = 0;
-    timeout.tv_usec = 200000;
-    int ret = select(max_fd+1, &tmpfds, NULL, NULL, &timeout);
-    if(ret == -1 && errno != EINTR) {
-      log_printf(ERROR, "select returned with error: %s", strerror(errno));
-      return_value = -1;
-      break;
-    }
-    if(ret == -1)
-      continue;
-    if(!ret) {
-      if(cmd_q && cmd_has_expired(*cmd_q)) {
-        log_printf(ERROR, "last command expired");
-        cmd_pop(&cmd_q);
-      }
-      else
-        continue;
-    }
-
-    if(FD_ISSET(sig_fd, &tmpfds)) {
-      if(signal_handle()) {
-        return_value = 1;
-        break;
-      }
-    }
-   
-    if(FD_ISSET(tty_fd, &tmpfds)) {
-      return_value = process_tty(&tty_buffer, tty_fd, &cmd_q, client_lst, opt);
-      if(return_value)
-        break;
-    }
-
-    if(FD_ISSET(cmd_listen_fd, &tmpfds)) {
-      int new_fd = accept(cmd_listen_fd, NULL, NULL);
-      if(new_fd < 0) {
-        log_printf(ERROR, "accept returned with error: %s", strerror(errno));
-        return_value = -1;
-        break;
-      }  
-      log_printf(DEBUG, "new command connection (fd=%d)", new_fd);
-      FD_SET(new_fd, &readfds);
-      max_fd = (max_fd < new_fd) ? new_fd : max_fd;
-      fcntl(new_fd, F_SETFL, O_NONBLOCK);
-      client_add(&client_lst, new_fd);
-    }
-
-    if(autosample->pid_ > 0 && FD_ISSET(autosample->write_fd_, &tmpfds)) {
-      return_value = nonblock_readline(&autosample_buffer, autosample->write_fd_, &cmd_q, client_lst, opt);
-      if(return_value == 2) {
-        log_printf(WARNING, "autosample not running, removing pipe to it");
-        FD_CLR(autosample->write_fd_, &readfds);
-        return_value = 0;
-        continue;
-      }
-      if(return_value)
-        break;
-    }
-
-    client_t* lst = client_lst;
-    while(lst) {
-      if(FD_ISSET(lst->fd, &tmpfds)) {
-        return_value = nonblock_readline(&(lst->buffer), lst->fd, &cmd_q, client_lst, opt);
-        if(return_value == 2) {
-          log_printf(DEBUG, "removing closed command connection (fd=%d)", lst->fd);
-          client_t* deletee = lst;
-          lst = lst->next;
-          FD_CLR(deletee->fd, &readfds);
-          client_remove(&client_lst, deletee->fd);
-          return_value = 0;
-          continue;
-        }
-        if(return_value)
-          break;
-
-      }
-      if(lst)
-        lst = lst->next;
-    }
-
-    if(cmd_q && !cmd_q->sent)
-      send_command(tty_fd, cmd_q);
-
-    if(autosample->pid_ > 0) {
-      lst = client_lst;
-      int listener_cnt = 0;
-      while(lst) {
-        if(lst->sensor_listener)
-          listener_cnt++;
-        lst = lst->next;
-      }
-      if((!autosample_enabled && listener_cnt > 0) ||
-         (autosample_enabled && listener_cnt == 0)) {
-        if(autosample_enabled) autosample_enabled = 0;
-        else autosample_enabled = 1;
-        int ret;
-        do {
-          ret = write(autosample->read_fd_, &autosample_enabled, 1);
-        } while(!ret || (ret == -1 && errno == EINTR));
-      }
-    }
-  }
-
-  cmd_clear(&cmd_q);
-  client_clear(&client_lst);
-  signal_stop();
-  return return_value;
-}
-
-int setup_tty(int fd)
-{
-  struct termios tmio;
-  
-  int ret = tcgetattr(fd, &tmio);
-  if(ret) {
-    log_printf(ERROR, "Error on tcgetattr(): %s", strerror(errno));
-    return ret;
-  }
-
-  ret = cfsetospeed(&tmio, B9600);
-  if(ret) {
-    log_printf(ERROR, "Error on cfsetospeed(): %s", strerror(errno));
-    return ret;
-  }
-
-  ret = cfsetispeed(&tmio, B9600);
-  if(ret) {
-    log_printf(ERROR, "Error on cfsetispeed(): %s", strerror(errno));
-    return ret;
-  }
-
-  tmio.c_lflag &= ~ECHO;
-
-  ret = tcsetattr(fd, TCSANOW, &tmio);
-  if(ret) {
-    log_printf(ERROR, "Error on tcsetattr(): %s", strerror(errno));
-    return ret;
-  }
-  
-  ret = tcflush(fd, TCIFLUSH);
-  if(ret) {
-    log_printf(ERROR, "Error on tcflush(): %s", strerror(errno));
-    return ret;
-  }
-
-  clear_fd(fd);
-
-  return 0;
-}
-
-int main(int argc, char* argv[])
-{
-  log_init();
-
-  options_t opt;
-  int ret = options_parse(&opt, argc, argv);
-  if(ret) {
-    if(ret > 0) {
-      fprintf(stderr, "syntax error near: %s\n\n", argv[ret]);
-    }
-    if(ret == -2) {
-      fprintf(stderr, "memory error on options_parse, exiting\n");
-    }
-
-    if(ret != -2)
-      options_print_usage();
-
-    options_clear(&opt);
-    log_close();
-    exit(ret);
-  }
-  string_list_element_t* tmp = opt.log_targets_.first_;
-  if(!tmp) {
-    log_add_target("syslog:3,powersensordaemon,daemon");
-  }
-  else {
-    while(tmp) {
-      ret = log_add_target(tmp->string_);
-      if(ret) {
-        switch(ret) {
-        case -2: fprintf(stderr, "memory error on log_add_target, exitting\n"); break;
-        case -3: fprintf(stderr, "unknown log target: '%s', exitting\n", tmp->string_); break;
-        case -4: fprintf(stderr, "this log target is only allowed once: '%s', exitting\n", tmp->string_); break;
-        default: fprintf(stderr, "syntax error near: '%s', exitting\n", tmp->string_); break;
-        }
-        
-        options_clear(&opt);
-        log_close();
-        exit(ret);
-      }
-      tmp = tmp->next_;
-    }
-  }
-  log_printf(NOTICE, "just started...");
-  if(options_parse_post(&opt)) {
-    options_clear(&opt);
-    log_close();
-    exit(-1);
-  }
-
-  priv_info_t priv;
-  if(opt.username_)
-    if(priv_init(&priv, opt.username_, opt.groupname_)) {
-      options_clear(&opt);
-      log_close();
-      exit(-1);
-    }
-
-  FILE* pid_file = NULL;
-  if(opt.pid_file_) {
-    pid_file = fopen(opt.pid_file_, "w");
-    if(!pid_file) {
-      log_printf(WARNING, "unable to open pid file: %s", strerror(errno));
-    }
-  }
-
-  if(opt.chroot_dir_)
-    if(do_chroot(opt.chroot_dir_)) {
-      options_clear(&opt);
-      log_close();
-      exit(-1);
-    }
-  if(opt.username_)
-    if(priv_drop(&priv)) {
-      options_clear(&opt);
-      log_close();
-      exit(-1);
-    }
-
-  if(opt.daemonize_) {
-    pid_t oldpid = getpid();
-    daemonize();
-    log_printf(INFO, "running in background now (old pid: %d)", oldpid);
-  }
-
-  if(pid_file) {
-    pid_t pid = getpid();
-    fprintf(pid_file, "%d", pid);
-    fclose(pid_file);
-  }
-  
-  autosample_process_t autosample;
-  autosample.pid_ = -1;
-  autosample.write_fd_ = -1;
-  autosample.read_fd_ = -1;
-  if(key_value_storage_length(&opt.autosampledevs_) > 0) {
-    log_printf(NOTICE, "starting autosample process");
-    int ret = start_autosample_process(&opt, &autosample);
-    if(ret == -1) {
-      options_clear(&opt);
-      log_close();
-      exit(1);
-    }
-  }
-
-  int cmd_listen_fd = init_command_socket(opt.command_sock_);
-  if(cmd_listen_fd < 0) {
-    options_clear(&opt);
-    log_close();
-    exit(-1);
-  }
-  
-  int tty_fd = 0;
-  for(;;) {
-    tty_fd = open(opt.tty_dev_, O_RDWR | O_NOCTTY);
-    if(tty_fd < 0)
-      ret = 2;
-    else {
-      ret = setup_tty(tty_fd);
-      if(ret)
-        ret = 2;
-      else
-        ret = main_loop(tty_fd, cmd_listen_fd, &autosample, &opt);
-    }
-
-    if(ret == 2) {
-      log_printf(ERROR, "%s error, trying to reopen in 5 seconds..", opt.tty_dev_);
-      if(tty_fd > 0)
-        close(tty_fd);
-      sleep(5);
-    }
-    else
-      break;
-  }
-
-  close(cmd_listen_fd);
-  if(tty_fd > 0)
-    close(tty_fd);
-  if(autosample.pid_ > 0)
-    kill(autosample.pid_, SIGTERM);
-
-  if(!ret)
-    log_printf(NOTICE, "normal shutdown");
-  else if(ret < 0)
-    log_printf(NOTICE, "shutdown after error");
-  else
-    log_printf(NOTICE, "shutdown after signal");
-
-  options_clear(&opt);
-  log_close();
-
-  return ret;
-}
diff --git a/powersensordaemon/rx-v396-remote.png b/powersensordaemon/rx-v396-remote.png
deleted file mode 100644 (file)
index 3293325..0000000
Binary files a/powersensordaemon/rx-v396-remote.png and /dev/null differ
diff --git a/powersensordaemon/sampledev.txt b/powersensordaemon/sampledev.txt
deleted file mode 100644 (file)
index 021a74a..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-temp0     *
-photo0    ?
diff --git a/powersensordaemon/sig_handler.c b/powersensordaemon/sig_handler.c
deleted file mode 100644 (file)
index 55fe556..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- *  uAnytun
- *
- *  uAnytun is a tiny implementation of SATP. Unlike Anytun which is a full
- *  featured implementation uAnytun has no support for multiple connections
- *  or synchronisation. It is a small single threaded implementation intended
- *  to act as a client on small platforms.
- *  The secure anycast tunneling protocol (satp) defines a protocol used
- *  for communication between any combination of unicast and anycast
- *  tunnel endpoints.  It has less protocol overhead than IPSec in Tunnel
- *  mode and allows tunneling of every ETHER TYPE protocol (e.g.
- *  ethernet, ip, arp ...). satp directly includes cryptography and
- *  message authentication based on the methodes used by SRTP.  It is
- *  intended to deliver a generic, scaleable and secure solution for
- *  tunneling and relaying of packets of any protocol.
- *  
- *
- *  Copyright (C) 2007-2008 Christian Pointner <equinox@anytun.org>
- *
- *  This file is part of uAnytun.
- *
- *  uAnytun is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  uAnytun is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with uAnytun. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "datatypes.h"
-
-#include "log.h"
-#include <signal.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/select.h>
-#include <errno.h>
-
-#include "sig_handler.h"
-
-#include <stdio.h>
-
-
-static int sig_pipe_fds[2];
-
-
-static void sig_handler(int sig)
-{
-  sigset_t set;
-  int ret = read(sig_pipe_fds[0], &set, sizeof(sigset_t));
-  if(ret != sizeof(sigset_t))
-    sigemptyset(&set);
-
-  sigaddset(&set, sig);
-  ret = write(sig_pipe_fds[1], &set, sizeof(sigset_t));
-}
-
-
-int signal_init()
-{
-  if(pipe(sig_pipe_fds)) {
-    log_printf(ERROR, "signal handling init failed (pipe error: %s)", strerror(errno));
-    return -1;
-  }
-
-  int i;
-  for(i=0; i<2; ++i) {
-    int fd_flags = fcntl(sig_pipe_fds[i], F_GETFL);
-    if(fd_flags == -1) {
-      log_printf(ERROR, "signal handling init failed (pipe fd[%d] read flags error: %s)", i, strerror(errno));
-      return -1;
-    }
-    if(fcntl(sig_pipe_fds[i], F_SETFL, fd_flags | O_NONBLOCK) == -1){
-      log_printf(ERROR, "signal handling init failed (pipe fd[%d] write flags error: %s)", i, strerror(errno));
-      return -1;
-    }
-  }
-
-  struct sigaction act, ign;
-  act.sa_handler = sig_handler;
-  sigfillset(&act.sa_mask);
-  act.sa_flags = 0;
-  ign.sa_handler = SIG_IGN;
-  sigfillset(&ign.sa_mask);
-  ign.sa_flags = 0;
-
-  if((sigaction(SIGINT, &act, NULL) < 0) ||
-     (sigaction(SIGQUIT, &act, NULL) < 0) ||
-     (sigaction(SIGTERM, &act, NULL) < 0) ||
-     (sigaction(SIGHUP, &act, NULL) < 0) ||
-     (sigaction(SIGUSR1, &act, NULL) < 0) ||
-     (sigaction(SIGUSR2, &act, NULL) < 0) ||
-     (sigaction(SIGCHLD, &ign, NULL) < 0) ||
-     (sigaction(SIGPIPE, &ign, NULL) < 0)) {
-
-    log_printf(ERROR, "signal handling init failed (sigaction error: %s)", strerror(errno));
-    close(sig_pipe_fds[0]);
-    close(sig_pipe_fds[1]);
-  }
-
-  return sig_pipe_fds[0];
-}
-
-int signal_handle()
-{
-  sigset_t set, oldset, tmpset;
-
-  sigemptyset(&tmpset);
-  sigaddset(&tmpset, SIGINT);
-  sigaddset(&tmpset, SIGQUIT);
-  sigaddset(&tmpset, SIGTERM);
-  sigaddset(&tmpset, SIGHUP);
-  sigaddset(&tmpset, SIGUSR1);
-  sigaddset(&tmpset, SIGUSR2);
-  sigprocmask(SIG_BLOCK, &tmpset, &oldset);
-
-  int ret = read(sig_pipe_fds[0], &set, sizeof(sigset_t));
-  if(ret != sizeof(sigset_t))
-    sigemptyset(&set);
-
-  int return_value = 0;
-  int sig;
-  for(sig=1; sig < NSIG; ++sig) {
-    if(sigismember(&set, sig)) {
-      switch(sig) {
-      case SIGINT: log_printf(NOTICE, "SIG-Int caught, exitting"); return_value = 1; break;
-      case SIGQUIT: log_printf(NOTICE, "SIG-Quit caught, exitting"); return_value = 1; break;
-      case SIGTERM: log_printf(NOTICE, "SIG-Term caught, exitting"); return_value = 1; break;
-      case SIGHUP: log_printf(NOTICE, "SIG-Hup caught"); break;
-      case SIGUSR1: log_printf(NOTICE, "SIG-Usr1 caught"); break;
-      case SIGUSR2: log_printf(NOTICE, "SIG-Usr2 caught"); break;
-      default: log_printf(WARNING, "unknown signal %d caught, ignoring", sig); break;
-      }
-      sigdelset(&set, sig);
-    }
-  }
-
-  sigprocmask(SIG_SETMASK, &oldset, NULL);
-  return return_value;
-}
-
-void signal_stop()
-{
-  struct sigaction act;
-  act.sa_handler = SIG_DFL;
-  sigemptyset(&act.sa_mask);
-  act.sa_flags = 0;
-
-  sigaction(SIGINT, &act, NULL);
-  sigaction(SIGQUIT, &act, NULL);
-  sigaction(SIGTERM, &act, NULL);
-  sigaction(SIGHUP, &act, NULL);
-  sigaction(SIGUSR1, &act, NULL);
-  sigaction(SIGUSR2, &act, NULL);
-  sigaction(SIGPIPE, &act, NULL);
-  sigaction(SIGCHLD, &act, NULL);
-
-  close(sig_pipe_fds[0]);
-  close(sig_pipe_fds[1]);
-}
diff --git a/powersensordaemon/sig_handler.h b/powersensordaemon/sig_handler.h
deleted file mode 100644 (file)
index 1995e1a..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *  uAnytun
- *
- *  uAnytun is a tiny implementation of SATP. Unlike Anytun which is a full
- *  featured implementation uAnytun has no support for multiple connections
- *  or synchronisation. It is a small single threaded implementation intended
- *  to act as a client on small platforms.
- *  The secure anycast tunneling protocol (satp) defines a protocol used
- *  for communication between any combination of unicast and anycast
- *  tunnel endpoints.  It has less protocol overhead than IPSec in Tunnel
- *  mode and allows tunneling of every ETHER TYPE protocol (e.g.
- *  ethernet, ip, arp ...). satp directly includes cryptography and
- *  message authentication based on the methodes used by SRTP.  It is
- *  intended to deliver a generic, scaleable and secure solution for
- *  tunneling and relaying of packets of any protocol.
- *  
- *
- *  Copyright (C) 2007-2008 Christian Pointner <equinox@anytun.org>
- *
- *  This file is part of uAnytun.
- *
- *  uAnytun is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  uAnytun is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with uAnytun. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef UANYTUN_sig_handler_h_INCLUDED
-#define UANYTUN_sig_handler_h_INCLUDED
-
-int signal_init();
-int signal_handle();
-void signal_stop();
-
-#endif
diff --git a/powersensordaemon/string_list.c b/powersensordaemon/string_list.c
deleted file mode 100644 (file)
index a4f4ab8..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- *  uAnytun
- *
- *  uAnytun is a tiny implementation of SATP. Unlike Anytun which is a full
- *  featured implementation uAnytun has no support for multiple connections
- *  or synchronisation. It is a small single threaded implementation intended
- *  to act as a client on small platforms.
- *  The secure anycast tunneling protocol (satp) defines a protocol used
- *  for communication between any combination of unicast and anycast
- *  tunnel endpoints.  It has less protocol overhead than IPSec in Tunnel
- *  mode and allows tunneling of every ETHER TYPE protocol (e.g.
- *  ethernet, ip, arp ...). satp directly includes cryptography and
- *  message authentication based on the methodes used by SRTP.  It is
- *  intended to deliver a generic, scaleable and secure solution for
- *  tunneling and relaying of packets of any protocol.
- *  
- *
- *  Copyright (C) 2007-2008 Christian Pointner <equinox@anytun.org>
- *
- *  This file is part of uAnytun.
- *
- *  uAnytun is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  uAnytun is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with uAnytun. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "string_list.h"
-
-void string_list_init(string_list_t* list)
-{
-  if(!list)
-    return;
-  
-  list->first_ = NULL;
-}
-
-void string_list_clear(string_list_t* list)
-{
-  if(!list)
-    return;
-
-  while(list->first_) {
-    string_list_element_t* tmp;
-    tmp = list->first_;
-    list->first_ = tmp->next_;
-    if(tmp->string_)
-      free(tmp->string_);
-    free(tmp);
-  }
-}
-
-int string_list_add(string_list_t* list, const char* string)
-{
-  if(!list)
-    return -1;
-
-  if(!list->first_) {
-    list->first_ = malloc(sizeof(string_list_element_t));
-    if(!list->first_)
-      return -2;
-
-    list->first_->next_ = 0;
-    list->first_->string_ = strdup(string);
-    if(!list->first_->string_) {
-      free(list->first_);
-      list->first_ = NULL;
-      return -2;
-    }
-  }
-  else {
-    string_list_element_t* tmp = list->first_;
-    while(tmp->next_)
-      tmp = tmp->next_;
-
-    tmp->next_  = malloc(sizeof(string_list_element_t));
-    if(!tmp->next_)
-      return -2;
-
-    tmp->next_->next_ = 0;
-    tmp->next_->string_ = strdup(string);
-    if(!tmp->next_->string_) {
-      free(tmp->next_);
-      tmp->next_ = NULL;
-      return -2;
-    }
-  }
-  return 0;
-}
-
-void string_list_print(string_list_t* list, const char* head, const char* tail)
-{
-  if(!list)
-    return;
-  
-  string_list_element_t* tmp = list->first_;
-  while(tmp) {
-    printf("%s%s%s", head, tmp->string_, tail);
-    tmp = tmp->next_;
-  }
-}
diff --git a/powersensordaemon/string_list.h b/powersensordaemon/string_list.h
deleted file mode 100644 (file)
index cd054cb..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *  uAnytun
- *
- *  uAnytun is a tiny implementation of SATP. Unlike Anytun which is a full
- *  featured implementation uAnytun has no support for multiple connections
- *  or synchronisation. It is a small single threaded implementation intended
- *  to act as a client on small platforms.
- *  The secure anycast tunneling protocol (satp) defines a protocol used
- *  for communication between any combination of unicast and anycast
- *  tunnel endpoints.  It has less protocol overhead than IPSec in Tunnel
- *  mode and allows tunneling of every ETHER TYPE protocol (e.g.
- *  ethernet, ip, arp ...). satp directly includes cryptography and
- *  message authentication based on the methodes used by SRTP.  It is
- *  intended to deliver a generic, scaleable and secure solution for
- *  tunneling and relaying of packets of any protocol.
- *  
- *
- *  Copyright (C) 2007-2008 Christian Pointner <equinox@anytun.org>
- *
- *  This file is part of uAnytun.
- *
- *  uAnytun is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  any later version.
- *
- *  uAnytun is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with uAnytun. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef UANYTUN_string_list_h_INCLUDED
-#define UANYTUN_string_list_h_INCLUDED
-
-struct string_list_element_struct {
-  char* string_;
-  struct string_list_element_struct* next_;
-};
-typedef struct string_list_element_struct string_list_element_t;
-
-struct string_list_struct {
-  string_list_element_t* first_;
-};
-typedef struct string_list_struct string_list_t;
-
-void string_list_init(string_list_t* list);
-void string_list_clear(string_list_t* list);
-int string_list_add(string_list_t* list, const char* string);
-
-void string_list_print(string_list_t* list, const char* head, const char* tail);
-
-#endif
diff --git a/powersensordaemon/switch.cgi b/powersensordaemon/switch.cgi
deleted file mode 100755 (executable)
index c10c5fa..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-#!/bin/sh
-
-for QUERY in `echo $QUERY_STRING | tr '&' ' '`; do
-  for VALUE in `echo $QUERY | tr '=' ' '`; do
-    if [ "$VALUE" == "id" ]; then
-      ID='?'
-    elif [ "$ID" == "?" ]; then
-      ID=$VALUE
-    elif [ "$VALUE" == "power" ]; then
-      POWER='?'
-    elif [ "$POWER" == "?" ]; then
-      POWER=$VALUE
-    elif [ "$VALUE" == "mobile" ]; then
-      MOBILE='1'
-      NOFLOAT='1'
-    elif [ "$VALUE" == "nofloat" ]; then
-      NOFLOAT='1'
-    fi
-    i=$i+1
-  done
-done
-
-
-UNIXSOCK=/var/run/powersensordaemon/cmd.sock
-VALID_ONOFF_IDS="regalleinwand labortisch bluebar couchred couchwhite all lichter ambientlights cxleds mashadecke boiler"
-VALID_SEND_IDS_CUSTOM_DISPLAY="ymhpoweroff ymhpower ymhvolup ymhvoldown"
-VALID_SEND_IDS="ymhpoweron ymhcd ymhwdtv ymhtuner ymhaux ymhsattv ymhvolmute ymhmenu ymhplus ymhminus ymhtest ymhtimelevel ymheffect ymhprgup ymhprgdown ymhtunplus ymhtunminus ymhtunabcde ymhtape ymhvcr ymhextdec ymhsleep ymhp5 panicled blueled moviemode"
-#VALID_BANSHEE_IDS="playPause next prev"
-#VALID_CAM_MOTOR_IDS="c C w W"
-
-[ "$POWER" == "send" ] && POWER=on
-if [ "$POWER" == "on" -o "$POWER" == "off" ]; then
-  for CHECKID in $VALID_ONOFF_IDS $VALID_SEND_IDS $VALID_SEND_IDS_CUSTOM_DISPLAY; do 
-    if [ "$CHECKID" == "$ID" ]; then
-      echo "power $POWER $ID" | usocket $UNIXSOCK
-      echo "Content-type: text/html"
-      echo ""
-      echo "<html>"
-      echo "<head>"
-      echo "<title>Realraum rf433ctl</title>"
-      echo '<script type="text/javascript">window.location="http://slug.realraum.at/cgi-bin/switch.cgi";</script>'
-      echo "</head></html>"
-      exit 0
-    fi
-  done
-
-  for CHECKID in $VALID_BANSHEE_IDS; do
-    if [ "$CHECKID" == "$ID" ]; then
-      echo "$ID/" | nc wuerfel.realraum.at 8484
-      echo "Content-type: text/html"
-      echo ""
-      echo "<html>"
-      echo "<head>"
-      echo "<title>Realraum rf433ctl</title>"
-      echo '<script type="text/javascript">window.location="http://slug.realraum.at/cgi-bin/switch.cgi";</script>'
-      echo "</head></html>"
-      exit 0
-    fi
-  done
-
-  for CHECKID in $VALID_CAM_MOTOR_IDS; do
-    if [ "$CHECKID" == "$ID" ]; then
-      echo "$ID" > /dev/ttyACM0
-      echo "Content-type: text/html"
-      echo ""
-      echo "<html>"
-      echo "<head>"
-      echo "<title>Realraum rf433ctl</title>"
-      echo '<script type="text/javascript">window.location="http://slug.realraum.at/cgi-bin/switch.cgi";</script>'
-      echo "</head></html>"
-      exit 0
-    fi
-  done
-fi
-
-DESC_regalleinwand="LEDs Regal Leinwand"
-DESC_bluebar="Blaue LEDs Bar"
-DESC_labortisch="Labortisch"
-DESC_couchred="LEDs Couch Red"
-DESC_couchwhite="LEDS Couch White"
-DESC_cxleds="CX Leds"
-DESC_mashadecke="MaSha Decke"
-DESC_ambientlights="Ambient Lichter"
-DESC_boiler="Warmwasser K&uuml;che"
-DESC_lichter="Alle Lichter"
-DESC_all="Alles"
-DESC_ymhpoweron="Receiver On (off+tgl)"
-DESC_ymhpoweroff="Receiver Off"
-DESC_ymhpower="Receiver On/Off"
-DESC_ymhvolup="VolumeUp"
-DESC_ymhvoldown="VolumeDown"
-DESC_ymhcd="Input CD"
-DESC_ymhwdtv="Input S/PDIF Wuerfel"
-DESC_ymhtuner="Input Tuner"
-DESC_ymhvolmute="Mute"
-DESC_ymhmenu="Menu"
-DESC_ymhplus="+"
-DESC_ymhminus="-"
-DESC_ymhtest="Test"
-DESC_ymhtimelevel="Time/Levels"
-DESC_ymheffect="DSP Effect Toggle"
-DESC_ymhprgup="DSP Up"
-DESC_ymhprgdown="DSP Down"
-DESC_ymhtunplus="Tuner +"
-DESC_ymhtunminus="Tuner -"
-DESC_ymhtunabcde="Tuner ABCDE"
-DESC_ymhtape="Tape"
-DESC_ymhvcr="VCR"
-DESC_ymhextdec="ExtDec Toggle"
-DESC_seep="Sleep Modus"
-DESC_panicled="HAL9000 says hi"
-DESC_blueled="Blue Led"
-DESC_moviemode="Movie Mode"
-DESC_w="Cam >"
-DESC_W="Cam >>"
-DESC_c="Cam <"
-DESC_C="Cam <<"
-
-echo "Content-type: text/html"
-echo ""
-echo "<html>"
-echo "<head>"
-echo "<title>Realraum rf433ctl</title>"
-echo '<script type="text/javascript">'
-echo 'function sendButton( onoff, btn )'
-echo '{'
-echo ' var req = new XMLHttpRequest();'
-echo ' url = "http://slug.realraum.at/cgi-bin/switch.cgi?power="+onoff+"&id="+btn;'
-echo ' req.open("GET", url ,false);'
-echo ' //google chrome workaround'
-echo ' req.setRequestHeader("googlechromefix","");'
-echo ' req.send(null);'
-echo '}'
-[ "$NOFLOAT" == "1" ] && tail -n+6 /www/ymhremote.html | head -n 58
-echo '</script>'
-[ "$NOFLOAT" == "1" ] && tail -n+67 /www/ymhremote.html | head -n 37
-echo '<style>'
-echo 'div.switchbox {'
-echo '    float:left;'
-echo '    margin:2px;'
-#echo '    max-width:236px;'
-echo '    max-width:300px;'
-echo '    font-size:10pt;'
-echo '    border:1px solid black;'
-#echo '    height: 32px;'
-echo '    padding:0;'
-echo '}'
-  
-echo 'div.switchnameleft {'
-echo '    width:12em; display:inline-block; vertical-align:middle; margin-left:3px;'
-echo '}'
-
-echo 'span.alignbuttonsright {'
-echo '    top:0px; float:right; display:inline-block; text-align:right; padding:0;'
-echo '}'
-
-echo 'div.switchnameright {'
-echo '    width:12em; display:inline-block; vertical-align:middle; float:right; display:inline-block; margin-left:1ex; margin-right:3px; margin-top:3px; margin-bottom:3px;'
-echo '}'
-
-echo 'span.alignbuttonsleft {'
-echo '    float:left; text-align:left; padding:0;'
-echo '}'
-
-echo '.onbutton {'
-echo '    font-size:11pt;'
-echo '    width: 40px;'
-echo '    height: 32px;'
-echo '    background-color: lime;'
-echo '    margin: 0px;'
-echo '}'
-
-echo '.offbutton {'
-echo '    font-size:11pt;'
-echo '    width: 40px;'
-echo '    height: 32px;'
-echo '    background-color: red;'
-echo '    margin: 0px;'
-echo '}'
-
-echo '.sendbutton {'
-echo '    font-size:11pt;'
-echo '    width: 40px;'
-echo '    height: 32px;'
-#echo '    background-color: grey;'
-echo '    margin: 0px;'
-echo '}'
-echo '</style>'
-echo "</head>"
-echo "<body>"
-#echo "<h1>Realraum rf433ctl</h1>"
-#echo "<div style=\"float:left; border:1px solid black;\">"
-echo "<div style=\"float:left;\">"
-echo "<div style=\"float:left; border:1px solid black; margin-right:2ex; margin-bottom:2ex;\">"
-for DISPID in $VALID_ONOFF_IDS; do
-  NAME="$(eval echo \$DESC_$DISPID)"
-  [ -z "$NAME" ] && NAME=$DISPID
-
-echo "<div class=\"switchbox\">"
-  echo "<span class=\"alignbuttonsleft\">"
-  echo " <button class=\"onbutton\" onClick='sendButton(\"on\",\"$DISPID\");'>On</button>"
-  echo " <button class=\"offbutton\" onClick='sendButton(\"off\",\"$DISPID\");'>Off</button>"
-  echo "</span>"
-  echo "<div class=\"switchnameright\">$NAME</div>"
-  echo "</div>"
-  
-  if [ "$NOFLOAT" == "1" ]; then
-    echo "<br/>"
-  fi 
-done
-
-#Custom Buttons Start
-echo "<div class=\"switchbox\">"
-echo "<span class=\"alignbuttonsleft\">"
-echo " <button class=\"sendbutton\" onClick='sendButton(\"on\",\"ymhpower\");'>Tgl</button>"
-echo " <button class=\"offbutton\" onClick='sendButton(\"on\",\"ymhpoweroff\");'>Off</button>"
-echo "</span>"
-echo "<div class=\"switchnameright\">Receiver Power</div>"
-echo "</div>"
-  if [ "$NOFLOAT" == "1" ]; then
-    echo "<br/>"
-  fi 
-echo "<div class=\"switchbox\">"
-echo "<span class=\"alignbuttonsleft\">"
-echo " <button class=\"sendbutton\" onClick='sendButton(\"on\",\"ymhvolup\");'>&uarr;</button>"
-echo " <button class=\"sendbutton\" onClick='sendButton(\"on\",\"ymhvoldown\");'>&darr;</button>"
-echo "</span>"
-echo "<div class=\"switchnameright\">Receiver Volume</div>"
-echo "</div>"
-  if [ "$NOFLOAT" == "1" ]; then
-    echo "<br/>"
-  fi 
-#Custom Buttons End
-
-echo "</div>"
-
-if [ "$MOBILE" != "1" ]; then                                                             
-
-echo "<div style=\"float:left; border:1px solid black; margin-right:2ex; margin-bottom:2ex;\">"
-
-ITEMCOUNT=0
-
-for DISPID in $VALID_SEND_IDS; do
-  ITEMCOUNT=$((ITEMCOUNT+1))
-  NAME="$(eval echo \$DESC_$DISPID)"
-  [ -z "$NAME" ] && NAME=$DISPID
-  
-  echo "<div class=\"switchbox\">"
-  echo "<span class=\"alignbuttonsleft\">"
-  echo " <button class=\"sendbutton\" onClick='sendButton(\"on\",\"$DISPID\");'> </button>"
-  echo "</span>"
-  echo "<div class=\"switchnameright\">$NAME</div>"
-  echo "</div>"
-  if [ "$NOFLOAT" == "1" -a $((ITEMCOUNT % 2 )) -ne 1 ]; then
-    echo "<br/>"
-  fi 
-  
-done
-echo '<div class="switchbox">Goto <a href="/ymhremote.html">Yamaha Receiver Remote</a></div>'
-echo "</div>"
-
- if [ "$NOFLOAT" == "1" ]; then
-    echo "<div style=\"float:left; border:1px solid black;\">"
-    tail -n+107 /www/ymhremote.html | head -n 5
-    echo "</div>"
- fi 
-
-echo "<div style=\"float:left; border:1px solid black; margin-top:5px;\">"
-for DISPID in $VALID_BANSHEE_IDS $VALID_CAM_MOTOR_IDS; do
-  NAME="$(eval echo \$DESC_$DISPID)"
-  [ -z "$NAME" ] && NAME=$DISPID
-  
-  echo "<div class=\"switchbox\">"
-  echo "<span class=\"alignbuttonsleft\">"
-  echo " <button class=\"sendbutton\" onClick='sendButton(\"on\",\"$DISPID\");'> </button>"
-  echo "</span>"
-  echo "<div class=\"switchnameright\">$NAME</div>"
-  echo "</div>"
-  if [ "$NOFLOAT" == "1" ]; then
-    echo "<br/>"
-  fi 
-
-done
-echo "</div>"
-fi
-echo "</div>"
-echo "</body>"
-echo "</html>"
diff --git a/powersensordaemon/ymhremote.html b/powersensordaemon/ymhremote.html
deleted file mode 100755 (executable)
index 572e674..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-<html>
-<head>
-<title>Realraum Yamaha Remote</title>
-<script type="text/javascript">
-
-function sendYmhButton( btn )
-{
-  //alert(btn);
-  document.getElementById('indicator').style.backgroundColor="red";
-  document.getElementById('commandlabel').innerHTML=btn;
-  var req = new XMLHttpRequest();
-  url = "http://slug.realraum.at/cgi-bin/switch.cgi?power=send&id="+btn;
-  req.open("GET", url ,false);
-  //google chrome workaround
-  req.setRequestHeader("googlechromefix","");
-  req.send(null);
-  //response = req.responseText;
-  //document.getElementById('output').innerHTML = response; 
-  document.getElementById('indicator').style.backgroundColor="white";
-  document.getElementById('commandlabel').innerHTML='&nbsp;';
-}
-
-function remoteKeyboard( e )
-{
-       e = e || window.event;
-       switch( e.keyCode )
-       {
-               //case 81: sendYmhButton( ( e.altKey ? 'REBOOT' : 'w' ) ); break;       // ALT-Q = reboot, Q = Power
-               case 38: sendYmhButton( 'ymhprgup' ); break; //up
-               case 37: sendYmhButton( 'ymhminus' ); break; //left
-               //case 13: sendYmhButton( '' ); break;  //enter
-               case 39: sendYmhButton( 'ymhplus' ); break; //right
-               case 40: sendYmhButton( 'ymhprgdown' ); break; //down
-               //case  8: sendYmhButton( 'T_back' ); break; //backspace
-               //case 27: sendYmhButton( 't_stop' ); break;    // ESC
-               case 77: sendYmhButton( 'ymhmenu' ); break;     // M
-               case 84: sendYmhButton( 'ymhtimelevel' ); break;        // T
-               //case 32: sendYmhButton( '' ); break;  // Space
-               case 83: sendYmhButton( 'ymhsleep' ); break;            // S
-               case 36: sendYmhButton( 'ymhmute' ); break; //pos1        
-               case 33: sendYmhButton( 'ymhvolup' ); break;    // P = 80, PAGEUP = 33
-               case 43: sendYmhButton( 'ymhvolup' ); break;    // +
-               case 34: sendYmhButton( 'ymhvoldown' ); break;  // N = 78, PAGEDOWN = 34
-               case 45: sendYmhButton( 'ymhvoldown' ); break;  // -
-               case 46: sendYmhButton( 'ymhtunplus' ); break;  // .
-               case 44: sendYmhButton( 'ymhtunminus' ); break; // ,
-               case 59: sendYmhButton( 'ymhtunabcde' ); break; // ; 
-               case 69: sendYmhButton( 'ymheffect' ); break;   // E
-               case 80: sendYmhButton( 'ymhpower' ); break;    // P
-               case 48: sendYmhButton( 'ymhtest' ); break;     // 0
-               case 49: sendYmhButton( 'ymhcd' ); break;       // 1
-               case 50: sendYmhButton( 'ymhtuner' ); break;    // 2
-               case 51: sendYmhButton( 'ymhtape' ); break;     // 3
-               case 52: sendYmhButton( 'ymhwdtv' ); break;     // 4
-               case 53: sendYmhButton( 'ymhsattv' ); break;    // 5
-               case 54: sendYmhButton( 'ymhvcr' ); break;      // 6
-               case 55: sendYmhButton( 'ymh7' ); break;        // 7
-               case 56: sendYmhButton( 'ymhaux' ); break;      // 8
-               case 57: sendYmhButton( 'ymhextdec' ); break;   // 9
-       }
-}
-
-document.onkeydown = remoteKeyboard;
-
-
-</script>
-<map name="ymhremote">
-<area shape ="rect" coords ="57,36,121,59" onClick="sendYmhButton('ymhpower');"  />
-
-<area shape ="circle" coords ="36,98,17" onClick="sendYmhButton('ymhcd');" alt="ymhcd" />
-<area shape ="circle" coords ="88,98,17" onClick="sendYmhButton('ymhtuner');" alt="ymhtuner" />
-<area shape ="circle" coords ="142,98,17" onClick="sendYmhButton('ymhtape');" alt="ymhtape" />
-<area shape ="circle" coords ="36,145,17" onClick="sendYmhButton('ymhwdtv');" alt="ymhwdtv" />
-<area shape ="circle" coords ="88,145,17" onClick="sendYmhButton('ymhsattv');" alt="ymhsattv" />
-<area shape ="circle" coords ="142,145,17" onClick="sendYmhButton('ymhvcr');" alt="ymhvcr" />
-<area shape ="circle" coords ="36,192,17" onClick="sendYmhButton('ymh7');" alt="ymh7" />
-<area shape ="circle" coords ="88,192,17" onClick="sendYmhButton('ymhaux');" alt="ymhaux" />
-<area shape ="circle" coords ="142,192,17" onClick="sendYmhButton('ymhextdec');" alt="ymhextdec" />
-<area shape ="circle" coords ="36,240,17" onClick="sendYmhButton('ymhtest');" alt="ymhtest" />
-<area shape ="circle" coords ="88,240,17" onClick="sendYmhButton('ymhtunabcde');" alt="ymhtunabcde" />
-<area shape ="circle" coords ="142,240,17" onClick="sendYmhButton('ymheffect');" alt="ymheffect" />
-
-<!--area shape ="polygon" coords ="57,336,89,308,119,333,110,445,66,445" onClick="sendYmhButton('ymhtvlolup');" alt="ymhtvlolup" /-->
-<!--area shape ="polygon" coords ="57,418,66,407,110,407,119,418,89,445" onClick="sendYmhButton('ymhtvvoldown');"  alt="ymhtvvoldown"  /-->
-<area shape ="polygon" coords ="19,377,47,347,59,355,59,398,47,408" onClick="sendYmhButton('ymhvoldown');"  alt="ymhvoldown"  />
-<area shape ="polygon" coords ="118,355,129,346,158,377,130,408,118,398" onClick="sendYmhButton('ymhvolup');"  alt="ymhvolup"  />
-<area shape ="circle" coords ="89,377,16" onClick="sendYmhButton('ymhmute');" alt="ymhmute" />
-
-<area shape ="circle" coords ="36,455,17" onClick="sendYmhButton('ymhsleep');" alt="ymhsleep" />
-<area shape ="circle" coords ="142,455,17" onClick="sendYmhButton('ymhp5');" alt="ymhp5" />
-
-<area shape ="rect" coords ="18,278,67,301" onClick="sendYmhButton('ymhtunminus');"  />
-<area shape ="rect" coords ="111,278,160,301" onClick="sendYmhButton('ymhtunplus');"  />
-
-<area shape ="polygon" coords ="57,524,89,496,119,521,110,524,66,533" onClick="sendYmhButton('ymhprgup');" alt="ymhprgup" />
-<area shape ="polygon" coords ="57,606,66,595,110,595,119,606,89,634" onClick="sendYmhButton('ymhprgdown');"  alt="ymhprgdown"  />
-<area shape ="polygon" coords ="19,565,47,534,59,543,59,586,47,595" onClick="sendYmhButton('ymhminus');"  alt="ymhminus"  />
-<area shape ="polygon" coords ="118,543,129,534,158,565,130,595,118,586" onClick="sendYmhButton('ymhplus');"  alt="ymhplus"  />
-
-<area shape ="circle" coords ="36,634,17" onClick="sendYmhButton('ymhtimelevel');" alt="ymhtimelevel" />
-<area shape ="circle" coords ="142,634,17" onClick="sendYmhButton('ymhmenu');" alt="ymhmenu" />
-<!-- href ="./cgi-bin/switch.cgi" target ="_blank" -->
-</map>
-</head>
-<body>
-<center>
-<table border="0" cellspacing="0" cellpadding="0" width="180">
-<tr><td id="indicator" style="background-color:white; height:2px;"></td></tr>
-<tr><td><img src="/rx-v396-remote.png" width="180" height="714" usemap="#ymhremote" id="remoteimg" border="0" /></td></tr>
-</table>
-<p id="commandlabel" style="display:hidden; width:180px;">&nbsp;</p>
-</center>
-</body>
-</html>
diff --git a/reset_tty/Makefile b/reset_tty/Makefile
deleted file mode 100644 (file)
index d076402..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-
-TARGET=reset_tty
-
-all: reset_tty
-
-.PHONY: clean
-
-clean:
-       rm -f $(TARGET)
diff --git a/reset_tty/reset_tty.c b/reset_tty/reset_tty.c
deleted file mode 100644 (file)
index bf1c0a0..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-#include <stdlib.h>
-#include <termios.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <time.h>
-#include <stdio.h>
-#include <sys/select.h>
-
-#define STATE_OFF 0
-#define STATE_ON  1
-
-void setDTRState (int fd, int state) {
-  int flags;
-
-  ioctl(fd, TIOCMGET, &flags);
-  flags = (state == STATE_ON ? flags | TIOCM_DTR : flags & ~TIOCM_DTR);
-  ioctl(fd, TIOCMSET, &flags);
-}
-
-int
-main(int argc, char* argv[])
-{
-  char* device = argc < 2 ? "/dev/ttyUSB0" : argv[1];
-  int fd = open(device, O_RDWR);
-  if (fd == 0) {
-    fprintf(stderr, "Could not open %s\n", device);
-    return EXIT_FAILURE;
-  }
-  
-  setDTRState(fd, STATE_ON);
-  struct timeval sleeptime = {0, 100000}; // 100ms
-  select(0, NULL, NULL, NULL, &sleeptime);
-  setDTRState(fd, STATE_OFF);
-  sleeptime.tv_sec = 0;
-  sleeptime.tv_usec = 100000;
-  select(0, NULL, NULL, NULL, &sleeptime);
-  setDTRState(fd, STATE_ON);
-  close(fd);
-
-  return EXIT_SUCCESS;
-}
-
diff --git a/rf433ctl/DallasTemperature/DallasTemperature.cpp b/rf433ctl/DallasTemperature/DallasTemperature.cpp
deleted file mode 100644 (file)
index 4c1b3fd..0000000
+++ /dev/null
@@ -1,617 +0,0 @@
-// This library is free software; you can redistribute it and/or\r
-// modify it under the terms of the GNU Lesser General Public\r
-// License as published by the Free Software Foundation; either\r
-// version 2.1 of the License, or (at your option) any later version.\r
-\r
-#include "DallasTemperature.h"\r
-#include "Arduino.h"\r
-extern "C" {\r
-  \r
-}\r
-\r
-DallasTemperature::DallasTemperature(OneWire* _oneWire) \r
-  #if REQUIRESALARMS\r
-  : _AlarmHandler(&defaultAlarmHandler)\r
-  #endif\r
-{\r
-  _wire = _oneWire;\r
-  devices = 0;\r
-  parasite = false;\r
-  conversionDelay = TEMP_9_BIT;\r
-}\r
-\r
-// initialize the bus\r
-void DallasTemperature::begin(void)\r
-{\r
-  DeviceAddress deviceAddress;\r
-\r
-  _wire->reset_search();\r
-\r
-  while (_wire->search(deviceAddress))\r
-  {\r
-    if (validAddress(deviceAddress))\r
-    {      \r
-      if (!parasite && readPowerSupply(deviceAddress)) parasite = true;\r
-\r
-      ScratchPad scratchPad;\r
-\r
-      readScratchPad(deviceAddress, scratchPad);\r
-\r
-      if (deviceAddress[0] == DS18S20MODEL) conversionDelay = TEMP_12_BIT; // 750 ms\r
-      else if (scratchPad[CONFIGURATION] > conversionDelay) conversionDelay = scratchPad[CONFIGURATION];\r
-\r
-      devices++;\r
-    }\r
-  }\r
-}\r
-\r
-// returns the number of devices found on the bus\r
-uint8_t DallasTemperature::getDeviceCount(void)\r
-{\r
-  return devices;\r
-}\r
-\r
-// returns true if address is valid\r
-bool DallasTemperature::validAddress(uint8_t* deviceAddress)\r
-{\r
-  return (_wire->crc8(deviceAddress, 7) == deviceAddress[7]);\r
-}\r
-\r
-// finds an address at a given index on the bus\r
-// returns true if the device was found\r
-bool DallasTemperature::getAddress(uint8_t* deviceAddress, uint8_t index)\r
-{\r
-  uint8_t depth = 0;\r
-\r
-  _wire->reset_search();\r
-\r
-  while (depth <= index && _wire->search(deviceAddress))\r
-  {\r
-    if (depth == index && validAddress(deviceAddress)) return true;\r
-    depth++;\r
-  }\r
-\r
-  return false;\r
-}\r
-\r
-// attempt to determine if the device at the given address is connected to the bus\r
-bool DallasTemperature::isConnected(uint8_t* deviceAddress)\r
-{\r
-  ScratchPad scratchPad;\r
-  return isConnected(deviceAddress, scratchPad);\r
-}\r
-\r
-// attempt to determine if the device at the given address is connected to the bus\r
-// also allows for updating the read scratchpad\r
-bool DallasTemperature::isConnected(uint8_t* deviceAddress, uint8_t* scratchPad)\r
-{\r
-  readScratchPad(deviceAddress, scratchPad);\r
-  return (_wire->crc8(scratchPad, 8) == scratchPad[SCRATCHPAD_CRC]);\r
-}\r
-\r
-// read device's scratch pad\r
-void DallasTemperature::readScratchPad(uint8_t* deviceAddress, uint8_t* scratchPad)\r
-{\r
-  // send the command\r
-  _wire->reset();\r
-  _wire->select(deviceAddress);\r
-  _wire->write(READSCRATCH);\r
-\r
-  // read the response   \r
-\r
-  // byte 0: temperature LSB\r
-  scratchPad[TEMP_LSB] = _wire->read();\r
-\r
-  // byte 1: temperature MSB\r
-  scratchPad[TEMP_MSB] = _wire->read();\r
-\r
-  // byte 2: high alarm temp\r
-  scratchPad[HIGH_ALARM_TEMP] = _wire->read();\r
-\r
-  // byte 3: low alarm temp\r
-  scratchPad[LOW_ALARM_TEMP] = _wire->read();\r
-\r
-  // byte 4:\r
-  // DS18S20: store for crc\r
-  // DS18B20 & DS1822: configuration register\r
-  scratchPad[CONFIGURATION] = _wire->read();\r
-\r
-  // byte 5:\r
-  // internal use & crc\r
-  scratchPad[INTERNAL_BYTE] = _wire->read();\r
-\r
-  // byte 6:\r
-  // DS18S20: COUNT_REMAIN\r
-  // DS18B20 & DS1822: store for crc\r
-  scratchPad[COUNT_REMAIN] = _wire->read();\r
-  \r
-  // byte 7:\r
-  // DS18S20: COUNT_PER_C\r
-  // DS18B20 & DS1822: store for crc\r
-  scratchPad[COUNT_PER_C] = _wire->read();\r
-  \r
-  // byte 8:\r
-  // SCTRACHPAD_CRC\r
-  scratchPad[SCRATCHPAD_CRC] = _wire->read();\r
-\r
-  _wire->reset();\r
-}\r
-\r
-// writes device's scratch pad\r
-void DallasTemperature::writeScratchPad(uint8_t* deviceAddress, const uint8_t* scratchPad)\r
-{\r
-  _wire->reset();\r
-  _wire->select(deviceAddress);\r
-  _wire->write(WRITESCRATCH);\r
-  _wire->write(scratchPad[HIGH_ALARM_TEMP]); // high alarm temp\r
-  _wire->write(scratchPad[LOW_ALARM_TEMP]); // low alarm temp\r
-  // DS18S20 does not use the configuration register\r
-  if (deviceAddress[0] != DS18S20MODEL) _wire->write(scratchPad[CONFIGURATION]); // configuration\r
-  _wire->reset();\r
-  // save the newly written values to eeprom\r
-  _wire->write(COPYSCRATCH, parasite);\r
-  if (parasite) delay(10); // 10ms delay \r
-  _wire->reset();\r
-}\r
-\r
-// reads the device's power requirements\r
-bool DallasTemperature::readPowerSupply(uint8_t* deviceAddress)\r
-{\r
-  bool ret = false;\r
-  _wire->reset();\r
-  _wire->select(deviceAddress);\r
-  _wire->write(READPOWERSUPPLY);\r
-  if (_wire->read_bit() == 0) ret = true;\r
-  _wire->reset();\r
-  return ret;\r
-}\r
-\r
-// returns the current resolution, 9-12\r
-uint8_t DallasTemperature::getResolution(uint8_t* deviceAddress)\r
-{\r
-  if (deviceAddress[0] == DS18S20MODEL) return 9; // this model has a fixed resolution\r
-\r
-  ScratchPad scratchPad;\r
-  readScratchPad(deviceAddress, scratchPad);\r
-  switch (scratchPad[CONFIGURATION])\r
-  {\r
-    case TEMP_12_BIT:\r
-      return 12;\r
-      break;\r
-    case TEMP_11_BIT:\r
-      return 11;\r
-      break;\r
-    case TEMP_10_BIT:\r
-      return 10;\r
-      break;\r
-    case TEMP_9_BIT:\r
-      return 9;\r
-      break;\r
-  }\r
-}\r
-\r
-// set resolution of a device to 9, 10, 11, or 12 bits\r
-void DallasTemperature::setResolution(uint8_t* deviceAddress, uint8_t newResolution)\r
-{\r
-  ScratchPad scratchPad;\r
-  if (isConnected(deviceAddress, scratchPad))\r
-  {\r
-    // DS18S20 has a fixed 9-bit resolution\r
-    if (deviceAddress[0] != DS18S20MODEL)\r
-    {\r
-      switch (newResolution)\r
-      {\r
-        case 12:\r
-          scratchPad[CONFIGURATION] = TEMP_12_BIT;\r
-          break;\r
-        case 11:\r
-          scratchPad[CONFIGURATION] = TEMP_11_BIT;\r
-          break;\r
-        case 10:\r
-          scratchPad[CONFIGURATION] = TEMP_10_BIT;\r
-          break;\r
-        case 9:\r
-        default:\r
-          scratchPad[CONFIGURATION] = TEMP_9_BIT;\r
-          break;\r
-      }\r
-      writeScratchPad(deviceAddress, scratchPad);\r
-    }\r
-  }\r
-} \r
-\r
-// sends command for all devices on the bus to perform a temperature\r
-void DallasTemperature::requestTemperatures(void)\r
-{\r
-  _wire->reset();\r
-  _wire->skip();\r
-  _wire->write(STARTCONVO, parasite);\r
-\r
-  switch (conversionDelay)\r
-  {\r
-    case TEMP_9_BIT:\r
-      delay(94);\r
-      break;\r
-    case TEMP_10_BIT:\r
-      delay(188);\r
-      break;\r
-    case TEMP_11_BIT:\r
-      delay(375);\r
-      break;\r
-    case TEMP_12_BIT:\r
-    default:\r
-      delay(750);\r
-      break;\r
-  }\r
-}\r
-\r
-// sends command for one device to perform a temperature by address\r
-void DallasTemperature::requestTemperaturesByAddress(uint8_t* deviceAddress)\r
-{\r
-  _wire->reset();\r
-  _wire->select(deviceAddress);\r
-  _wire->write(STARTCONVO, parasite);\r
-\r
-  switch (conversionDelay)\r
-  {\r
-    case TEMP_9_BIT:\r
-      delay(94);\r
-      break;\r
-    case TEMP_10_BIT:\r
-      delay(188);\r
-      break;\r
-    case TEMP_11_BIT:\r
-      delay(375);\r
-      break;\r
-    case TEMP_12_BIT:\r
-    default:\r
-      delay(750);\r
-      break;\r
-  }\r
-}\r
-\r
-// sends command for one device to perform a temp conversion by index\r
-void DallasTemperature::requestTemperaturesByIndex(uint8_t deviceIndex)\r
-{\r
-  DeviceAddress deviceAddress;\r
-  getAddress(deviceAddress, deviceIndex);\r
-  requestTemperaturesByAddress(deviceAddress);\r
-}\r
-\r
-\r
-// Fetch temperature for device index\r
-float DallasTemperature::getTempCByIndex(uint8_t deviceIndex)\r
-{\r
-  DeviceAddress deviceAddress;\r
-  getAddress(deviceAddress, deviceIndex);\r
-  return getTempC((uint8_t*)deviceAddress);\r
-}\r
-\r
-// Fetch temperature for device index\r
-float DallasTemperature::getTempFByIndex(uint8_t deviceIndex)\r
-{\r
-  return DallasTemperature::toFahrenheit(getTempCByIndex(deviceIndex));\r
-}\r
-\r
-// reads scratchpad and returns the temperature in degrees C\r
-float DallasTemperature::calculateTemperature(uint8_t* deviceAddress, uint8_t* scratchPad)\r
-{\r
-  int16_t rawTemperature = (((int16_t)scratchPad[TEMP_MSB]) << 8) | scratchPad[TEMP_LSB];\r
-\r
-  switch (deviceAddress[0])\r
-  {\r
-    case DS18B20MODEL:\r
-    case DS1822MODEL:\r
-      switch (scratchPad[CONFIGURATION])\r
-      {\r
-        case TEMP_12_BIT:\r
-          return (float)rawTemperature * 0.0625;\r
-          break;\r
-        case TEMP_11_BIT:\r
-          return (float)(rawTemperature >> 1) * 0.125;\r
-          break;\r
-        case TEMP_10_BIT:\r
-          return (float)(rawTemperature >> 2) * 0.25;\r
-          break;\r
-        case TEMP_9_BIT:\r
-          return (float)(rawTemperature >> 3) * 0.5;\r
-          break;\r
-      }\r
-      break;\r
-    case DS18S20MODEL:\r
-      /*\r
-      \r
-      Resolutions greater than 9 bits can be calculated using the data from \r
-      the temperature, COUNT REMAIN and COUNT PER Â°C registers in the \r
-      scratchpad. Note that the COUNT PER Â°C register is hard-wired to 16 \r
-      (10h). After reading the scratchpad, the TEMP_READ value is obtained \r
-      by truncating the 0.5°C bit (bit 0) from the temperature data. The \r
-      extended resolution temperature can then be calculated using the \r
-      following equation:\r
-      \r
-                                       COUNT_PER_C - COUNT_REMAIN\r
-      TEMPERATURE = TEMP_READ - 0.25 + --------------------------\r
-                                               COUNT_PER_C\r
-      */\r
-  \r
-      // Good spot. Thanks Nic Johns for your contribution\r
-      return (float)(rawTemperature >> 1) - 0.25 +((float)(scratchPad[COUNT_PER_C] - scratchPad[COUNT_REMAIN]) / (float)scratchPad[COUNT_PER_C] ); \r
-      break;\r
-  }\r
-}\r
-\r
-// returns temperature in degrees C or DEVICE_DISCONNECTED if the \r
-// device's scratch pad cannot be read successfully.\r
-// the numeric value of DEVICE_DISCONNECTED is defined in \r
-// DallasTemperature.h.  it is a large negative number outside the \r
-// operating range of the device\r
-float DallasTemperature::getTempC(uint8_t* deviceAddress)\r
-{\r
-  // TODO: Multiple devices (up to 64) on the same bus may take some time to negotiate a response\r
-  // What happens in case of collision?\r
-\r
-  ScratchPad scratchPad;\r
-  if (isConnected(deviceAddress, scratchPad)) return calculateTemperature(deviceAddress, scratchPad);\r
-  return DEVICE_DISCONNECTED;\r
-}\r
-\r
-// returns temperature in degrees F\r
-float DallasTemperature::getTempF(uint8_t* deviceAddress)\r
-{\r
-  return toFahrenheit(getTempC(deviceAddress));\r
-}\r
-\r
-// returns true if the bus requires parasite power\r
-bool DallasTemperature::isParasitePowerMode(void)\r
-{\r
-  return parasite;\r
-}\r
-\r
-#if REQUIRESALARMS\r
-\r
-/*\r
-\r
-ALARMS:\r
-\r
-TH and TL Register Format\r
-\r
-BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0\r
-  S    2^6   2^5   2^4   2^3   2^2   2^1   2^0\r
-\r
-Only bits 11 through 4 of the temperature register are used \r
-in the TH and TL comparison since TH and TL are 8-bit \r
-registers. If the measured temperature is lower than or equal \r
-to TL or higher than or equal to TH, an alarm condition exists \r
-and an alarm flag is set inside the DS18B20. This flag is \r
-updated after every temperature measurement; therefore, if the \r
-alarm condition goes away, the flag will be turned off after \r
-the next temperature conversion.\r
-\r
-*/\r
-\r
-// sets the high alarm temperature for a device in degrees celsius\r
-// accepts a float, but the alarm resolution will ignore anything \r
-// after a decimal point.  valid range is -55C - 125C\r
-void DallasTemperature::setHighAlarmTemp(uint8_t* deviceAddress, char celsius)\r
-{\r
-  // make sure the alarm temperature is within the device's range\r
-  if (celsius > 125) celsius = 125;\r
-  else if (celsius < -55) celsius = -55;\r
-  \r
-  ScratchPad scratchPad;\r
-  if (isConnected(deviceAddress, scratchPad))\r
-  { \r
-    scratchPad[HIGH_ALARM_TEMP] = (uint8_t)celsius;\r
-    writeScratchPad(deviceAddress, scratchPad);\r
-  }\r
-}\r
-\r
-// sets the low alarm temperature for a device in degreed celsius\r
-// accepts a float, but the alarm resolution will ignore anything \r
-// after a decimal point.  valid range is -55C - 125C\r
-void DallasTemperature::setLowAlarmTemp(uint8_t* deviceAddress, char celsius)\r
-{\r
-  // make sure the alarm temperature is within the device's range\r
-  if (celsius > 125) celsius = 125;\r
-  else if (celsius < -55) celsius = -55;\r
-\r
-  ScratchPad scratchPad;\r
-  if (isConnected(deviceAddress, scratchPad))\r
-  {\r
-    scratchPad[LOW_ALARM_TEMP] = (uint8_t)celsius;\r
-    writeScratchPad(deviceAddress, scratchPad);\r
-  }\r
-}\r
-\r
-// returns a char with the current high alarm temperature or \r
-// DEVICE_DISCONNECTED for an address\r
-char DallasTemperature::getHighAlarmTemp(uint8_t* deviceAddress)\r
-{\r
-  ScratchPad scratchPad;\r
-  if (isConnected(deviceAddress, scratchPad)) return (char)scratchPad[HIGH_ALARM_TEMP];\r
-  return DEVICE_DISCONNECTED;\r
-}\r
-\r
-// returns a char with the current low alarm temperature or \r
-// DEVICE_DISCONNECTED for an address\r
-char DallasTemperature::getLowAlarmTemp(uint8_t* deviceAddress)\r
-{\r
-  ScratchPad scratchPad;\r
-  if (isConnected(deviceAddress, scratchPad)) return (char)scratchPad[LOW_ALARM_TEMP];\r
-  return DEVICE_DISCONNECTED;\r
-}\r
-\r
-// resets internal variables used for the alarm search\r
-void DallasTemperature::resetAlarmSearch()\r
-{\r
-  alarmSearchJunction = -1;\r
-  alarmSearchExhausted = 0;\r
-  for(uint8_t i = 0; i < 7; i++)\r
-    alarmSearchAddress[i] = 0;\r
-}\r
-\r
-// This is a modified version of the OneWire::search method.  \r
-//\r
-// Also added the OneWire search fix documented here:\r
-// http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1238032295\r
-//\r
-// Perform an alarm search. If this function returns a '1' then it has\r
-// enumerated the next device and you may retrieve the ROM from the\r
-// OneWire::address variable. If there are no devices, no further\r
-// devices, or something horrible happens in the middle of the\r
-// enumeration then a 0 is returned.  If a new device is found then\r
-// its address is copied to newAddr.  Use \r
-// DallasTemperature::resetAlarmSearch() to start over.\r
-bool DallasTemperature::alarmSearch(uint8_t* newAddr)\r
-{\r
-  uint8_t i;\r
-  char lastJunction = -1;\r
-  uint8_t done = 1;\r
-      \r
-  if (alarmSearchExhausted) return false;\r
-  if (!_wire->reset()) return false;\r
-\r
-  // send the alarm search command\r
-  _wire->write(0xEC, 0);\r
-      \r
-  for(i = 0; i < 64; i++)\r
-  {\r
-    uint8_t a = _wire->read_bit( );\r
-    uint8_t nota = _wire->read_bit( );\r
-    uint8_t ibyte = i / 8;\r
-    uint8_t ibit = 1 << (i & 7);\r
-    \r
-    // I don't think this should happen, this means nothing responded, but maybe if\r
-    // something vanishes during the search it will come up.\r
-    if (a && nota) return false;\r
-\r
-    if (!a && !nota)\r
-    {\r
-      if (i == alarmSearchJunction)\r
-      {\r
-        // this is our time to decide differently, we went zero last time, go one.\r
-        a = 1;\r
-        alarmSearchJunction = lastJunction;\r
-      }\r
-      else if (i < alarmSearchJunction) \r
-      {\r
-        // take whatever we took last time, look in address\r
-        if (alarmSearchAddress[ibyte] & ibit) a = 1;\r
-        else\r
-        {\r
-          // Only 0s count as pending junctions, we've already exhasuted the 0 side of 1s\r
-          a = 0;\r
-          done = 0;\r
-          lastJunction = i;\r
-        }\r
-      }\r
-      else\r
-      {\r
-        // we are blazing new tree, take the 0\r
-        a = 0;\r
-        alarmSearchJunction = i;\r
-        done = 0;\r
-      }\r
-      // OneWire search fix\r
-      // See: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1238032295\r
-    }\r
-\r
-    if (a) alarmSearchAddress[ibyte] |= ibit;\r
-    else alarmSearchAddress[ibyte] &= ~ibit;\r
-  \r
-    _wire->write_bit(a);\r
-  }\r
-\r
-  if (done) alarmSearchExhausted = 1;\r
-  for (i = 0; i < 8; i++) newAddr[i] = alarmSearchAddress[i];\r
-  return true;  \r
-}\r
-\r
-// returns true if device address has an alarm condition\r
-bool DallasTemperature::hasAlarm(uint8_t* deviceAddress)\r
-{\r
-  ScratchPad scratchPad;\r
-  if (isConnected(deviceAddress, scratchPad))\r
-  {\r
-    float temp = calculateTemperature(deviceAddress, scratchPad);\r
-  \r
-    // check low alarm\r
-    if ((char)temp <= (char)scratchPad[LOW_ALARM_TEMP]) return true;\r
-  \r
-    // check high alarm\r
-    if ((char)temp >= (char)scratchPad[HIGH_ALARM_TEMP]) return true;\r
-  }\r
-\r
-  // no alarm\r
-  return false;\r
-}\r
-\r
-// returns true if any device is reporting an alarm condition on the bus\r
-bool DallasTemperature::hasAlarm(void)\r
-{\r
-  DeviceAddress deviceAddress;\r
-  resetAlarmSearch();\r
-  return alarmSearch(deviceAddress);\r
-}\r
-\r
-// runs the alarm handler for all devices returned by alarmSearch()\r
-void DallasTemperature::processAlarms(void)\r
-{\r
-  resetAlarmSearch();\r
-  DeviceAddress alarmAddr;\r
-\r
-  while (alarmSearch(alarmAddr))\r
-  {\r
-    if (validAddress(alarmAddr))\r
-      _AlarmHandler(alarmAddr);\r
-  }\r
-}\r
-\r
-// sets the alarm handler\r
-void DallasTemperature::setAlarmHandler(AlarmHandler *handler)\r
-{\r
-  _AlarmHandler = handler;\r
-}\r
-\r
-// The default alarm handler\r
-void DallasTemperature::defaultAlarmHandler(uint8_t* deviceAddress)\r
-{\r
-}\r
-\r
-#endif\r
-\r
-// Convert float celsius to fahrenheit\r
-float DallasTemperature::toFahrenheit(float celsius)\r
-{\r
-  return (celsius * 1.8) + 32;\r
-}\r
-\r
-// Convert float fahrenheit to celsius\r
-float DallasTemperature::toCelsius(float fahrenheit)\r
-{\r
-  return (fahrenheit - 32) / 1.8;\r
-}\r
-\r
-#if REQUIRESNEW\r
-\r
-// MnetCS - Allocates memory for DallasTemperature. Allows us to instance a new object\r
-void* DallasTemperature::operator new(unsigned int size) // Implicit NSS obj size\r
-{\r
-  void * p; // void pointer\r
-  p = malloc(size); // Allocate memory\r
-  memset((DallasTemperature*)p,0,size); // Initalise memory\r
-\r
-  //!!! CANT EXPLICITLY CALL CONSTRUCTOR - workaround by using an init() methodR - workaround by using an init() method\r
-  return (DallasTemperature*) p; // Cast blank region to NSS pointer\r
-}\r
-\r
-// MnetCS 2009 -  Unallocates the memory used by this instance\r
-void DallasTemperature::operator delete(void* p)\r
-{\r
-  DallasTemperature* pNss =  (DallasTemperature*) p; // Cast to NSS pointer\r
-  pNss->~DallasTemperature(); // Destruct the object\r
-\r
-  free(p); // Free the memory\r
-}\r
-\r
-#endif\r
diff --git a/rf433ctl/DallasTemperature/DallasTemperature.h b/rf433ctl/DallasTemperature/DallasTemperature.h
deleted file mode 100644 (file)
index 9e57fe2..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-#ifndef DallasTemperature_h\r
-#define DallasTemperature_h\r
-\r
-// This library is free software; you can redistribute it and/or\r
-// modify it under the terms of the GNU Lesser General Public\r
-// License as published by the Free Software Foundation; either\r
-// version 2.1 of the License, or (at your option) any later version.\r
-\r
-// set to true to include code for new and delete operators\r
-#ifndef REQUIRESNEW\r
-#define REQUIRESNEW false\r
-#endif\r
-\r
-// set to true to include code implementing alarm search functions\r
-#ifndef REQUIRESALARMS\r
-#define REQUIRESALARMS true\r
-#endif\r
-\r
-#include <inttypes.h>\r
-#include <OneWire.h>\r
-\r
-// Model IDs\r
-#define DS18S20MODEL 0x10\r
-#define DS18B20MODEL 0x28\r
-#define DS1822MODEL  0x22\r
-\r
-// OneWire commands\r
-#define STARTCONVO      0x44  // Tells device to take a temperature reading and put it on the scratchpad\r
-#define COPYSCRATCH     0x48  // Copy EEPROM\r
-#define READSCRATCH     0xBE  // Read EEPROM\r
-#define WRITESCRATCH    0x4E  // Write to EEPROM\r
-#define RECALLSCRATCH   0xB8  // Reload from last known\r
-#define READPOWERSUPPLY 0xB4  // Determine if device needs parasite power\r
-#define ALARMSEARCH     0xEC  // Query bus for devices with an alarm condition\r
-\r
-// Scratchpad locations\r
-#define TEMP_LSB        0\r
-#define TEMP_MSB        1\r
-#define HIGH_ALARM_TEMP 2\r
-#define LOW_ALARM_TEMP  3\r
-#define CONFIGURATION   4\r
-#define INTERNAL_BYTE   5\r
-#define COUNT_REMAIN    6\r
-#define COUNT_PER_C     7\r
-#define SCRATCHPAD_CRC  8\r
-\r
-// Device resolution\r
-#define TEMP_9_BIT  0x1F //  9 bit\r
-#define TEMP_10_BIT 0x3F // 10 bit\r
-#define TEMP_11_BIT 0x5F // 11 bit\r
-#define TEMP_12_BIT 0x7F // 12 bit\r
-\r
-// Error Codes\r
-#define DEVICE_DISCONNECTED -127\r
-\r
-typedef uint8_t DeviceAddress[8];\r
-\r
-class DallasTemperature\r
-{\r
-  public:\r
-\r
-  DallasTemperature(OneWire*);\r
-\r
-  // initalize bus\r
-  void begin(void);\r
-\r
-  // returns the number of devices found on the bus\r
-  uint8_t getDeviceCount(void);\r
-  \r
-  // returns true if address is valid\r
-  bool validAddress(uint8_t*);\r
-\r
-  // finds an address at a given index on the bus \r
-  bool getAddress(uint8_t*, const uint8_t);\r
-  \r
-  // attempt to determine if the device at the given address is connected to the bus\r
-  bool isConnected(uint8_t*);\r
-\r
-  // attempt to determine if the device at the given address is connected to the bus\r
-  // also allows for updating the read scratchpad\r
-  bool isConnected(uint8_t*, uint8_t*);\r
-\r
-  // read device's scratchpad\r
-  void readScratchPad(uint8_t*, uint8_t*);\r
-\r
-  // write device's scratchpad\r
-  void writeScratchPad(uint8_t*, const uint8_t*);\r
-\r
-  // read device's power requirements\r
-  bool readPowerSupply(uint8_t*);\r
-\r
-  // returns the current resolution, 9-12\r
-  uint8_t getResolution(uint8_t*);\r
-\r
-  // set resolution of a device to 9, 10, 11, or 12 bits\r
-  void setResolution(uint8_t*, uint8_t);\r
-\r
-  // sends command for all devices on the bus to perform a temperature conversion\r
-  void requestTemperatures(void);\r
-   \r
-  // sends command for one device to perform a temperature conversion by address\r
-  void requestTemperaturesByAddress(uint8_t*);\r
-\r
-  // sends command for one device to perform a temperature conversion by index\r
-  void requestTemperaturesByIndex(uint8_t);\r
-\r
-  // returns temperature in degrees C\r
-  float getTempC(uint8_t*);\r
-\r
-  // returns temperature in degrees F\r
-  float getTempF(uint8_t*);\r
-\r
-  // Get temperature for device index (slow)\r
-  float getTempCByIndex(uint8_t);\r
-  \r
-  // Get temperature for device index (slow)\r
-  float getTempFByIndex(uint8_t);\r
-  \r
-  // returns true if the bus requires parasite power\r
-  bool isParasitePowerMode(void);\r
-\r
-  #if REQUIRESALARMS\r
-  \r
-  typedef void AlarmHandler(uint8_t*);\r
-\r
-  // sets the high alarm temperature for a device\r
-  // accepts a char.  valid range is -55C - 125C\r
-  void setHighAlarmTemp(uint8_t*, const char);\r
-\r
-  // sets the low alarm temperature for a device\r
-  // accepts a char.  valid range is -55C - 125C\r
-  void setLowAlarmTemp(uint8_t*, const char);\r
-\r
-  // returns a signed char with the current high alarm temperature for a device\r
-  // in the range -55C - 125C\r
-  char getHighAlarmTemp(uint8_t*);\r
-\r
-  // returns a signed char with the current low alarm temperature for a device\r
-  // in the range -55C - 125C\r
-  char getLowAlarmTemp(uint8_t*);\r
-  \r
-  // resets internal variables used for the alarm search\r
-  void resetAlarmSearch(void);\r
-\r
-  // search the wire for devices with active alarms\r
-  bool alarmSearch(uint8_t*);\r
-\r
-  // returns true if ia specific device has an alarm\r
-  bool hasAlarm(uint8_t*);\r
-\r
-  // returns true if any device is reporting an alarm on the bus\r
-  bool hasAlarm(void);\r
-\r
-  // runs the alarm handler for all devices returned by alarmSearch()\r
-  void processAlarms(void);\r
-  \r
-  // sets the alarm handler\r
-  void setAlarmHandler(AlarmHandler *);\r
-  \r
-  // The default alarm handler\r
-  static void defaultAlarmHandler(uint8_t*);\r
-\r
-  #endif\r
-\r
-  // convert from celcius to farenheit\r
-  static float toFahrenheit(const float);\r
-\r
-  // convert from farenheit to celsius\r
-  static float toCelsius(const float);\r
-\r
-  #if REQUIRESNEW\r
-\r
-  // initalize memory area\r
-  void* operator new (unsigned int);\r
-\r
-  // delete memory reference\r
-  void operator delete(void*);\r
-  \r
-  #endif\r
-\r
-  private:\r
-  typedef uint8_t ScratchPad[9];\r
-  \r
-  // parasite power on or off\r
-  bool parasite;\r
-\r
-  // used to determine the delay amount needed to allow for the\r
-  // temperature conversion to take place\r
-  int conversionDelay;\r
-\r
-  // count of devices on the bus\r
-  uint8_t devices;\r
-  \r
-  // Take a pointer to one wire instance\r
-  OneWire* _wire;\r
-\r
-  // reads scratchpad and returns the temperature in degrees C\r
-  float calculateTemperature(uint8_t*, uint8_t*);\r
-  \r
-  #if REQUIRESALARMS\r
-\r
-  // required for alarmSearch \r
-  uint8_t alarmSearchAddress[8];\r
-  char alarmSearchJunction;\r
-  uint8_t alarmSearchExhausted;\r
-\r
-  // the alarm handler function pointer\r
-  AlarmHandler *_AlarmHandler;\r
-\r
-  #endif\r
-  \r
-};\r
-#endif\r
diff --git a/rf433ctl/DallasTemperature/README b/rf433ctl/DallasTemperature/README
deleted file mode 100644 (file)
index 829d266..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-Arduino Library for Dallas Temperature ICs
-==========================================
-
-Usage
------
-
-This library supports the following devices:
-    DS18B20
-    DS18S20 - Please note there appears to be an issue with this series.
-    DS1822
-
-You will need a pull-up resistor of about 5 KOhm between the 1-Wire data line
-and your 5V power. If you are using the DS18B20, ground pins 1 and 3. The
-centre pin is the data line '1-wire'.
-
-We have included a "REQUIRESNEW" and "REQUIRESALARMS" definition. If you 
-want to slim down the code feel free to use either of these by including
-#define REQUIRESNEW or #define REQUIRESALARMS a the top of DallasTemperature.h
-
-Credits
--------
-
-The OneWire code has been derived from
-http://www.arduino.cc/playground/Learning/OneWire.
-Miles Burton <miles@mnetcs.com> originally developed this library.
-Tim Newsome <nuisance@casualhacker.net> added support for multiple sensors on
-the same bus.
-Guil Barros [gfbarros@bappos.com] added getTempByAddress (v3.5)
-
-Website
--------
-
-You can find the latest version of the library at
-http://milesburton.com/index.php?title=Dallas_Temperature_Control_Library
-
-License
--------
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License, or (at your option) any later version.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
diff --git a/rf433ctl/DallasTemperature/examples/Alarm/Alarm.pde b/rf433ctl/DallasTemperature/examples/Alarm/Alarm.pde
deleted file mode 100644 (file)
index e0884ea..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-#include <OneWire.h>
-#include <DallasTemperature.h>
-
-// Data wire is plugged into port 2 on the Arduino
-#define ONE_WIRE_BUS 3
-
-// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
-OneWire oneWire(ONE_WIRE_BUS);
-
-// Pass our oneWire reference to Dallas Temperature. 
-DallasTemperature sensors(&oneWire);
-
-// arrays to hold device addresses
-DeviceAddress insideThermometer, outsideThermometer;
-
-void setup(void)
-{
-  // start serial port
-  Serial.begin(9600);
-  Serial.println("Dallas Temperature IC Control Library Demo");
-
-  // Start up the library
-  sensors.begin();
-  
-  // locate devices on the bus
-  Serial.print("Found ");
-  Serial.print(sensors.getDeviceCount(), DEC);
-  Serial.println(" devices.");
-
-  // search for devices on the bus and assign based on an index.
-  if (!sensors.getAddress(insideThermometer, 0)) Serial.println("Unable to find address for Device 0"); 
-  if (!sensors.getAddress(outsideThermometer, 1)) Serial.println("Unable to find address for Device 1"); 
-
-  // show the addresses we found on the bus
-  Serial.print("Device 0 Address: ");
-  printAddress(insideThermometer);
-  Serial.println();
-
-  Serial.print("Device 0 Alarms: ");
-  printAlarms(insideThermometer);
-  Serial.println();
-  
-  Serial.print("Device 1 Address: ");
-  printAddress(outsideThermometer);
-  Serial.println();
-
-  Serial.print("Device 1 Alarms: ");
-  printAlarms(outsideThermometer);
-  Serial.println();
-  
-  Serial.println("Setting alarm temps...");
-
-  // alarm when temp is higher than 30C
-  sensors.setHighAlarmTemp(insideThermometer, 30);
-  
-  // alarm when temp is lower than -10C
-  sensors.setLowAlarmTemp(insideThermometer, -10);
-  
-  // alarm when temp is higher than 31C
-  sensors.setHighAlarmTemp(outsideThermometer, 31);
-  
-  // alarn when temp is lower than 27C
-  sensors.setLowAlarmTemp(outsideThermometer, 27);
-  
-  Serial.print("New Device 0 Alarms: ");
-  printAlarms(insideThermometer);
-  Serial.println();
-  
-  Serial.print("New Device 1 Alarms: ");
-  printAlarms(outsideThermometer);
-  Serial.println();
-}
-
-// function to print a device address
-void printAddress(DeviceAddress deviceAddress)
-{
-  for (uint8_t i = 0; i < 8; i++)
-  {
-    if (deviceAddress[i] < 16) Serial.print("0");
-    Serial.print(deviceAddress[i], HEX);
-  }
-}
-
-// function to print the temperature for a device
-void printTemperature(DeviceAddress deviceAddress)
-{
-  float tempC = sensors.getTempC(deviceAddress);
-  Serial.print("Temp C: ");
-  Serial.print(tempC);
-  Serial.print(" Temp F: ");
-  Serial.print(DallasTemperature::toFahrenheit(tempC));
-}
-
-void printAlarms(uint8_t deviceAddress[])
-{
-  char temp;
-  temp = sensors.getHighAlarmTemp(deviceAddress);
-  Serial.print("High Alarm: ");
-  Serial.print(temp, DEC);
-  Serial.print("C/");
-  Serial.print(DallasTemperature::toFahrenheit(temp));
-  Serial.print("F | Low Alarm: ");
-  temp = sensors.getLowAlarmTemp(deviceAddress);
-  Serial.print(temp, DEC);
-  Serial.print("C/");
-  Serial.print(DallasTemperature::toFahrenheit(temp));
-  Serial.print("F");
-}
-
-// main function to print information about a device
-void printData(DeviceAddress deviceAddress)
-{
-  Serial.print("Device Address: ");
-  printAddress(deviceAddress);
-  Serial.print(" ");
-  printTemperature(deviceAddress);
-  Serial.println();
-}
-
-void checkAlarm(DeviceAddress deviceAddress)
-{
-  if (sensors.hasAlarm(deviceAddress))
-  {
-    Serial.print("ALARM: ");
-    printData(deviceAddress);
-  }
-}
-
-void loop(void)
-{ 
-  // call sensors.requestTemperatures() to issue a global temperature 
-  // request to all devices on the bus
-  Serial.print("Requesting temperatures...");
-  sensors.requestTemperatures();
-  Serial.println("DONE");
-
-  // Method 1:
-  // check each address individually for an alarm condition
-  checkAlarm(insideThermometer);
-  checkAlarm(outsideThermometer);
-/*
-  // Alternate method:
-  // Search the bus and iterate through addresses of devices with alarms
-  
-  // space for the alarm device's address
-  DeviceAddress alarmAddr;
-
-  Serial.println("Searching for alarms...");
-  
-  // resetAlarmSearch() must be called before calling alarmSearch()
-  sensors.resetAlarmSearch();
-  
-  // alarmSearch() returns 0 when there are no devices with alarms
-  while (sensors.alarmSearch(alarmAddr))
-  {
-    Serial.print("ALARM: ");
-    printData(alarmAddr);
-  }
-*/
-
-}
-\r
diff --git a/rf433ctl/DallasTemperature/examples/AlarmHandler/AlarmHandler.pde b/rf433ctl/DallasTemperature/examples/AlarmHandler/AlarmHandler.pde
deleted file mode 100644 (file)
index d52e1f7..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-#include <OneWire.h>
-#include <DallasTemperature.h>
-
-// Data wire is plugged into port 2 on the Arduino
-#define ONE_WIRE_BUS 3
-#define TEMPERATURE_PRECISION 9
-
-// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
-OneWire oneWire(ONE_WIRE_BUS);
-
-// Pass our oneWire reference to Dallas Temperature. 
-DallasTemperature sensors(&oneWire);
-
-// arrays to hold device addresses
-DeviceAddress insideThermometer, outsideThermometer;
-
-// function that will be called when an alarm condition exists during DallasTemperatures::processAlarms();
-void newAlarmHandler(uint8_t* deviceAddress)
-{
-  Serial.println("Alarm Handler Start"); 
-  printAlarmInfo(deviceAddress);
-  printTemp(deviceAddress);
-  Serial.println();
-  Serial.println("Alarm Handler Finish");
-}
-
-void printCurrentTemp(DeviceAddress deviceAddress)
-{
-  printAddress(deviceAddress);
-  printTemp(deviceAddress);
-  Serial.println();
-}
-
-void printAddress(DeviceAddress deviceAddress)
-{
-  Serial.print("Address: ");
-  for (uint8_t i = 0; i < 8; i++)
-  {
-    if (deviceAddress[i] < 16) Serial.print("0");
-    Serial.print(deviceAddress[i], HEX);
-  }
-  Serial.print(" ");
-}
-
-void printTemp(DeviceAddress deviceAddress)
-{
-  float tempC = sensors.getTempC(deviceAddress);
-  if (tempC != DEVICE_DISCONNECTED)
-  {
-    Serial.print("Current Temp C: ");
-    Serial.print(tempC);
-  }
-  else Serial.print("DEVICE DISCONNECTED");
-  Serial.print(" ");
-}
-
-void printAlarmInfo(DeviceAddress deviceAddress)
-{
-  char temp;
-  printAddress(deviceAddress);
-  temp = sensors.getHighAlarmTemp(deviceAddress);
-  Serial.print("High Alarm: ");
-  Serial.print(temp, DEC);
-  Serial.print("C");
-  Serial.print(" Low Alarm: ");
-  temp = sensors.getLowAlarmTemp(deviceAddress);
-  Serial.print(temp, DEC);
-  Serial.print("C");
-  Serial.print(" ");
-}
-
-void setup(void)
-{
-  // start serial port
-  Serial.begin(9600);
-  Serial.println("Dallas Temperature IC Control Library Demo");
-
-  // Start up the library
-  sensors.begin();
-  
-  // locate devices on the bus
-  Serial.print("Found ");
-  Serial.print(sensors.getDeviceCount(), DEC);
-  Serial.println(" devices.");
-
-  // search for devices on the bus and assign based on an index
-  if (!sensors.getAddress(insideThermometer, 0)) Serial.println("Unable to find address for Device 0"); 
-  if (!sensors.getAddress(outsideThermometer, 1)) Serial.println("Unable to find address for Device 1"); 
-
-  Serial.print("Device insideThermometer ");
-  printAlarmInfo(insideThermometer);
-  Serial.println();
-  
-  Serial.print("Device outsideThermometer ");
-  printAlarmInfo(outsideThermometer);
-  Serial.println();
-  
-  // set alarm ranges
-  Serial.println("Setting alarm temps...");
-  sensors.setHighAlarmTemp(insideThermometer, 26);
-  sensors.setLowAlarmTemp(insideThermometer, 22);
-  sensors.setHighAlarmTemp(outsideThermometer, 25);
-  sensors.setLowAlarmTemp(outsideThermometer, 21);
-  
-  Serial.print("New insideThermometer ");
-  printAlarmInfo(insideThermometer);
-  Serial.println();
-  
-  Serial.print("New outsideThermometer ");
-  printAlarmInfo(outsideThermometer);
-  Serial.println();
-
-  // attach alarm handler
-  sensors.setAlarmHandler(&newAlarmHandler);
-
-}
-
-void loop(void)
-{ 
-  // ask the devices to measure the temperature
-  sensors.requestTemperatures();
-  
-  // if an alarm condition exists as a result of the most recent 
-  // requestTemperatures() request, it exists until the next time 
-  // requestTemperatures() is called AND there isn't an alarm condition
-  // on the device
-  if (sensors.hasAlarm())
-  {
-    Serial.println("Oh noes!  There is at least one alarm on the bus.");
-  }
-
-  // call alarm handler function defined by sensors.setAlarmHandler
-  // for each device reporting an alarm
-  sensors.processAlarms();
-
-  if (!sensors.hasAlarm())
-  {
-    // just print out the current temperature
-    printCurrentTemp(insideThermometer);
-    printCurrentTemp(outsideThermometer);
-  }
-  
-  delay(1000);
-}
-\r
diff --git a/rf433ctl/DallasTemperature/examples/Multiple/Multiple.pde b/rf433ctl/DallasTemperature/examples/Multiple/Multiple.pde
deleted file mode 100644 (file)
index 2694d07..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-#include <OneWire.h>
-#include <DallasTemperature.h>
-
-// Data wire is plugged into port 2 on the Arduino
-#define ONE_WIRE_BUS 3
-#define TEMPERATURE_PRECISION 9
-
-// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
-OneWire oneWire(ONE_WIRE_BUS);
-
-// Pass our oneWire reference to Dallas Temperature. 
-DallasTemperature sensors(&oneWire);
-
-// arrays to hold device addresses
-DeviceAddress insideThermometer, outsideThermometer;
-
-void setup(void)
-{
-  // start serial port
-  Serial.begin(9600);
-  Serial.println("Dallas Temperature IC Control Library Demo");
-
-  // Start up the library
-  sensors.begin();
-
-  // locate devices on the bus
-  Serial.print("Locating devices...");
-  Serial.print("Found ");
-  Serial.print(sensors.getDeviceCount(), DEC);
-  Serial.println(" devices.");
-
-  // report parasite power requirements
-  Serial.print("Parasite power is: "); 
-  if (sensors.isParasitePowerMode()) Serial.println("ON");
-  else Serial.println("OFF");
-
-  // assign address manually.  the addresses below will beed to be changed
-  // to valid device addresses on your bus.  device address can be retrieved
-  // by using either oneWire.search(deviceAddress) or individually via
-  // sensors.getAddress(deviceAddress, index)
-  //insideThermometer = { 0x28, 0x1D, 0x39, 0x31, 0x2, 0x0, 0x0, 0xF0 };
-  //outsideThermometer   = { 0x28, 0x3F, 0x1C, 0x31, 0x2, 0x0, 0x0, 0x2 };
-
-  // search for devices on the bus and assign based on an index.  ideally,
-  // you would do this to initially discover addresses on the bus and then 
-  // use those addresses and manually assign them (see above) once you know 
-  // the devices on your bus (and assuming they don't change).
-  // 
-  // method 1: by index
-  if (!sensors.getAddress(insideThermometer, 0)) Serial.println("Unable to find address for Device 0"); 
-  if (!sensors.getAddress(outsideThermometer, 1)) Serial.println("Unable to find address for Device 1"); 
-
-  // method 2: search()
-  // search() looks for the next device. Returns 1 if a new address has been
-  // returned. A zero might mean that the bus is shorted, there are no devices, 
-  // or you have already retrieved all of them.  It might be a good idea to 
-  // check the CRC to make sure you didn't get garbage.  The order is 
-  // deterministic. You will always get the same devices in the same order
-  //
-  // Must be called before search()
-  //oneWire.reset_search();
-  // assigns the first address found to insideThermometer
-  //if (!oneWire.search(insideThermometer)) Serial.println("Unable to find address for insideThermometer");
-  // assigns the seconds address found to outsideThermometer
-  //if (!oneWire.search(outsideThermometer)) Serial.println("Unable to find address for outsideThermometer");
-
-  // show the addresses we found on the bus
-  Serial.print("Device 0 Address: ");
-  printAddress(insideThermometer);
-  Serial.println();
-
-  Serial.print("Device 1 Address: ");
-  printAddress(outsideThermometer);
-  Serial.println();
-
-  // set the resolution to 9 bit
-  sensors.setResolution(insideThermometer, 9);
-  sensors.setResolution(outsideThermometer, 9);
-
-  Serial.print("Device 0 Resolution: ");
-  Serial.print(sensors.getResolution(insideThermometer), DEC); 
-  Serial.println();
-
-  Serial.print("Device 1 Resolution: ");
-  Serial.print(sensors.getResolution(outsideThermometer), DEC); 
-  Serial.println();
-}
-
-// function to print a device address
-void printAddress(DeviceAddress deviceAddress)
-{
-  for (uint8_t i = 0; i < 8; i++)
-  {
-    // zero pad the address if necessary
-    if (deviceAddress[i] < 16) Serial.print("0");
-    Serial.print(deviceAddress[i], HEX);
-  }
-}
-
-// function to print the temperature for a device
-void printTemperature(DeviceAddress deviceAddress)
-{
-  float tempC = sensors.getTempC(deviceAddress);
-  Serial.print("Temp C: ");
-  Serial.print(tempC);
-  Serial.print(" Temp F: ");
-  Serial.print(DallasTemperature::toFahrenheit(tempC));
-}
-
-// function to print a device's resolution
-void printResolution(DeviceAddress deviceAddress)
-{
-  Serial.print("Resolution: ");
-  Serial.print(sensors.getResolution(deviceAddress));
-  Serial.println();    
-}
-
-// main function to print information about a device
-void printData(DeviceAddress deviceAddress)
-{
-  Serial.print("Device Address: ");
-  printAddress(deviceAddress);
-  Serial.print(" ");
-  printTemperature(deviceAddress);
-  Serial.println();
-}
-
-void loop(void)
-{ 
-  // call sensors.requestTemperatures() to issue a global temperature 
-  // request to all devices on the bus
-  Serial.print("Requesting temperatures...");
-  sensors.requestTemperatures();
-  Serial.println("DONE");
-
-  // print the device information
-  printData(insideThermometer);
-  printData(outsideThermometer);
-}
-\r
diff --git a/rf433ctl/DallasTemperature/examples/Simple/Simple.pde b/rf433ctl/DallasTemperature/examples/Simple/Simple.pde
deleted file mode 100644 (file)
index 5b2954d..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <OneWire.h>
-#include <DallasTemperature.h>
-
-// Data wire is plugged into port 2 on the Arduino
-#define ONE_WIRE_BUS 2
-
-// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
-OneWire oneWire(ONE_WIRE_BUS);
-
-// Pass our oneWire reference to Dallas Temperature. 
-DallasTemperature sensors(&oneWire);
-
-void setup(void)
-{
-  // start serial port
-  Serial.begin(9600);
-  Serial.println("Dallas Temperature IC Control Library Demo");
-
-  // Start up the library
-  sensors.begin();
-}
-
-void loop(void)
-{ 
-  // call sensors.requestTemperatures() to issue a global temperature 
-  // request to all devices on the bus
-  Serial.print("Requesting temperatures...");
-  sensors.requestTemperatures(); // Send the command to get temperatures
-  Serial.println("DONE");
-  
-  Serial.print("Temperature for the device 1 (index 0) is: ");
-  Serial.println(sensors.getTempCByIndex(0));  
-}\r
diff --git a/rf433ctl/DallasTemperature/examples/Single/Single.pde b/rf433ctl/DallasTemperature/examples/Single/Single.pde
deleted file mode 100644 (file)
index 57994b6..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-#include <OneWire.h>
-#include <DallasTemperature.h>
-
-// Data wire is plugged into port 2 on the Arduino
-#define ONE_WIRE_BUS 3
-
-// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
-OneWire oneWire(ONE_WIRE_BUS);
-
-// Pass our oneWire reference to Dallas Temperature. 
-DallasTemperature sensors(&oneWire);
-
-// arrays to hold device address
-DeviceAddress insideThermometer;
-
-void setup(void)
-{
-  // start serial port
-  Serial.begin(9600);
-  Serial.println("Dallas Temperature IC Control Library Demo");
-
-  // locate devices on the bus
-  Serial.print("Locating devices...");
-  sensors.begin();
-  Serial.print("Found ");
-  Serial.print(sensors.getDeviceCount(), DEC);
-  Serial.println(" devices.");
-
-  // report parasite power requirements
-  Serial.print("Parasite power is: "); 
-  if (sensors.isParasitePowerMode()) Serial.println("ON");
-  else Serial.println("OFF");
-  
-  // assign address manually.  the addresses below will beed to be changed
-  // to valid device addresses on your bus.  device address can be retrieved
-  // by using either oneWire.search(deviceAddress) or individually via
-  // sensors.getAddress(deviceAddress, index)
-  //insideThermometer = { 0x28, 0x1D, 0x39, 0x31, 0x2, 0x0, 0x0, 0xF0 };
-
-  // Method 1:
-  // search for devices on the bus and assign based on an index.  ideally,
-  // you would do this to initially discover addresses on the bus and then 
-  // use those addresses and manually assign them (see above) once you know 
-  // the devices on your bus (and assuming they don't change).
-  if (!sensors.getAddress(insideThermometer, 0)) Serial.println("Unable to find address for Device 0"); 
-  
-  // method 2: search()
-  // search() looks for the next device. Returns 1 if a new address has been
-  // returned. A zero might mean that the bus is shorted, there are no devices, 
-  // or you have already retrieved all of them.  It might be a good idea to 
-  // check the CRC to make sure you didn't get garbage.  The order is 
-  // deterministic. You will always get the same devices in the same order
-  //
-  // Must be called before search()
-  //oneWire.reset_search();
-  // assigns the first address found to insideThermometer
-  //if (!oneWire.search(insideThermometer)) Serial.println("Unable to find address for insideThermometer");
-
-  // show the addresses we found on the bus
-  Serial.print("Device 0 Address: ");
-  printAddress(insideThermometer);
-  Serial.println();
-
-  // set the resolution to 9 bit (Each Dallas/Maxim device is capable of several different resolutions)
-  sensors.setResolution(insideThermometer, 9);
-  Serial.print("Device 0 Resolution: ");
-  Serial.print(sensors.getResolution(insideThermometer), DEC); 
-  Serial.println();
-}
-
-// function to print the temperature for a device
-void printTemperature(DeviceAddress deviceAddress)
-{
-  // method 1 - slower
-  //Serial.print("Temp C: ");
-  //Serial.print(sensors.getTempC(deviceAddress));
-  //Serial.print(" Temp F: ");
-  //Serial.print(sensors.getTempF(deviceAddress)); // Makes a second call to getTempC and then converts to Fahrenheit
-
-  // method 2 - faster
-  float tempC = sensors.getTempC(deviceAddress);
-  Serial.print("Temp C: ");
-  Serial.print(tempC);
-  Serial.print(" Temp F: ");
-  Serial.println(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit
-}
-
-void loop(void)
-{ 
-  // call sensors.requestTemperatures() to issue a global temperature 
-  // request to all devices on the bus
-  Serial.print("Requesting temperatures...");
-  sensors.requestTemperatures(); // Send the command to get temperatures
-  Serial.println("DONE");
-  
-  // It responds almost immediately. Let's print out the data
-  printTemperature(insideThermometer); // Use a simple function to print out the data
-}
-
-// function to print a device address
-void printAddress(DeviceAddress deviceAddress)
-{
-  for (uint8_t i = 0; i < 8; i++)
-  {
-    if (deviceAddress[i] < 16) Serial.print("0");
-    Serial.print(deviceAddress[i], HEX);
-  }
-}\r
diff --git a/rf433ctl/DallasTemperature/examples/Tester/Tester.pde b/rf433ctl/DallasTemperature/examples/Tester/Tester.pde
deleted file mode 100644 (file)
index 063d265..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-#include <OneWire.h>
-#include <DallasTemperature.h>
-
-// Data wire is plugged into port 2 on the Arduino
-#define ONE_WIRE_BUS 3
-#define TEMPERATURE_PRECISION 9
-
-// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
-OneWire oneWire(ONE_WIRE_BUS);
-
-// Pass our oneWire reference to Dallas Temperature. 
-DallasTemperature sensors(&oneWire);
-
-int numberOfDevices; // Number of temperature devices found
-
-DeviceAddress tempDeviceAddress; // We'll use this variable to store a found device address
-
-void setup(void)
-{
-  // start serial port
-  Serial.begin(9600);
-  Serial.println("Dallas Temperature IC Control Library Demo");
-
-  // Start up the library
-  sensors.begin();
-  
-  // Grab a count of devices on the wire
-  numberOfDevices = sensors.getDeviceCount();
-  
-  // locate devices on the bus
-  Serial.print("Locating devices...");
-  
-  Serial.print("Found ");
-  Serial.print(numberOfDevices, DEC);
-  Serial.println(" devices.");
-
-  // report parasite power requirements
-  Serial.print("Parasite power is: "); 
-  if (sensors.isParasitePowerMode()) Serial.println("ON");
-  else Serial.println("OFF");
-  
-  // Loop through each device, print out address
-  for(int i=0;i<numberOfDevices; i++)
-  {
-    // Search the wire for address
-    if(sensors.getAddress(tempDeviceAddress, i))
-       {
-               Serial.print("Found device ");
-               Serial.print(i, DEC);
-               Serial.print(" with address: ");
-               printAddress(tempDeviceAddress);
-               Serial.println();
-               
-               Serial.print("Setting resolution to ");
-               Serial.println(TEMPERATURE_PRECISION,DEC);
-               
-               // set the resolution to 9 bit (Each Dallas/Maxim device is capable of several different resolutions)
-               sensors.setResolution(tempDeviceAddress, TEMPERATURE_PRECISION);
-               
-                Serial.print("Resolution actually set to: ");
-               Serial.print(sensors.getResolution(tempDeviceAddress), DEC); 
-               Serial.println();
-       }else{
-               Serial.print("Found ghost device at ");
-               Serial.print(i, DEC);
-               Serial.print(" but could not detect address. Check power and cabling");
-       }
-  }
-
-}
-
-// function to print the temperature for a device
-void printTemperature(DeviceAddress deviceAddress)
-{
-  // method 1 - slower
-  //Serial.print("Temp C: ");
-  //Serial.print(sensors.getTempC(deviceAddress));
-  //Serial.print(" Temp F: ");
-  //Serial.print(sensors.getTempF(deviceAddress)); // Makes a second call to getTempC and then converts to Fahrenheit
-
-  // method 2 - faster
-  float tempC = sensors.getTempC(deviceAddress);
-  Serial.print("Temp C: ");
-  Serial.print(tempC);
-  Serial.print(" Temp F: ");
-  Serial.println(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit
-}
-
-void loop(void)
-{ 
-  // call sensors.requestTemperatures() to issue a global temperature 
-  // request to all devices on the bus
-  Serial.print("Requesting temperatures...");
-  sensors.requestTemperatures(); // Send the command to get temperatures
-  Serial.println("DONE");
-  
-  
-  // Loop through each device, print out temperature data
-  for(int i=0;i<numberOfDevices; i++)
-  {
-    // Search the wire for address
-    if(sensors.getAddress(tempDeviceAddress, i))
-       {
-               // Output the device ID
-               Serial.print("Temperature for device: ");
-               Serial.println(i,DEC);
-               
-               // It responds almost immediately. Let's print out the data
-               printTemperature(tempDeviceAddress); // Use a simple function to print out the data
-       } 
-       //else ghost device! Check your power requirements and cabling
-       
-  }
-}
-
-// function to print a device address
-void printAddress(DeviceAddress deviceAddress)
-{
-  for (uint8_t i = 0; i < 8; i++)
-  {
-    if (deviceAddress[i] < 16) Serial.print("0");
-    Serial.print(deviceAddress[i], HEX);
-  }
-}\r
diff --git a/rf433ctl/DallasTemperature/keywords.txt b/rf433ctl/DallasTemperature/keywords.txt
deleted file mode 100644 (file)
index a143d76..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-#######################################
-# Syntax Coloring Map For Ultrasound
-#######################################
-
-#######################################
-# Datatypes (KEYWORD1)
-#######################################
-DallasTemperature      KEYWORD1
-OneWire        KEYWORD1
-AlarmHandler KEYWORD1
-DeviceAddress KEYWORD1
-
-#######################################
-# Methods and Functions (KEYWORD2)
-#######################################
-
-setResolution  KEYWORD2
-getResolution  KEYWORD2
-getTempC       KEYWORD2
-toFahrenheit   KEYWORD2
-getTempF       KEYWORD2
-getTempCByIndex        KEYWORD2
-getTempFByIndex        KEYWORD2
-requestTemperatures    KEYWORD2
-requestTemperaturesByAddress KEYWORD2
-requestTemperaturesByIndex KEYWORD2
-isParasitePowerMode    KEYWORD2
-begin KEYWORD2
-getDeviceCount KEYWORD2
-getAddress     KEYWORD2
-validAddress   KEYWORD2
-isConnected    KEYWORD2
-readScratchPad KEYWORD2
-writeScratchPad        KEYWORD2
-readPowerSupply        KEYWORD2
-setHighAlarmTemp       KEYWORD2
-setLowAlarmTemp        KEYWORD2
-getHighAlarmTemp       KEYWORD2
-getLowAlarmTemp        KEYWORD2
-resetAlarmSearch       KEYWORD2
-alarmSearch    KEYWORD2
-hasAlarm       KEYWORD2
-toCelsius      KEYWORD2
-processAlarmss KEYWORD2
-setAlarmHandlers       KEYWORD2
-defaultAlarmHandler    KEYWORD2
-calculateTemperature   KEYWORD2
-
-#######################################
-# Constants (LITERAL1)
-#######################################
-
diff --git a/rf433ctl/IRremote/IRremote.cpp b/rf433ctl/IRremote/IRremote.cpp
deleted file mode 100644 (file)
index b632723..0000000
+++ /dev/null
@@ -1,601 +0,0 @@
-/*\r
- * IRremote\r
- * Version 0.11 August, 2009\r
- * Copyright 2009 Ken Shirriff\r
- * For details, see http://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html\r
- *\r
- * Interrupt code based on NECIRrcv by Joe Knapp\r
- * http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1210243556\r
- * Also influenced by http://zovirl.com/2008/11/12/building-a-universal-remote-with-an-arduino/\r
- */\r
-\r
-#include "IRremote.h"\r
-#include "IRremoteInt.h"\r
-\r
-// Provides ISR\r
-#include <avr/interrupt.h>\r
-\r
-volatile irparams_t irparams;\r
-\r
-// These versions of MATCH, MATCH_MARK, and MATCH_SPACE are only for debugging.\r
-// To use them, set DEBUG in IRremoteInt.h\r
-// Normally macros are used for efficiency\r
-#ifdef DEBUG\r
-int MATCH(int measured, int desired) {\r
-  Serial.print("Testing: ");\r
-  Serial.print(TICKS_LOW(desired), DEC);\r
-  Serial.print(" <= ");\r
-  Serial.print(measured, DEC);\r
-  Serial.print(" <= ");\r
-  Serial.println(TICKS_HIGH(desired), DEC);\r
-  return measured >= TICKS_LOW(desired) && measured <= TICKS_HIGH(desired);\r
-}\r
-\r
-int MATCH_MARK(int measured_ticks, int desired_us) {\r
-  Serial.print("Testing mark ");\r
-  Serial.print(measured_ticks * USECPERTICK, DEC);\r
-  Serial.print(" vs ");\r
-  Serial.print(desired_us, DEC);\r
-  Serial.print(": ");\r
-  Serial.print(TICKS_LOW(desired_us + MARK_EXCESS), DEC);\r
-  Serial.print(" <= ");\r
-  Serial.print(measured_ticks, DEC);\r
-  Serial.print(" <= ");\r
-  Serial.println(TICKS_HIGH(desired_us + MARK_EXCESS), DEC);\r
-  return measured_ticks >= TICKS_LOW(desired_us + MARK_EXCESS) && measured_ticks <= TICKS_HIGH(desired_us + MARK_EXCESS);\r
-}\r
-\r
-int MATCH_SPACE(int measured_ticks, int desired_us) {\r
-  Serial.print("Testing space ");\r
-  Serial.print(measured_ticks * USECPERTICK, DEC);\r
-  Serial.print(" vs ");\r
-  Serial.print(desired_us, DEC);\r
-  Serial.print(": ");\r
-  Serial.print(TICKS_LOW(desired_us - MARK_EXCESS), DEC);\r
-  Serial.print(" <= ");\r
-  Serial.print(measured_ticks, DEC);\r
-  Serial.print(" <= ");\r
-  Serial.println(TICKS_HIGH(desired_us - MARK_EXCESS), DEC);\r
-  return measured_ticks >= TICKS_LOW(desired_us - MARK_EXCESS) && measured_ticks <= TICKS_HIGH(desired_us - MARK_EXCESS);\r
-}\r
-#endif\r
-\r
-void IRsend::sendNEC(unsigned long data, int nbits)\r
-{\r
-  enableIROut(38);\r
-  mark(NEC_HDR_MARK);\r
-  space(NEC_HDR_SPACE);\r
-  for (int i = 0; i < nbits; i++) {\r
-    if (data & TOPBIT) {\r
-      mark(NEC_BIT_MARK);\r
-      space(NEC_ONE_SPACE);\r
-    } \r
-    else {\r
-      mark(NEC_BIT_MARK);\r
-      space(NEC_ZERO_SPACE);\r
-    }\r
-    data <<= 1;\r
-  }\r
-  mark(NEC_BIT_MARK);\r
-  space(0);\r
-}\r
-\r
-void IRsend::sendSony(unsigned long data, int nbits) {\r
-  enableIROut(40);\r
-  mark(SONY_HDR_MARK);\r
-  space(SONY_HDR_SPACE);\r
-  data = data << (32 - nbits);\r
-  for (int i = 0; i < nbits; i++) {\r
-    if (data & TOPBIT) {\r
-      mark(SONY_ONE_MARK);\r
-      space(SONY_HDR_SPACE);\r
-    } \r
-    else {\r
-      mark(SONY_ZERO_MARK);\r
-      space(SONY_HDR_SPACE);\r
-    }\r
-    data <<= 1;\r
-  }\r
-}\r
-\r
-void IRsend::sendRaw(unsigned int buf[], int len, int hz)\r
-{\r
-  enableIROut(hz);\r
-  for (int i = 0; i < len; i++) {\r
-    if (i & 1) {\r
-      space(buf[i]);\r
-    } \r
-    else {\r
-      mark(buf[i]);\r
-    }\r
-  }\r
-  space(0); // Just to be sure\r
-}\r
-\r
-// Note: first bit must be a one (start bit)\r
-void IRsend::sendRC5(unsigned long data, int nbits)\r
-{\r
-  enableIROut(36);\r
-  data = data << (32 - nbits);\r
-  mark(RC5_T1); // First start bit\r
-  space(RC5_T1); // Second start bit\r
-  mark(RC5_T1); // Second start bit\r
-  for (int i = 0; i < nbits; i++) {\r
-    if (data & TOPBIT) {\r
-      space(RC5_T1); // 1 is space, then mark\r
-      mark(RC5_T1);\r
-    } \r
-    else {\r
-      mark(RC5_T1);\r
-      space(RC5_T1);\r
-    }\r
-    data <<= 1;\r
-  }\r
-  space(0); // Turn off at end\r
-}\r
-\r
-// Caller needs to take care of flipping the toggle bit\r
-void IRsend::sendRC6(unsigned long data, int nbits)\r
-{\r
-  enableIROut(36);\r
-  data = data << (32 - nbits);\r
-  mark(RC6_HDR_MARK);\r
-  space(RC6_HDR_SPACE);\r
-  mark(RC6_T1); // start bit\r
-  space(RC6_T1);\r
-  int t;\r
-  for (int i = 0; i < nbits; i++) {\r
-    if (i == 3) {\r
-      // double-wide trailer bit\r
-      t = 2 * RC6_T1;\r
-    } \r
-    else {\r
-      t = RC6_T1;\r
-    }\r
-    if (data & TOPBIT) {\r
-      mark(t);\r
-      space(t);\r
-    } \r
-    else {\r
-      space(t);\r
-      mark(t);\r
-    }\r
-\r
-    data <<= 1;\r
-  }\r
-  space(0); // Turn off at end\r
-}\r
-\r
-void IRsend::mark(int time) {\r
-  // Sends an IR mark for the specified number of microseconds.\r
-  // The mark output is modulated at the PWM frequency.\r
-  TCCR2A |= _BV(COM2B1); // Enable pin 3 PWM output\r
-  delayMicroseconds(time);\r
-}\r
-\r
-/* Leave pin off for time (given in microseconds) */\r
-void IRsend::space(int time) {\r
-  // Sends an IR space for the specified number of microseconds.\r
-  // A space is no output, so the PWM output is disabled.\r
-  TCCR2A &= ~(_BV(COM2B1)); // Disable pin 3 PWM output\r
-  delayMicroseconds(time);\r
-}\r
-\r
-void IRsend::enableIROut(int khz) {\r
-  // Enables IR output.  The khz value controls the modulation frequency in kilohertz.\r
-  // The IR output will be on pin 3 (OC2B).\r
-  // This routine is designed for 36-40KHz; if you use it for other values, it's up to you\r
-  // to make sure it gives reasonable results.  (Watch out for overflow / underflow / rounding.)\r
-  // TIMER2 is used in phase-correct PWM mode, with OCR2A controlling the frequency and OCR2B\r
-  // controlling the duty cycle.\r
-  // There is no prescaling, so the output frequency is 16MHz / (2 * OCR2A)\r
-  // To turn the output on and off, we leave the PWM running, but connect and disconnect the output pin.\r
-  // A few hours staring at the ATmega documentation and this will all make sense.\r
-  // See my Secrets of Arduino PWM at http://arcfn.com/2009/07/secrets-of-arduino-pwm.html for details.\r
-\r
-  \r
-  // Disable the Timer2 Interrupt (which is used for receiving IR)\r
-  TIMSK2 &= ~_BV(TOIE2); //Timer2 Overflow Interrupt\r
-  \r
-  pinMode(3, OUTPUT);\r
-  digitalWrite(3, HIGH); // When not sending PWM, we want it low (invertiert angeschlossen)\r
-  \r
-  // COM2A = 00: disconnect OC2A\r
-  // COM2B = 00: disconnect OC2B; to send signal set to 10: OC2B non-inverted\r
-  // WGM2 = 101: phase-correct PWM with OCRA as top\r
-  // CS2 = 000: no prescaling\r
-  TCCR2A = _BV(WGM20);\r
-  TCCR2B = _BV(WGM22) | _BV(CS20);\r
-\r
-  // The top value for the timer.  The modulation frequency will be SYSCLOCK / 2 / OCR2A.\r
-  OCR2A = SYSCLOCK / 2 / khz / 1000;\r
-  OCR2B = OCR2A / 4; // 33% duty cycle\r
-}\r
-\r
-IRrecv::IRrecv(int recvpin)\r
-{\r
-  irparams.recvpin = recvpin;\r
-  irparams.blinkflag = 0;\r
-}\r
-\r
-// initialization\r
-void IRrecv::enableIRIn() {\r
-  // setup pulse clock timer interrupt\r
-  TCCR2A = 0;  // normal mode\r
-\r
-  //Prescale /8 (16M/8 = 0.5 microseconds per tick)\r
-  // Therefore, the timer interval can range from 0.5 to 128 microseconds\r
-  // depending on the reset value (255 to 0)\r
-  cbi(TCCR2B,CS22);\r
-  sbi(TCCR2B,CS21);\r
-  cbi(TCCR2B,CS20);\r
-\r
-  //Timer2 Overflow Interrupt Enable\r
-  sbi(TIMSK2,TOIE2);\r
-\r
-  RESET_TIMER2;\r
-\r
-  sei();  // enable interrupts\r
-\r
-  // initialize state machine variables\r
-  irparams.rcvstate = STATE_IDLE;\r
-  irparams.rawlen = 0;\r
-\r
-\r
-  // set pin modes\r
-  pinMode(irparams.recvpin, INPUT);\r
-}\r
-\r
-// enable/disable blinking of pin 13 on IR processing\r
-void IRrecv::blink13(int blinkflag)\r
-{\r
-  irparams.blinkflag = blinkflag;\r
-  if (blinkflag)\r
-    pinMode(BLINKLED, OUTPUT);\r
-}\r
-\r
-// TIMER2 interrupt code to collect raw data.\r
-// Widths of alternating SPACE, MARK are recorded in rawbuf.\r
-// Recorded in ticks of 50 microseconds.\r
-// rawlen counts the number of entries recorded so far.\r
-// First entry is the SPACE between transmissions.\r
-// As soon as a SPACE gets long, ready is set, state switches to IDLE, timing of SPACE continues.\r
-// As soon as first MARK arrives, gap width is recorded, ready is cleared, and new logging starts\r
-ISR(TIMER2_OVF_vect)\r
-{\r
-  RESET_TIMER2;\r
-\r
-  uint8_t irdata = (uint8_t)digitalRead(irparams.recvpin);\r
-\r
-  irparams.timer++; // One more 50us tick\r
-  if (irparams.rawlen >= RAWBUF) {\r
-    // Buffer overflow\r
-    irparams.rcvstate = STATE_STOP;\r
-  }\r
-  switch(irparams.rcvstate) {\r
-  case STATE_IDLE: // In the middle of a gap\r
-    if (irdata == MARK) {\r
-      if (irparams.timer < GAP_TICKS) {\r
-        // Not big enough to be a gap.\r
-        irparams.timer = 0;\r
-      } \r
-      else {\r
-        // gap just ended, record duration and start recording transmission\r
-        irparams.rawlen = 0;\r
-        irparams.rawbuf[irparams.rawlen++] = irparams.timer;\r
-        irparams.timer = 0;\r
-        irparams.rcvstate = STATE_MARK;\r
-      }\r
-    }\r
-    break;\r
-  case STATE_MARK: // timing MARK\r
-    if (irdata == SPACE) {   // MARK ended, record time\r
-      irparams.rawbuf[irparams.rawlen++] = irparams.timer;\r
-      irparams.timer = 0;\r
-      irparams.rcvstate = STATE_SPACE;\r
-    }\r
-    break;\r
-  case STATE_SPACE: // timing SPACE\r
-    if (irdata == MARK) { // SPACE just ended, record it\r
-      irparams.rawbuf[irparams.rawlen++] = irparams.timer;\r
-      irparams.timer = 0;\r
-      irparams.rcvstate = STATE_MARK;\r
-    } \r
-    else { // SPACE\r
-      if (irparams.timer > GAP_TICKS) {\r
-        // big SPACE, indicates gap between codes\r
-        // Mark current code as ready for processing\r
-        // Switch to STOP\r
-        // Don't reset timer; keep counting space width\r
-        irparams.rcvstate = STATE_STOP;\r
-      } \r
-    }\r
-    break;\r
-  case STATE_STOP: // waiting, measuring gap\r
-    if (irdata == MARK) { // reset gap timer\r
-      irparams.timer = 0;\r
-    }\r
-    break;\r
-  }\r
-\r
-  if (irparams.blinkflag) {\r
-    if (irdata == MARK) {\r
-      PORTB |= B00100000;  // turn pin 13 LED on\r
-    } \r
-    else {\r
-      PORTB &= B11011111;  // turn pin 13 LED off\r
-    }\r
-  }\r
-}\r
-\r
-void IRrecv::resume() {\r
-  irparams.rcvstate = STATE_IDLE;\r
-  irparams.rawlen = 0;\r
-}\r
-\r
-\r
-\r
-// Decodes the received IR message\r
-// Returns 0 if no data ready, 1 if data ready.\r
-// Results of decoding are stored in results\r
-int IRrecv::decode(decode_results *results) {\r
-  results->rawbuf = irparams.rawbuf;\r
-  results->rawlen = irparams.rawlen;\r
-  if (irparams.rcvstate != STATE_STOP) {\r
-    return ERR;\r
-  }\r
-#ifdef DEBUG\r
-  Serial.println("Attempting NEC decode");\r
-#endif\r
-  if (decodeNEC(results)) {\r
-    return DECODED;\r
-  }\r
-#ifdef DEBUG\r
-  Serial.println("Attempting Sony decode");\r
-#endif\r
-  if (decodeSony(results)) {\r
-    return DECODED;\r
-  }\r
-#ifdef DEBUG\r
-  Serial.println("Attempting RC5 decode");\r
-#endif  \r
-  if (decodeRC5(results)) {\r
-    return DECODED;\r
-  }\r
-#ifdef DEBUG\r
-  Serial.println("Attempting RC6 decode");\r
-#endif \r
-  if (decodeRC6(results)) {\r
-    return DECODED;\r
-  }\r
-  if (results->rawlen >= 6) {\r
-    // Only return raw buffer if at least 6 bits\r
-    results->decode_type = UNKNOWN;\r
-    results->bits = 0;\r
-    results->value = 0;\r
-    return DECODED;\r
-  }\r
-  // Throw away and start over\r
-  resume();\r
-  return ERR;\r
-}\r
-\r
-long IRrecv::decodeNEC(decode_results *results) {\r
-  long data = 0;\r
-  int offset = 1; // Skip first space\r
-  // Initial mark\r
-  if (!MATCH_MARK(results->rawbuf[offset], NEC_HDR_MARK)) {\r
-    return ERR;\r
-  }\r
-  offset++;\r
-  // Check for repeat\r
-  if (irparams.rawlen == 4 &&\r
-    MATCH_SPACE(results->rawbuf[offset], NEC_RPT_SPACE) &&\r
-    MATCH_MARK(results->rawbuf[offset+1], NEC_BIT_MARK)) {\r
-    results->bits = 0;\r
-    results->value = REPEAT;\r
-    results->decode_type = NEC;\r
-    return DECODED;\r
-  }\r
-  if (irparams.rawlen < 2 * NEC_BITS + 4) {\r
-    return ERR;\r
-  }\r
-  // Initial space  \r
-  if (!MATCH_SPACE(results->rawbuf[offset], NEC_HDR_SPACE)) {\r
-    return ERR;\r
-  }\r
-  offset++;\r
-  for (int i = 0; i < NEC_BITS; i++) {\r
-    if (!MATCH_MARK(results->rawbuf[offset], NEC_BIT_MARK)) {\r
-      return ERR;\r
-    }\r
-    offset++;\r
-    if (MATCH_SPACE(results->rawbuf[offset], NEC_ONE_SPACE)) {\r
-      data = (data << 1) | 1;\r
-    } \r
-    else if (MATCH_SPACE(results->rawbuf[offset], NEC_ZERO_SPACE)) {\r
-      data <<= 1;\r
-    } \r
-    else {\r
-      return ERR;\r
-    }\r
-    offset++;\r
-  }\r
-  // Success\r
-  results->bits = NEC_BITS;\r
-  results->value = data;\r
-  results->decode_type = NEC;\r
-  return DECODED;\r
-}\r
-\r
-long IRrecv::decodeSony(decode_results *results) {\r
-  long data = 0;\r
-  if (irparams.rawlen < 2 * SONY_BITS + 2) {\r
-    return ERR;\r
-  }\r
-  int offset = 1; // Skip first space\r
-  // Initial mark\r
-  if (!MATCH_MARK(results->rawbuf[offset], SONY_HDR_MARK)) {\r
-    return ERR;\r
-  }\r
-  offset++;\r
-\r
-  while (offset + 1 < irparams.rawlen) {\r
-    if (!MATCH_SPACE(results->rawbuf[offset], SONY_HDR_SPACE)) {\r
-      break;\r
-    }\r
-    offset++;\r
-    if (MATCH_MARK(results->rawbuf[offset], SONY_ONE_MARK)) {\r
-      data = (data << 1) | 1;\r
-    } \r
-    else if (MATCH_MARK(results->rawbuf[offset], SONY_ZERO_MARK)) {\r
-      data <<= 1;\r
-    } \r
-    else {\r
-      return ERR;\r
-    }\r
-    offset++;\r
-  }\r
-\r
-  // Success\r
-  results->bits = (offset - 1) / 2;\r
-  if (results->bits < 12) {\r
-    results->bits = 0;\r
-    return ERR;\r
-  }\r
-  results->value = data;\r
-  results->decode_type = SONY;\r
-  return DECODED;\r
-}\r
-\r
-// Gets one undecoded level at a time from the raw buffer.\r
-// The RC5/6 decoding is easier if the data is broken into time intervals.\r
-// E.g. if the buffer has MARK for 2 time intervals and SPACE for 1,\r
-// successive calls to getRClevel will return MARK, MARK, SPACE.\r
-// offset and used are updated to keep track of the current position.\r
-// t1 is the time interval for a single bit in microseconds.\r
-// Returns -1 for error (measured time interval is not a multiple of t1).\r
-int IRrecv::getRClevel(decode_results *results, int *offset, int *used, int t1) {\r
-  if (*offset >= results->rawlen) {\r
-    // After end of recorded buffer, assume SPACE.\r
-    return SPACE;\r
-  }\r
-  int width = results->rawbuf[*offset];\r
-  int val = ((*offset) % 2) ? MARK : SPACE;\r
-  int correction = (val == MARK) ? MARK_EXCESS : - MARK_EXCESS;\r
-\r
-  int avail;\r
-  if (MATCH(width, t1 + correction)) {\r
-    avail = 1;\r
-  } \r
-  else if (MATCH(width, 2*t1 + correction)) {\r
-    avail = 2;\r
-  } \r
-  else if (MATCH(width, 3*t1 + correction)) {\r
-    avail = 3;\r
-  } \r
-  else {\r
-    return -1;\r
-  }\r
-\r
-  (*used)++;\r
-  if (*used >= avail) {\r
-    *used = 0;\r
-    (*offset)++;\r
-  }\r
-#ifdef DEBUG\r
-  if (val == MARK) {\r
-    Serial.println("MARK");\r
-  } \r
-  else {\r
-    Serial.println("SPACE");\r
-  }\r
-#endif\r
-  return val;   \r
-}\r
-\r
-long IRrecv::decodeRC5(decode_results *results) {\r
-  if (irparams.rawlen < MIN_RC5_SAMPLES + 2) {\r
-    return ERR;\r
-  }\r
-  int offset = 1; // Skip gap space\r
-  long data = 0;\r
-  int used = 0;\r
-  // Get start bits\r
-  if (getRClevel(results, &offset, &used, RC5_T1) != MARK) return ERR;\r
-  if (getRClevel(results, &offset, &used, RC5_T1) != SPACE) return ERR;\r
-  if (getRClevel(results, &offset, &used, RC5_T1) != MARK) return ERR;\r
-  int nbits;\r
-  for (nbits = 0; offset < irparams.rawlen; nbits++) {\r
-    int levelA = getRClevel(results, &offset, &used, RC5_T1); \r
-    int levelB = getRClevel(results, &offset, &used, RC5_T1);\r
-    if (levelA == SPACE && levelB == MARK) {\r
-      // 1 bit\r
-      data = (data << 1) | 1;\r
-    } \r
-    else if (levelA == MARK && levelB == SPACE) {\r
-      // zero bit\r
-      data <<= 1;\r
-    } \r
-    else {\r
-      return ERR;\r
-    } \r
-  }\r
-\r
-  // Success\r
-  results->bits = nbits;\r
-  results->value = data;\r
-  results->decode_type = RC5;\r
-  return DECODED;\r
-}\r
-\r
-long IRrecv::decodeRC6(decode_results *results) {\r
-  if (results->rawlen < MIN_RC6_SAMPLES) {\r
-    return ERR;\r
-  }\r
-  int offset = 1; // Skip first space\r
-  // Initial mark\r
-  if (!MATCH_MARK(results->rawbuf[offset], RC6_HDR_MARK)) {\r
-    return ERR;\r
-  }\r
-  offset++;\r
-  if (!MATCH_SPACE(results->rawbuf[offset], RC6_HDR_SPACE)) {\r
-    return ERR;\r
-  }\r
-  offset++;\r
-  long data = 0;\r
-  int used = 0;\r
-  // Get start bit (1)\r
-  if (getRClevel(results, &offset, &used, RC6_T1) != MARK) return ERR;\r
-  if (getRClevel(results, &offset, &used, RC6_T1) != SPACE) return ERR;\r
-  int nbits;\r
-  for (nbits = 0; offset < results->rawlen; nbits++) {\r
-    int levelA, levelB; // Next two levels\r
-    levelA = getRClevel(results, &offset, &used, RC6_T1); \r
-    if (nbits == 3) {\r
-      // T bit is double wide; make sure second half matches\r
-      if (levelA != getRClevel(results, &offset, &used, RC6_T1)) return ERR;\r
-    } \r
-    levelB = getRClevel(results, &offset, &used, RC6_T1);\r
-    if (nbits == 3) {\r
-      // T bit is double wide; make sure second half matches\r
-      if (levelB != getRClevel(results, &offset, &used, RC6_T1)) return ERR;\r
-    } \r
-    if (levelA == MARK && levelB == SPACE) { // reversed compared to RC5\r
-      // 1 bit\r
-      data = (data << 1) | 1;\r
-    } \r
-    else if (levelA == SPACE && levelB == MARK) {\r
-      // zero bit\r
-      data <<= 1;\r
-    } \r
-    else {\r
-      return ERR; // Error\r
-    } \r
-  }\r
-  // Success\r
-  results->bits = nbits;\r
-  results->value = data;\r
-  results->decode_type = RC6;\r
-  return DECODED;\r
-}\r
diff --git a/rf433ctl/IRremote/IRremote.h b/rf433ctl/IRremote/IRremote.h
deleted file mode 100644 (file)
index 35fb445..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/*\r
- * IRremote\r
- * Version 0.1 July, 2009\r
- * Copyright 2009 Ken Shirriff\r
- * For details, see http://arcfn.com/2009/08/multi-protocol-infrared-remote-library.htm http://arcfn.com\r
- *\r
- * Interrupt code based on NECIRrcv by Joe Knapp\r
- * http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1210243556\r
- * Also influenced by http://zovirl.com/2008/11/12/building-a-universal-remote-with-an-arduino/\r
- */\r
-\r
-#ifndef IRremote_h\r
-#define IRremote_h\r
-\r
-// The following are compile-time library options.\r
-// If you change them, recompile the library.\r
-// If DEBUG is defined, a lot of debugging output will be printed during decoding.\r
-// TEST must be defined for the IRtest unittests to work.  It will make some\r
-// methods virtual, which will be slightly slower, which is why it is optional.\r
-// #define DEBUG\r
-// #define TEST\r
-\r
-// Results returned from the decoder\r
-class decode_results {\r
-public:\r
-  int decode_type; // NEC, SONY, RC5, UNKNOWN\r
-  unsigned long value; // Decoded value\r
-  int bits; // Number of bits in decoded value\r
-  volatile unsigned int *rawbuf; // Raw intervals in .5 us ticks\r
-  int rawlen; // Number of records in rawbuf.\r
-};\r
-\r
-// Values for decode_type\r
-#define NEC 1\r
-#define SONY 2\r
-#define RC5 3\r
-#define RC6 4\r
-#define UNKNOWN -1\r
-\r
-// Decoded value for NEC when a repeat code is received\r
-#define REPEAT 0xffffffff\r
-\r
-// main class for receiving IR\r
-class IRrecv\r
-{\r
-public:\r
-  IRrecv(int recvpin);\r
-  void blink13(int blinkflag);\r
-  int decode(decode_results *results);\r
-  void enableIRIn();\r
-  void resume();\r
-private:\r
-  // These are called by decode\r
-  int getRClevel(decode_results *results, int *offset, int *used, int t1);\r
-  long decodeNEC(decode_results *results);\r
-  long decodeSony(decode_results *results);\r
-  long decodeRC5(decode_results *results);\r
-  long decodeRC6(decode_results *results);\r
-} \r
-;\r
-\r
-// Only used for testing; can remove virtual for shorter code\r
-#ifdef TEST\r
-#define VIRTUAL virtual\r
-#else\r
-#define VIRTUAL\r
-#endif\r
-\r
-class IRsend\r
-{\r
-public:\r
-  IRsend() {}\r
-  void sendNEC(unsigned long data, int nbits);\r
-  void sendSony(unsigned long data, int nbits);\r
-  void sendRaw(unsigned int buf[], int len, int hz);\r
-  void sendRC5(unsigned long data, int nbits);\r
-  void sendRC6(unsigned long data, int nbits);\r
-  // private:\r
-  void enableIROut(int khz);\r
-  VIRTUAL void mark(int usec);\r
-  VIRTUAL void space(int usec);\r
-}\r
-;\r
-\r
-// Some useful constants\r
-\r
-#define USECPERTICK 50  // microseconds per clock interrupt tick\r
-#define RAWBUF 76 // Length of raw duration buffer\r
-\r
-// Marks tend to be 100us too long, and spaces 100us too short\r
-// when received due to sensor lag.\r
-#define MARK_EXCESS 100\r
-\r
-#endif\r
diff --git a/rf433ctl/IRremote/IRremoteInt.h b/rf433ctl/IRremote/IRremoteInt.h
deleted file mode 100644 (file)
index 975d234..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/*\r
- * IRremote\r
- * Version 0.1 July, 2009\r
- * Copyright 2009 Ken Shirriff\r
- * For details, see http://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html\r
- *\r
- * Interrupt code based on NECIRrcv by Joe Knapp\r
- * http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1210243556\r
- * Also influenced by http://zovirl.com/2008/11/12/building-a-universal-remote-with-an-arduino/\r
- */\r
-\r
-#ifndef IRremoteint_h\r
-#define IRremoteint_h\r
-\r
-#include <Arduino.h>\r
-\r
-#define CLKFUDGE 5      // fudge factor for clock interrupt overhead\r
-#define CLK 256      // max value for clock (timer 2)\r
-#define PRESCALE 8      // timer2 clock prescale\r
-#define SYSCLOCK 16000000  // main Arduino clock\r
-#define CLKSPERUSEC (SYSCLOCK/PRESCALE/1000000)   // timer clocks per microsecond\r
-\r
-#define ERR 0\r
-#define DECODED 1\r
-\r
-#define BLINKLED 13\r
-\r
-// defines for setting and clearing register bits\r
-#ifndef cbi\r
-#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))\r
-#endif\r
-#ifndef sbi\r
-#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))\r
-#endif\r
-\r
-// clock timer reset value\r
-#define INIT_TIMER_COUNT2 (CLK - USECPERTICK*CLKSPERUSEC + CLKFUDGE)\r
-#define RESET_TIMER2 TCNT2 = INIT_TIMER_COUNT2\r
-\r
-// pulse parameters in usec\r
-#define NEC_HDR_MARK   9000\r
-#define NEC_HDR_SPACE  4500\r
-#define NEC_BIT_MARK   560\r
-#define NEC_ONE_SPACE  1600\r
-#define NEC_ZERO_SPACE 560\r
-#define NEC_RPT_SPACE  2250\r
-\r
-#define SONY_HDR_MARK  2400\r
-#define SONY_HDR_SPACE 600\r
-#define SONY_ONE_MARK  1200\r
-#define SONY_ZERO_MARK 600\r
-#define SONY_RPT_LENGTH 45000\r
-\r
-#define RC5_T1         889\r
-#define RC5_RPT_LENGTH 46000\r
-\r
-#define RC6_HDR_MARK   2666\r
-#define RC6_HDR_SPACE  889\r
-#define RC6_T1         444\r
-#define RC6_RPT_LENGTH 46000\r
-\r
-#define TOLERANCE 25  // percent tolerance in measurements\r
-#define LTOL (1.0 - TOLERANCE/100.) \r
-#define UTOL (1.0 + TOLERANCE/100.) \r
-\r
-#define _GAP 5000 // Minimum map between transmissions\r
-#define GAP_TICKS (_GAP/USECPERTICK)\r
-\r
-#define TICKS_LOW(us) (int) (((us)*LTOL/USECPERTICK))\r
-#define TICKS_HIGH(us) (int) (((us)*UTOL/USECPERTICK + 1))\r
-\r
-#ifndef DEBUG\r
-#define MATCH(measured_ticks, desired_us) ((measured_ticks) >= TICKS_LOW(desired_us) && (measured_ticks) <= TICKS_HIGH(desired_us))\r
-#define MATCH_MARK(measured_ticks, desired_us) MATCH(measured_ticks, (desired_us) + MARK_EXCESS)\r
-#define MATCH_SPACE(measured_ticks, desired_us) MATCH((measured_ticks), (desired_us) - MARK_EXCESS)\r
-// Debugging versions are in IRremote.cpp\r
-#endif\r
-\r
-// receiver states\r
-#define STATE_IDLE     2\r
-#define STATE_MARK     3\r
-#define STATE_SPACE    4\r
-#define STATE_STOP     5\r
-\r
-// information for the interrupt handler\r
-typedef struct {\r
-  uint8_t recvpin;           // pin for IR data from detector\r
-  uint8_t rcvstate;          // state machine\r
-  uint8_t blinkflag;         // TRUE to enable blinking of pin 13 on IR processing\r
-  unsigned int timer;     // state timer, counts 50uS ticks.\r
-  unsigned int rawbuf[RAWBUF]; // raw data\r
-  uint8_t rawlen;         // counter of entries in rawbuf\r
-} \r
-irparams_t;\r
-\r
-// Defined in IRremote.cpp\r
-extern volatile irparams_t irparams;\r
-\r
-// IR detector output is active low\r
-#define MARK  0\r
-#define SPACE 1\r
-\r
-#define TOPBIT 0x80000000\r
-\r
-#define NEC_BITS 32\r
-#define SONY_BITS 12\r
-#define MIN_RC5_SAMPLES 11\r
-#define MIN_RC6_SAMPLES 1\r
-\r
-#endif\r
-\r
diff --git a/rf433ctl/IRremote/LICENSE.txt b/rf433ctl/IRremote/LICENSE.txt
deleted file mode 100644 (file)
index 77cec6d..0000000
+++ /dev/null
@@ -1,458 +0,0 @@
-
-                 GNU LESSER GENERAL PUBLIC LICENSE
-                      Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL.  It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it.  You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
-  When we speak of free software, we are referring to freedom of use,
-not price.  Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
-  To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights.  These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  To protect each distributor, we want to make it very clear that
-there is no warranty for the free library.  Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-\f
-  Finally, software patents pose a constant threat to the existence of
-any free program.  We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder.  Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
-  Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License.  This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License.  We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
-  When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library.  The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom.  The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
-  We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License.  It also provides other free software developers Less
-of an advantage over competing non-free programs.  These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries.  However, the Lesser license provides advantages in certain
-special circumstances.
-
-  For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard.  To achieve this, non-free programs must be
-allowed to use the library.  A more frequent case is that a free
-library does the same job as widely used non-free libraries.  In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
-  In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software.  For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
-  Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-\f
-                 GNU LESSER GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-\f
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-\f
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-\f
-  6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Use a suitable shared library mechanism for linking with the
-    Library.  A suitable mechanism is one that (1) uses at run time a
-    copy of the library already present on the user's computer system,
-    rather than copying library functions into the executable, and (2)
-    will operate properly with a modified version of the library, if
-    the user installs one, as long as the modified version is
-    interface-compatible with the version that the work was made with.
-
-    c) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    d) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    e) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-\f
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-\f
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-\f
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                           NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
diff --git a/rf433ctl/IRremote/examples/IRrecord/IRrecord.pde b/rf433ctl/IRremote/examples/IRrecord/IRrecord.pde
deleted file mode 100644 (file)
index a1cf878..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * IRrecord: record and play back IR signals as a minimal 
- * An IR detector/demodulator must be connected to the input RECV_PIN.
- * An IR LED must be connected to the output PWM pin 3.
- * A button must be connected to the input BUTTON_PIN; this is the
- * send button.
- * A visible LED can be connected to STATUS_PIN to provide status.
- *
- * The logic is:
- * If the button is pressed, send the IR code.
- * If an IR code is received, record it.
- *
- * Version 0.11 September, 2009
- * Copyright 2009 Ken Shirriff
- * http://arcfn.com
- */
-
-#include <IRremote.h>
-
-int RECV_PIN = 11;
-int BUTTON_PIN = 12;
-int STATUS_PIN = 13;
-
-IRrecv irrecv(RECV_PIN);
-IRsend irsend;
-
-decode_results results;
-
-void setup()
-{
-  Serial.begin(9600);
-  irrecv.enableIRIn(); // Start the receiver
-  pinMode(BUTTON_PIN, INPUT);
-  pinMode(STATUS_PIN, OUTPUT);
-}
-
-// Storage for the recorded code
-int codeType = -1; // The type of code
-unsigned long codeValue; // The code value if not raw
-unsigned int rawCodes[RAWBUF]; // The durations if raw
-int codeLen; // The length of the code
-int toggle = 0; // The RC5/6 toggle state
-
-// Stores the code for later playback
-// Most of this code is just logging
-void storeCode(decode_results *results) {
-  codeType = results->decode_type;
-  int count = results->rawlen;
-  if (codeType == UNKNOWN) {
-    Serial.println("Received unknown code, saving as raw");
-    codeLen = results->rawlen - 1;
-    // To store raw codes:
-    // Drop first value (gap)
-    // Convert from ticks to microseconds
-    // Tweak marks shorter, and spaces longer to cancel out IR receiver distortion
-    for (int i = 1; i <= codeLen; i++) {
-      if (i % 2) {
-        // Mark
-        rawCodes[i - 1] = results->rawbuf[i]*USECPERTICK - MARK_EXCESS;
-        Serial.print(" m");
-      } 
-      else {
-        // Space
-        rawCodes[i - 1] = results->rawbuf[i]*USECPERTICK + MARK_EXCESS;
-        Serial.print(" s");
-      }
-      Serial.print(rawCodes[i - 1], DEC);
-    }
-    Serial.println("");
-  }
-  else {
-    if (codeType == NEC) {
-      Serial.print("Received NEC: ");
-      if (results->value == REPEAT) {
-        // Don't record a NEC repeat value as that's useless.
-        Serial.println("repeat; ignoring.");
-        return;
-      }
-    } 
-    else if (codeType == SONY) {
-      Serial.print("Received SONY: ");
-    } 
-    else if (codeType == RC5) {
-      Serial.print("Received RC5: ");
-    } 
-    else if (codeType == RC6) {
-      Serial.print("Received RC6: ");
-    } 
-    else {
-      Serial.print("Unexpected codeType ");
-      Serial.print(codeType, DEC);
-      Serial.println("");
-    }
-    Serial.println(results->value, HEX);
-    codeValue = results->value;
-    codeLen = results->bits;
-  }
-}
-
-void sendCode(int repeat) {
-  if (codeType == NEC) {
-    if (repeat) {
-      irsend.sendNEC(REPEAT, codeLen);
-      Serial.println("Sent NEC repeat");
-    } 
-    else {
-      irsend.sendNEC(codeValue, codeLen);
-      Serial.print("Sent NEC ");
-      Serial.println(codeValue, HEX);
-    }
-  } 
-  else if (codeType == SONY) {
-    irsend.sendSony(codeValue, codeLen);
-    Serial.print("Sent Sony ");
-    Serial.println(codeValue, HEX);
-  } 
-  else if (codeType == RC5 || codeType == RC6) {
-    if (!repeat) {
-      // Flip the toggle bit for a new button press
-      toggle = 1 - toggle;
-    }
-    // Put the toggle bit into the code to send
-    codeValue = codeValue & ~(1 << (codeLen - 1));
-    codeValue = codeValue | (toggle << (codeLen - 1));
-    if (codeType == RC5) {
-      Serial.print("Sent RC5 ");
-      Serial.println(codeValue, HEX);
-      irsend.sendRC5(codeValue, codeLen);
-    } 
-    else {
-      irsend.sendRC6(codeValue, codeLen);
-      Serial.print("Sent RC6 ");
-      Serial.println(codeValue, HEX);
-    }
-  } 
-  else if (codeType == UNKNOWN /* i.e. raw */) {
-    // Assume 38 KHz
-    irsend.sendRaw(rawCodes, codeLen, 38);
-    Serial.println("Sent raw");
-  }
-}
-
-int lastButtonState;
-
-void loop() {
-  // If button pressed, send the code.
-  int buttonState = digitalRead(BUTTON_PIN);
-  if (lastButtonState == HIGH && buttonState == LOW) {
-    Serial.println("Released");
-    irrecv.enableIRIn(); // Re-enable receiver
-  }
-
-  if (buttonState) {
-    Serial.println("Pressed, sending");
-    digitalWrite(STATUS_PIN, HIGH);
-    sendCode(lastButtonState == buttonState);
-    digitalWrite(STATUS_PIN, LOW);
-    delay(50); // Wait a bit between retransmissions
-  } 
-  else if (irrecv.decode(&results)) {
-    digitalWrite(STATUS_PIN, HIGH);
-    storeCode(&results);
-    irrecv.resume(); // resume receiver
-    digitalWrite(STATUS_PIN, LOW);
-  }
-  lastButtonState = buttonState;
-}
-
-
-
-
-
-
-\r
diff --git a/rf433ctl/IRremote/examples/IRrecvDemo/IRrecvDemo.pde b/rf433ctl/IRremote/examples/IRrecvDemo/IRrecvDemo.pde
deleted file mode 100644 (file)
index 14982d8..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
- * An IR detector/demodulator must be connected to the input RECV_PIN.
- * Version 0.1 July, 2009
- * Copyright 2009 Ken Shirriff
- * http://arcfn.com
- */
-
-#include <IRremote.h>
-
-int RECV_PIN = 11;
-
-IRrecv irrecv(RECV_PIN);
-
-decode_results results;
-
-void setup()
-{
-  Serial.begin(9600);
-  irrecv.enableIRIn(); // Start the receiver
-}
-
-void loop() {
-  if (irrecv.decode(&results)) {
-    Serial.println(results.value, HEX);
-    irrecv.resume(); // Receive the next value
-  }
-}\r
diff --git a/rf433ctl/IRremote/examples/IRrecvDump/IRrecvDump.pde b/rf433ctl/IRremote/examples/IRrecvDump/IRrecvDump.pde
deleted file mode 100644 (file)
index ad3c599..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * IRremote: IRrecvDump - dump details of IR codes with IRrecv
- * An IR detector/demodulator must be connected to the input RECV_PIN.
- * Version 0.1 July, 2009
- * Copyright 2009 Ken Shirriff
- * http://arcfn.com
- */
-
-#include <IRremote.h>
-
-int RECV_PIN = 11;
-
-IRrecv irrecv(RECV_PIN);
-
-decode_results results;
-
-void setup()
-{
-  Serial.begin(9600);
-  irrecv.enableIRIn(); // Start the receiver
-}
-
-// Dumps out the decode_results structure.
-// Call this after IRrecv::decode()
-// void * to work around compiler issue
-//void dump(void *v) {
-//  decode_results *results = (decode_results *)v
-void dump(decode_results *results) {
-  int count = results->rawlen;
-  if (results->decode_type == UNKNOWN) {
-    Serial.println("Could not decode message");
-  } 
-  else {
-    if (results->decode_type == NEC) {
-      Serial.print("Decoded NEC: ");
-    } 
-    else if (results->decode_type == SONY) {
-      Serial.print("Decoded SONY: ");
-    } 
-    else if (results->decode_type == RC5) {
-      Serial.print("Decoded RC5: ");
-    } 
-    else if (results->decode_type == RC6) {
-      Serial.print("Decoded RC6: ");
-    }
-    Serial.print(results->value, HEX);
-    Serial.print(" (");
-    Serial.print(results->bits, DEC);
-    Serial.println(" bits)");
-  }
-  Serial.print("Raw (");
-  Serial.print(count, DEC);
-  Serial.print("): ");
-
-  for (int i = 0; i < count; i++) {
-    if ((i % 2) == 1) {
-      Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
-    } 
-    else {
-      Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);
-    }
-    Serial.print(" ");
-  }
-  Serial.println("");
-}
-
-
-void loop() {
-  if (irrecv.decode(&results)) {
-    Serial.println(results.value, HEX);
-    dump(&results);
-    irrecv.resume(); // Receive the next value
-  }
-}\r
diff --git a/rf433ctl/IRremote/examples/IRrelay/IRrelay.pde b/rf433ctl/IRremote/examples/IRrelay/IRrelay.pde
deleted file mode 100644 (file)
index f333133..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
- * An IR detector/demodulator must be connected to the input RECV_PIN.
- * Version 0.1 July, 2009
- * Copyright 2009 Ken Shirriff
- * http://arcfn.com
- */
-
-#include <IRremote.h>
-
-int RECV_PIN = 11;
-int RELAY_PIN = 4;
-
-IRrecv irrecv(RECV_PIN);
-decode_results results;
-
-// Dumps out the decode_results structure.
-// Call this after IRrecv::decode()
-// void * to work around compiler issue
-//void dump(void *v) {
-//  decode_results *results = (decode_results *)v
-void dump(decode_results *results) {
-  int count = results->rawlen;
-  if (results->decode_type == UNKNOWN) {
-    Serial.println("Could not decode message");
-  } 
-  else {
-    if (results->decode_type == NEC) {
-      Serial.print("Decoded NEC: ");
-    } 
-    else if (results->decode_type == SONY) {
-      Serial.print("Decoded SONY: ");
-    } 
-    else if (results->decode_type == RC5) {
-      Serial.print("Decoded RC5: ");
-    } 
-    else if (results->decode_type == RC6) {
-      Serial.print("Decoded RC6: ");
-    }
-    Serial.print(results->value, HEX);
-    Serial.print(" (");
-    Serial.print(results->bits, DEC);
-    Serial.println(" bits)");
-  }
-  Serial.print("Raw (");
-  Serial.print(count, DEC);
-  Serial.print("): ");
-
-  for (int i = 0; i < count; i++) {
-    if ((i % 2) == 1) {
-      Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
-    } 
-    else {
-      Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);
-    }
-    Serial.print(" ");
-  }
-  Serial.println("");
-}
-
-void setup()
-{
-  pinMode(RELAY_PIN, OUTPUT);
-  pinMode(13, OUTPUT);
-    Serial.begin(9600);
-  irrecv.enableIRIn(); // Start the receiver
-}
-
-int on = 0;
-unsigned long last = millis();
-
-void loop() {
-  if (irrecv.decode(&results)) {
-    // If it's been at least 1/4 second since the last
-    // IR received, toggle the relay
-    if (millis() - last > 250) {
-      on = !on;
-      digitalWrite(RELAY_PIN, on ? HIGH : LOW);
-      digitalWrite(13, on ? HIGH : LOW);
-      dump(&results);
-    }
-    last = millis();      
-    irrecv.resume(); // Receive the next value
-  }
-}\r
diff --git a/rf433ctl/IRremote/examples/IRsendDemo/IRsendDemo.pde b/rf433ctl/IRremote/examples/IRsendDemo/IRsendDemo.pde
deleted file mode 100644 (file)
index 6941382..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * IRremote: IRsendDemo - demonstrates sending IR codes with IRsend
- * An IR LED must be connected to Arduino PWM pin 3.
- * Version 0.1 July, 2009
- * Copyright 2009 Ken Shirriff
- * http://arcfn.com
- */
-
-#include <IRremote.h>
-
-IRsend irsend;
-
-void setup()
-{
-  Serial.begin(9600);
-}
-
-void loop() {
-  if (Serial.read() != -1) {
-    for (int i = 0; i < 3; i++) {
-      irsend.sendSony(0xa90, 12); // Sony TV power code
-      delay(100);
-    }
-  }
-}
-
diff --git a/rf433ctl/IRremote/examples/IRtest/IRtest.pde b/rf433ctl/IRremote/examples/IRtest/IRtest.pde
deleted file mode 100644 (file)
index b1cb522..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-/*\r
- * IRremote: IRtest unittest\r
- * Version 0.1 July, 2009\r
- * Copyright 2009 Ken Shirriff\r
- * http://arcfn.com\r
- *\r
- * Note: to run these tests, edit IRremote/IRremote.h to add "#define TEST"\r
- * You must then recompile the library by removing IRremote.o and restarting\r
- * the arduino IDE.\r
- */\r
-\r
-#include <IRremote.h>\r
-#include <IRremoteInt.h>\r
-\r
-// Dumps out the decode_results structure.\r
-// Call this after IRrecv::decode()\r
-// void * to work around compiler issue\r
-//void dump(void *v) {\r
-//  decode_results *results = (decode_results *)v\r
-void dump(decode_results *results) {\r
-  int count = results->rawlen;\r
-  if (results->decode_type == UNKNOWN) {\r
-    Serial.println("Could not decode message");\r
-  } \r
-  else {\r
-    if (results->decode_type == NEC) {\r
-      Serial.print("Decoded NEC: ");\r
-    } \r
-    else if (results->decode_type == SONY) {\r
-      Serial.print("Decoded SONY: ");\r
-    } \r
-    else if (results->decode_type == RC5) {\r
-      Serial.print("Decoded RC5: ");\r
-    } \r
-    else if (results->decode_type == RC6) {\r
-      Serial.print("Decoded RC6: ");\r
-    }\r
-    Serial.print(results->value, HEX);\r
-    Serial.print(" (");\r
-    Serial.print(results->bits, DEC);\r
-    Serial.println(" bits)");\r
-  }\r
-  Serial.print("Raw (");\r
-  Serial.print(count, DEC);\r
-  Serial.print("): ");\r
-\r
-  for (int i = 0; i < count; i++) {\r
-    if ((i % 2) == 1) {\r
-      Serial.print(results->rawbuf[i]*USECPERTICK, DEC);\r
-    } \r
-    else {\r
-      Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);\r
-    }\r
-    Serial.print(" ");\r
-  }\r
-  Serial.println("");\r
-}\r
-\r
-IRrecv irrecv(0);\r
-decode_results results;\r
-\r
-class IRsendDummy : \r
-public IRsend\r
-{\r
-public:\r
-  // For testing, just log the marks/spaces\r
-#define SENDLOG_LEN 128\r
-  int sendlog[SENDLOG_LEN];\r
-  int sendlogcnt;\r
-  IRsendDummy() : \r
-  IRsend() {\r
-  }\r
-  void reset() {\r
-    sendlogcnt = 0;\r
-  }\r
-  void mark(int time) {\r
-    sendlog[sendlogcnt] = time;\r
-    if (sendlogcnt < SENDLOG_LEN) sendlogcnt++;\r
-  }\r
-  void space(int time) {\r
-    sendlog[sendlogcnt] = -time;\r
-    if (sendlogcnt < SENDLOG_LEN) sendlogcnt++;\r
-  }\r
-  // Copies the dummy buf into the interrupt buf\r
-  void useDummyBuf() {\r
-    int last = SPACE;\r
-    irparams.rcvstate = STATE_STOP;\r
-    irparams.rawlen = 1; // Skip the gap\r
-    for (int i = 0 ; i < sendlogcnt; i++) {\r
-      if (sendlog[i] < 0) {\r
-        if (last == MARK) {\r
-          // New space\r
-          irparams.rawbuf[irparams.rawlen++] = (-sendlog[i] - MARK_EXCESS) / USECPERTICK;\r
-          last = SPACE;\r
-        } \r
-        else {\r
-          // More space\r
-          irparams.rawbuf[irparams.rawlen - 1] += -sendlog[i] / USECPERTICK;\r
-        }\r
-      } \r
-      else if (sendlog[i] > 0) {\r
-        if (last == SPACE) {\r
-          // New mark\r
-          irparams.rawbuf[irparams.rawlen++] = (sendlog[i] + MARK_EXCESS) / USECPERTICK;\r
-          last = MARK;\r
-        } \r
-        else {\r
-          // More mark\r
-          irparams.rawbuf[irparams.rawlen - 1] += sendlog[i] / USECPERTICK;\r
-        }\r
-      }\r
-    }\r
-    if (irparams.rawlen % 2) {\r
-      irparams.rawlen--; // Remove trailing space\r
-    }\r
-  }\r
-};\r
-\r
-IRsendDummy irsenddummy;\r
-\r
-void verify(unsigned long val, int bits, int type) {\r
-  irsenddummy.useDummyBuf();\r
-  irrecv.decode(&results);\r
-  Serial.print("Testing ");\r
-  Serial.print(val, HEX);\r
-  if (results.value == val && results.bits == bits && results.decode_type == type) {\r
-    Serial.println(": OK");\r
-  } \r
-  else {\r
-    Serial.println(": Error");\r
-    dump(&results);\r
-  }\r
-}  \r
-\r
-void testNEC(unsigned long val, int bits) {\r
-  irsenddummy.reset();\r
-  irsenddummy.sendNEC(val, bits);\r
-  verify(val, bits, NEC);\r
-}\r
-void testSony(unsigned long val, int bits) {\r
-  irsenddummy.reset();\r
-  irsenddummy.sendSony(val, bits);\r
-  verify(val, bits, SONY);\r
-}\r
-void testRC5(unsigned long val, int bits) {\r
-  irsenddummy.reset();\r
-  irsenddummy.sendRC5(val, bits);\r
-  verify(val, bits, RC5);\r
-}\r
-void testRC6(unsigned long val, int bits) {\r
-  irsenddummy.reset();\r
-  irsenddummy.sendRC6(val, bits);\r
-  verify(val, bits, RC6);\r
-}\r
-\r
-void test() {\r
-  Serial.println("NEC tests");\r
-  testNEC(0x00000000, 32);\r
-  testNEC(0xffffffff, 32);\r
-  testNEC(0xaaaaaaaa, 32);\r
-  testNEC(0x55555555, 32);\r
-  testNEC(0x12345678, 32);\r
-  Serial.println("Sony tests");\r
-  testSony(0xfff, 12);\r
-  testSony(0x000, 12);\r
-  testSony(0xaaa, 12);\r
-  testSony(0x555, 12);\r
-  testSony(0x123, 12);\r
-  Serial.println("RC5 tests");\r
-  testRC5(0xfff, 12);\r
-  testRC5(0x000, 12);\r
-  testRC5(0xaaa, 12);\r
-  testRC5(0x555, 12);\r
-  testRC5(0x123, 12);\r
-  Serial.println("RC6 tests");\r
-  testRC6(0xfffff, 20);\r
-  testRC6(0x00000, 20);\r
-  testRC6(0xaaaaa, 20);\r
-  testRC6(0x55555, 20);\r
-  testRC6(0x12345, 20);\r
-}\r
-\r
-void setup()\r
-{\r
-  Serial.begin(9600);\r
-  test();\r
-}\r
-\r
-void loop() {\r
-}\r
diff --git a/rf433ctl/IRremote/keywords.txt b/rf433ctl/IRremote/keywords.txt
deleted file mode 100644 (file)
index 7bf0f25..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#######################################
-# Syntax Coloring Map For IRremote
-#######################################
-
-#######################################
-# Datatypes (KEYWORD1)
-#######################################
-
-decode_results KEYWORD1
-IRrecv KEYWORD1
-IRsend KEYWORD1
-
-#######################################
-# Methods and Functions (KEYWORD2)
-#######################################
-
-blink13 KEYWORD2
-decode KEYWORD2
-enableIRIn KEYWORD2
-resume KEYWORD2
-enableIROut KEYWORD2
-sendNEC KEYWORD2
-sendSony KEYWORD2
-sendRaw KEYWORD2
-sendRC5 KEYWORD2
-sendRC6 KEYWORD2
-#
-#######################################
-# Constants (LITERAL1)
-#######################################
-
-NEC LITERAL1
-SONY LITERAL1
-RC5 LITERAL1
-RC6 LITERAL1
-UNKNOWN LITERAL1
-REPEAT LITERAL1
diff --git a/rf433ctl/Makefile b/rf433ctl/Makefile
deleted file mode 100755 (executable)
index 617684b..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-## see README file
-
-TARGET = rf433ctl
-#TARGET = find_onewire
-INSTALL_DIR = $(PWD)/arduino
-PORT = /dev/ttyUSB0
-UPLOAD_RATE = 57600
-AVRDUDE_PROGRAMMER = stk500v1
-MCU = atmega328p
-# standard | micro |  mega | leonardo | eightanaloginputs
-VARIANT=standard
-F_CPU = 16000000
-
-############################################################################
-# Below here nothing should be changed...
-
-RESET_TTY_DIR=../reset_tty/
-RESET_TTY=$(RESET_TTY_DIR)reset_tty
-ARDUINO = $(INSTALL_DIR)/hardware/arduino
-ARDUINOCORE = $(ARDUINO)/cores/arduino
-ARDUINOVAR = $(ARDUINO)/variants/$(VARIANT)
-AVR_TOOLS_PATH = /usr/bin
-SRC =  $(ARDUINOCORE)/wiring.c \
-$(ARDUINOCORE)/wiring_analog.c $(ARDUINOCORE)/wiring_digital.c \
-$(ARDUINOCORE)/wiring_pulse.c  \
-$(ARDUINOCORE)/wiring_shift.c $(ARDUINOCORE)/WInterrupts.c
-CXXSRC = $(ARDUINOCORE)/new.cpp $(ARDUINOCORE)/WString.cpp OneWire/OneWire.cpp DallasTemperature/DallasTemperature.cpp  $(ARDUINOCORE)/HardwareSerial.cpp $(ARDUINOCORE)/Print.cpp $(ARDUINOCORE)/WMath.cpp IRremote/IRremote.cpp
-FORMAT = ihex
-
-
-# Name of this Makefile (used for "make depend").
-MAKEFILE = Makefile
-
-# Debugging format.
-# Native formats for AVR-GCC's -g are stabs [default], or dwarf-2.
-# AVR (extended) COFF requires stabs, plus an avr-objcopy run.
-DEBUG = stabs
-
-OPT = s
-
-# Place -D or -U options here
-CDEFS = -DF_CPU=$(F_CPU)
-CXXDEFS = -DF_CPU=$(F_CPU)
-
-# Place -I options here
-CINCS =  -I ./OneWire -I ./DallasTemperature -I ./IRremote -I$(ARDUINOCORE) -I $(ARDUINOVAR)
-CXXINCS = -I ./OneWire -I ./DallasTemperature -I ./IRremote -I$(ARDUINOCORE) -I $(ARDUINOVAR)
-
-# Compiler flag to set the C Standard level.
-# c89   - "ANSI" C
-# gnu89 - c89 plus GCC extensions
-# c99   - ISO C99 standard (not yet fully implemented)
-# gnu99 - c99 plus GCC extensions
-#CSTANDARD = -std=gnu99
-CSTANDARD = 
-CDEBUG = -g$(DEBUG)
-#CWARN = -Wall -Wstrict-prototypes
-CWARN = -Wall 
-CTUNING = -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
-#CEXTRA = -Wa,-adhlns=$(<:.c=.lst)
-
-CFLAGS = $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CWARN) $(CSTANDARD) $(CEXTRA)
-CXXFLAGS = $(CDEFS) $(CXXINCS) -O$(OPT)
-#ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs 
-LDFLAGS = -lm
-
-
-# Programming support using avrdude. Settings and variables.
-AVRDUDE_PORT = $(PORT)
-AVRDUDE_WRITE_FLASH = -U flash:w:applet/$(TARGET).hex
-AVRDUDE_FLAGS = -V -F -C $(INSTALL_DIR)/hardware/tools/avrdude.conf \
--p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) \
--b $(UPLOAD_RATE)
-
-# Program settings
-CC = $(AVR_TOOLS_PATH)/avr-gcc
-CXX = $(AVR_TOOLS_PATH)/avr-g++
-OBJCOPY = $(AVR_TOOLS_PATH)/avr-objcopy
-OBJDUMP = $(AVR_TOOLS_PATH)/avr-objdump
-AR  = $(AVR_TOOLS_PATH)/avr-ar
-SIZE = $(AVR_TOOLS_PATH)/avr-size
-NM = $(AVR_TOOLS_PATH)/avr-nm
-#AVRDUDE = $(AVR_TOOLS_PATH)/avrdude
-AVRDUDE = $(INSTALL_DIR)/hardware/tools/avrdude
-REMOVE = rm -f
-MV = mv -f
-
-# Define all object files.
-OBJ = $(SRC:.c=.o) $(CXXSRC:.cpp=.o) $(ASRC:.S=.o) 
-
-# Define all listing files.
-LST = $(ASRC:.S=.lst) $(CXXSRC:.cpp=.lst) $(SRC:.c=.lst)
-
-# Combine all necessary flags and optional flags.
-# Add target processor to flags.
-ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS)
-ALL_CXXFLAGS = -mmcu=$(MCU) -I. $(CXXFLAGS)
-ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
-
-
-# Default target.
-all: applet_files build sizeafter
-
-build: elf hex 
-
-applet_files: $(TARGET).pde
-       # Here is the "preprocessing".
-       # It creates a .cpp file based with the same name as the .pde file.
-       # At the end there is a generic main() function attached.
-       # Then the .cpp file will be compiled. Errors during compile will
-       # refer to this new, automatically generated, file. 
-       # Not the original .pde file you actually edit...
-       test -d applet || mkdir applet
-       echo '#include <Arduino.h>' > applet/$(TARGET).cpp
-       cat $(TARGET).pde >> applet/$(TARGET).cpp
-       cat $(ARDUINOCORE)/main.cpp >> applet/$(TARGET).cpp
-
-elf: applet/$(TARGET).elf
-hex: applet/$(TARGET).hex
-eep: applet/$(TARGET).eep
-lss: applet/$(TARGET).lss 
-sym: applet/$(TARGET).sym
-
-# Program the device.  
-upload: applet/$(TARGET).hex $(RESET_TTY) 
-       $(RESET_TTY) $(PORT)
-       $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH)
-
-
-       # Display size of file.
-HEXSIZE = $(SIZE) --target=$(FORMAT) applet/$(TARGET).hex
-ELFSIZE = $(SIZE)  applet/$(TARGET).elf
-sizebefore:
-       @if [ -f applet/$(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(HEXSIZE); echo; fi
-
-sizeafter:
-       @if [ -f applet/$(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(HEXSIZE); echo; fi
-
-
-# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
-COFFCONVERT=$(OBJCOPY) --debugging \
---change-section-address .data-0x800000 \
---change-section-address .bss-0x800000 \
---change-section-address .noinit-0x800000 \
---change-section-address .eeprom-0x810000 
-
-
-coff: applet/$(TARGET).elf
-       $(COFFCONVERT) -O coff-avr applet/$(TARGET).elf $(TARGET).cof
-
-
-extcoff: $(TARGET).elf
-       $(COFFCONVERT) -O coff-ext-avr applet/$(TARGET).elf $(TARGET).cof
-
-
-.SUFFIXES: .elf .hex .eep .lss .sym
-
-.elf.hex:
-       $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
-
-.elf.eep:
-       -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
-       --change-section-lma .eeprom=0 -O $(FORMAT) $< $@
-
-# Create extended listing file from ELF output file.
-.elf.lss:
-       $(OBJDUMP) -h -S $< > $@
-
-# Create a symbol table from ELF output file.
-.elf.sym:
-       $(NM) -n $< > $@
-
-       # Link: create ELF output file from library.
-applet/$(TARGET).elf: $(TARGET).pde applet/core.a 
-       $(CC) $(ALL_CFLAGS) -o $@ applet/$(TARGET).cpp -L. applet/core.a $(LDFLAGS)
-
-applet/core.a: $(OBJ)
-       @for i in $(OBJ); do echo $(AR) rcs applet/core.a $$i; $(AR) rcs applet/core.a $$i; done
-
-
-
-# Compile: create object files from C++ source files.
-.cpp.o:
-       $(CXX) -c $(ALL_CXXFLAGS) $< -o $@ 
-
-# Compile: create object files from C source files.
-.c.o:
-       $(CC) -c $(ALL_CFLAGS) $< -o $@ 
-
-
-# Compile: create assembler files from C source files.
-.c.s:
-       $(CC) -S $(ALL_CFLAGS) $< -o $@
-
-
-# Assemble: create object files from assembler source files.
-.S.o:
-       $(CC) -c $(ALL_ASFLAGS) $< -o $@
-
-
-
-# Target: clean project.
-clean:
-       $(REMOVE) applet/$(TARGET).cpp applet/$(TARGET).hex applet/$(TARGET).eep applet/$(TARGET).cof applet/$(TARGET).elf \
-       applet/$(TARGET).map applet/$(TARGET).sym applet/$(TARGET).lss applet/core.a \
-       $(OBJ) $(LST) $(SRC:.c=.s) $(SRC:.c=.d) $(CXXSRC:.cpp=.s) $(CXXSRC:.cpp=.d)
-
-depend:
-       if grep '^# DO NOT DELETE' $(MAKEFILE) >/dev/null; \
-       then \
-               sed -e '/^# DO NOT DELETE/,$$d' $(MAKEFILE) > \
-                       $(MAKEFILE).$$$$ && \
-               $(MV) $(MAKEFILE).$$$$ $(MAKEFILE); \
-       fi
-       echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' \
-               >> $(MAKEFILE); \
-       $(CC) -M -mmcu=$(MCU) $(CDEFS) $(CINCS) $(SRC) $(ASRC) >> $(MAKEFILE)
-
-$(RESET_TTY): 
-       make -C $(RESET_TTY_DIR)
-
-.PHONY:        all build elf hex eep lss sym program coff extcoff clean depend applet_files sizebefore sizeafter
diff --git a/rf433ctl/OneWire/OneWire.cpp b/rf433ctl/OneWire/OneWire.cpp
deleted file mode 100644 (file)
index e717620..0000000
+++ /dev/null
@@ -1,502 +0,0 @@
-/*\r
-Copyright (c) 2007, Jim Studt\r
-\r
-\r
-Version 2.0: Modifications by Paul Stoffregen, January 2010:\r
-http://www.pjrc.com/teensy/td_libs_OneWire.html\r
-  Search fix from Robin James\r
-    http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1238032295/27#27\r
-  Use direct optimized I/O in all cases\r
-  Disable interrupts during timing critical sections\r
-    (this solves many random communication errors)\r
-  Disable interrupts during read-modify-write I/O\r
-  Reduce RAM consumption by eliminating unnecessary\r
-    variables and trimming many to 8 bits\r
-  Optimize both crc8 - table version moved to flash\r
-\r
-Modified to work with larger numbers of devices - avoids loop.\r
-Tested in Arduino 11 alpha with 12 sensors.\r
-26 Sept 2008 -- Robin James\r
-http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1238032295/27#27\r
-\r
-Updated to work with arduino-0008 and to include skip() as of\r
-2007/07/06. --RJL20\r
-\r
-Modified to calculate the 8-bit CRC directly, avoiding the need for\r
-the 256-byte lookup table to be loaded in RAM.  Tested in arduino-0010\r
--- Tom Pollard, Jan 23, 2008\r
-\r
-Permission is hereby granted, free of charge, to any person obtaining\r
-a copy of this software and associated documentation files (the\r
-"Software"), to deal in the Software without restriction, including\r
-without limitation the rights to use, copy, modify, merge, publish,\r
-distribute, sublicense, and/or sell copies of the Software, and to\r
-permit persons to whom the Software is furnished to do so, subject to\r
-the following conditions:\r
-\r
-The above copyright notice and this permission notice shall be\r
-included in all copies or substantial portions of the Software.\r
-\r
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
-\r
-Much of the code was inspired by Derek Yerger's code, though I don't\r
-think much of that remains.  In any event that was..\r
-    (copyleft) 2006 by Derek Yerger - Free to distribute freely.\r
-\r
-The CRC code was excerpted and inspired by the Dallas Semiconductor\r
-sample code bearing this copyright.\r
-//---------------------------------------------------------------------------\r
-// Copyright (C) 2000 Dallas Semiconductor Corporation, All Rights Reserved.\r
-//\r
-// Permission is hereby granted, free of charge, to any person obtaining a\r
-// copy of this software and associated documentation files (the "Software"),\r
-// to deal in the Software without restriction, including without limitation\r
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
-// and/or sell copies of the Software, and to permit persons to whom the\r
-// Software is furnished to do so, subject to the following conditions:\r
-//\r
-// The above copyright notice and this permission notice shall be included\r
-// in all copies or substantial portions of the Software.\r
-//\r
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-// MERCHANTABILITY,  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r
-// IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES\r
-// OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\r
-// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r
-// OTHER DEALINGS IN THE SOFTWARE.\r
-//\r
-// Except as contained in this notice, the name of Dallas Semiconductor\r
-// shall not be used except as stated in the Dallas Semiconductor\r
-// Branding Policy.\r
-//--------------------------------------------------------------------------\r
-*/\r
-\r
-#include "OneWire.h"\r
-#include "pins_arduino.h"\r
-#include "Arduino.h"\r
-\r
-extern "C" {\r
-#include <avr/io.h>\r
-#include <avr/interrupt.h>\r
-#include <avr/pgmspace.h>\r
-}\r
-\r
-OneWire::OneWire(uint8_t pin)\r
-{\r
-       bitmask =  digitalPinToBitMask(pin);\r
-       baseReg = portInputRegister(digitalPinToPort(pin));\r
-#if ONEWIRE_SEARCH\r
-       reset_search();\r
-#endif\r
-}\r
-\r
-\r
-#define DIRECT_READ(base, mask)                (((*(base)) & (mask)) ? 1 : 0)\r
-#define DIRECT_MODE_INPUT(base, mask)  ((*(base+1)) &= ~(mask))\r
-#define DIRECT_MODE_OUTPUT(base, mask) ((*(base+1)) |= (mask))\r
-#define DIRECT_WRITE_LOW(base, mask)   ((*(base+2)) &= ~(mask))\r
-#define DIRECT_WRITE_HIGH(base, mask)  ((*(base+2)) |= (mask))\r
-\r
-\r
-// Perform the onewire reset function.  We will wait up to 250uS for\r
-// the bus to come high, if it doesn't then it is broken or shorted\r
-// and we return a 0;\r
-//\r
-// Returns 1 if a device asserted a presence pulse, 0 otherwise.\r
-//\r
-uint8_t OneWire::reset(void)\r
-{\r
-       uint8_t mask=bitmask;\r
-       volatile uint8_t *reg asm("r30") = baseReg;\r
-       uint8_t r;\r
-       uint8_t retries = 125;\r
-\r
-       cli();\r
-       DIRECT_MODE_INPUT(reg, mask);\r
-       sei();\r
-       // wait until the wire is high... just in case\r
-       do {\r
-               if (--retries == 0) return 0;\r
-               delayMicroseconds(2);\r
-       } while ( !DIRECT_READ(reg, mask));\r
-\r
-       cli();\r
-       DIRECT_WRITE_LOW(reg, mask);\r
-       DIRECT_MODE_OUTPUT(reg, mask);  // drive output low\r
-       sei();\r
-       delayMicroseconds(500);\r
-       cli();\r
-       DIRECT_MODE_INPUT(reg, mask);   // allow it to float\r
-       delayMicroseconds(80);\r
-       r = !DIRECT_READ(reg, mask);\r
-       sei();\r
-       delayMicroseconds(420);\r
-       return r;\r
-}\r
-\r
-//\r
-// Write a bit. Port and bit is used to cut lookup time and provide\r
-// more certain timing.\r
-//\r
-void OneWire::write_bit(uint8_t v)\r
-{\r
-       uint8_t mask=bitmask;\r
-       volatile uint8_t *reg asm("r30") = baseReg;\r
-\r
-       if (v & 1) {\r
-               cli();\r
-               DIRECT_WRITE_LOW(reg, mask);\r
-               DIRECT_MODE_OUTPUT(reg, mask);  // drive output low\r
-               delayMicroseconds(10);\r
-               DIRECT_WRITE_HIGH(reg, mask);   // drive output high\r
-               sei();\r
-               delayMicroseconds(55);\r
-       } else {\r
-               cli();\r
-               DIRECT_WRITE_LOW(reg, mask);\r
-               DIRECT_MODE_OUTPUT(reg, mask);  // drive output low\r
-               delayMicroseconds(65);\r
-               DIRECT_WRITE_HIGH(reg, mask);   // drive output high\r
-               sei();\r
-               delayMicroseconds(5);\r
-       }\r
-}\r
-\r
-//\r
-// Read a bit. Port and bit is used to cut lookup time and provide\r
-// more certain timing.\r
-//\r
-uint8_t OneWire::read_bit(void)\r
-{\r
-       uint8_t mask=bitmask;\r
-       volatile uint8_t *reg asm("r30") = baseReg;\r
-       uint8_t r;\r
-\r
-       cli();\r
-       DIRECT_MODE_OUTPUT(reg, mask);\r
-       DIRECT_WRITE_LOW(reg, mask);\r
-       delayMicroseconds(3);\r
-       DIRECT_MODE_INPUT(reg, mask);   // let pin float, pull up will raise\r
-       delayMicroseconds(9);\r
-       r = DIRECT_READ(reg, mask);\r
-       sei();\r
-       delayMicroseconds(53);\r
-       return r;\r
-}\r
-\r
-//\r
-// Write a byte. The writing code uses the active drivers to raise the\r
-// pin high, if you need power after the write (e.g. DS18S20 in\r
-// parasite power mode) then set 'power' to 1, otherwise the pin will\r
-// go tri-state at the end of the write to avoid heating in a short or\r
-// other mishap.\r
-//\r
-void OneWire::write(uint8_t v, uint8_t power /* = 0 */) {\r
-    uint8_t bitMask;\r
-\r
-    for (bitMask = 0x01; bitMask; bitMask <<= 1) {\r
-       OneWire::write_bit( (bitMask & v)?1:0);\r
-    }\r
-    if ( !power) {\r
-       cli();\r
-       DIRECT_MODE_INPUT(baseReg, bitmask);\r
-       DIRECT_WRITE_LOW(baseReg, bitmask);\r
-       sei();\r
-    }\r
-}\r
-\r
-//\r
-// Read a byte\r
-//\r
-uint8_t OneWire::read() {\r
-    uint8_t bitMask;\r
-    uint8_t r = 0;\r
-\r
-    for (bitMask = 0x01; bitMask; bitMask <<= 1) {\r
-       if ( OneWire::read_bit()) r |= bitMask;\r
-    }\r
-    return r;\r
-}\r
-\r
-//\r
-// Do a ROM select\r
-//\r
-void OneWire::select( uint8_t rom[8])\r
-{\r
-    int i;\r
-\r
-    write(0x55);           // Choose ROM\r
-\r
-    for( i = 0; i < 8; i++) write(rom[i]);\r
-}\r
-\r
-//\r
-// Do a ROM skip\r
-//\r
-void OneWire::skip()\r
-{\r
-    write(0xCC);           // Skip ROM\r
-}\r
-\r
-void OneWire::depower()\r
-{\r
-       cli();\r
-       DIRECT_MODE_INPUT(baseReg, bitmask);\r
-       sei();\r
-}\r
-\r
-#if ONEWIRE_SEARCH\r
-\r
-//\r
-// You need to use this function to start a search again from the beginning.\r
-// You do not need to do it for the first search, though you could.\r
-//\r
-void OneWire::reset_search()\r
-  {\r
-  // reset the search state\r
-  LastDiscrepancy = 0;\r
-  LastDeviceFlag = FALSE;\r
-  LastFamilyDiscrepancy = 0;\r
-  for(int i = 7; ; i--)\r
-    {\r
-    ROM_NO[i] = 0;\r
-    if ( i == 0) break;\r
-    }\r
-  }\r
-\r
-//\r
-// Perform a search. If this function returns a '1' then it has\r
-// enumerated the next device and you may retrieve the ROM from the\r
-// OneWire::address variable. If there are no devices, no further\r
-// devices, or something horrible happens in the middle of the\r
-// enumeration then a 0 is returned.  If a new device is found then\r
-// its address is copied to newAddr.  Use OneWire::reset_search() to\r
-// start over.\r
-//\r
-// --- Replaced by the one from the Dallas Semiconductor web site ---\r
-//--------------------------------------------------------------------------\r
-// Perform the 1-Wire Search Algorithm on the 1-Wire bus using the existing\r
-// search state.\r
-// Return TRUE  : device found, ROM number in ROM_NO buffer\r
-//        FALSE : device not found, end of search\r
-//\r
-uint8_t OneWire::search(uint8_t *newAddr)\r
-{\r
-   uint8_t id_bit_number;\r
-   uint8_t last_zero, rom_byte_number, search_result;\r
-   uint8_t id_bit, cmp_id_bit;\r
-\r
-   unsigned char rom_byte_mask, search_direction;\r
-\r
-   // initialize for search\r
-   id_bit_number = 1;\r
-   last_zero = 0;\r
-   rom_byte_number = 0;\r
-   rom_byte_mask = 1;\r
-   search_result = 0;\r
-\r
-   // if the last call was not the last one\r
-   if (!LastDeviceFlag)\r
-   {\r
-      // 1-Wire reset\r
-      if (!reset())\r
-      {\r
-         // reset the search\r
-         LastDiscrepancy = 0;\r
-         LastDeviceFlag = FALSE;\r
-         LastFamilyDiscrepancy = 0;\r
-         return FALSE;\r
-      }\r
-\r
-      // issue the search command\r
-      write(0xF0);\r
-\r
-      // loop to do the search\r
-      do\r
-      {\r
-         // read a bit and its complement\r
-         id_bit = read_bit();\r
-         cmp_id_bit = read_bit();\r
-\r
-         // check for no devices on 1-wire\r
-         if ((id_bit == 1) && (cmp_id_bit == 1))\r
-            break;\r
-         else\r
-         {\r
-            // all devices coupled have 0 or 1\r
-            if (id_bit != cmp_id_bit)\r
-               search_direction = id_bit;  // bit write value for search\r
-            else\r
-            {\r
-               // if this discrepancy if before the Last Discrepancy\r
-               // on a previous next then pick the same as last time\r
-               if (id_bit_number < LastDiscrepancy)\r
-                  search_direction = ((ROM_NO[rom_byte_number] & rom_byte_mask) > 0);\r
-               else\r
-                  // if equal to last pick 1, if not then pick 0\r
-                  search_direction = (id_bit_number == LastDiscrepancy);\r
-\r
-               // if 0 was picked then record its position in LastZero\r
-               if (search_direction == 0)\r
-               {\r
-                  last_zero = id_bit_number;\r
-\r
-                  // check for Last discrepancy in family\r
-                  if (last_zero < 9)\r
-                     LastFamilyDiscrepancy = last_zero;\r
-               }\r
-            }\r
-\r
-            // set or clear the bit in the ROM byte rom_byte_number\r
-            // with mask rom_byte_mask\r
-            if (search_direction == 1)\r
-              ROM_NO[rom_byte_number] |= rom_byte_mask;\r
-            else\r
-              ROM_NO[rom_byte_number] &= ~rom_byte_mask;\r
-\r
-            // serial number search direction write bit\r
-            write_bit(search_direction);\r
-\r
-            // increment the byte counter id_bit_number\r
-            // and shift the mask rom_byte_mask\r
-            id_bit_number++;\r
-            rom_byte_mask <<= 1;\r
-\r
-            // if the mask is 0 then go to new SerialNum byte rom_byte_number and reset mask\r
-            if (rom_byte_mask == 0)\r
-            {\r
-                rom_byte_number++;\r
-                rom_byte_mask = 1;\r
-            }\r
-         }\r
-      }\r
-      while(rom_byte_number < 8);  // loop until through all ROM bytes 0-7\r
-\r
-      // if the search was successful then\r
-      if (!(id_bit_number < 65))\r
-      {\r
-         // search successful so set LastDiscrepancy,LastDeviceFlag,search_result\r
-         LastDiscrepancy = last_zero;\r
-\r
-         // check for last device\r
-         if (LastDiscrepancy == 0)\r
-            LastDeviceFlag = TRUE;\r
-\r
-         search_result = TRUE;\r
-      }\r
-   }\r
-\r
-   // if no device found then reset counters so next 'search' will be like a first\r
-   if (!search_result || !ROM_NO[0])\r
-   {\r
-      LastDiscrepancy = 0;\r
-      LastDeviceFlag = FALSE;\r
-      LastFamilyDiscrepancy = 0;\r
-      search_result = FALSE;\r
-   }\r
-   for (int i = 0; i < 8; i++) newAddr[i] = ROM_NO[i];\r
-   return search_result;\r
-  }\r
-\r
-#endif\r
-\r
-#if ONEWIRE_CRC\r
-// The 1-Wire CRC scheme is described in Maxim Application Note 27:\r
-// "Understanding and Using Cyclic Redundancy Checks with Maxim iButton Products"\r
-//\r
-\r
-#if ONEWIRE_CRC8_TABLE\r
-// This table comes from Dallas sample code where it is freely reusable,\r
-// though Copyright (C) 2000 Dallas Semiconductor Corporation\r
-static const uint8_t PROGMEM dscrc_table[] = {\r
-      0, 94,188,226, 97, 63,221,131,194,156,126, 32,163,253, 31, 65,\r
-    157,195, 33,127,252,162, 64, 30, 95,  1,227,189, 62, 96,130,220,\r
-     35,125,159,193, 66, 28,254,160,225,191, 93,  3,128,222, 60, 98,\r
-    190,224,  2, 92,223,129, 99, 61,124, 34,192,158, 29, 67,161,255,\r
-     70, 24,250,164, 39,121,155,197,132,218, 56,102,229,187, 89,  7,\r
-    219,133,103, 57,186,228,  6, 88, 25, 71,165,251,120, 38,196,154,\r
-    101, 59,217,135,  4, 90,184,230,167,249, 27, 69,198,152,122, 36,\r
-    248,166, 68, 26,153,199, 37,123, 58,100,134,216, 91,  5,231,185,\r
-    140,210, 48,110,237,179, 81, 15, 78, 16,242,172, 47,113,147,205,\r
-     17, 79,173,243,112, 46,204,146,211,141,111, 49,178,236, 14, 80,\r
-    175,241, 19, 77,206,144,114, 44,109, 51,209,143, 12, 82,176,238,\r
-     50,108,142,208, 83, 13,239,177,240,174, 76, 18,145,207, 45,115,\r
-    202,148,118, 40,171,245, 23, 73,  8, 86,180,234,105, 55,213,139,\r
-     87,  9,235,181, 54,104,138,212,149,203, 41,119,244,170, 72, 22,\r
-    233,183, 85, 11,136,214, 52,106, 43,117,151,201, 74, 20,246,168,\r
-    116, 42,200,150, 21, 75,169,247,182,232, 10, 84,215,137,107, 53};\r
-\r
-//\r
-// Compute a Dallas Semiconductor 8 bit CRC. These show up in the ROM\r
-// and the registers.  (note: this might better be done without to\r
-// table, it would probably be smaller and certainly fast enough\r
-// compared to all those delayMicrosecond() calls.  But I got\r
-// confused, so I use this table from the examples.)\r
-//\r
-uint8_t OneWire::crc8( uint8_t *addr, uint8_t len)\r
-{\r
-       uint8_t crc = 0;\r
-\r
-       while (len--) {\r
-               crc = pgm_read_byte(dscrc_table + (crc ^ *addr++));\r
-       }\r
-       return crc;\r
-}\r
-#else\r
-//\r
-// Compute a Dallas Semiconductor 8 bit CRC directly.\r
-//\r
-uint8_t OneWire::crc8( uint8_t *addr, uint8_t len)\r
-{\r
-       uint8_t crc = 0;\r
-       \r
-       while (len--) {\r
-               uint8_t inbyte = *addr++;\r
-               for (uint8_t i = 8; i; i--) {\r
-                       uint8_t mix = (crc ^ inbyte) & 0x01;\r
-                       crc >>= 1;\r
-                       if (mix) crc ^= 0x8C;\r
-                       inbyte >>= 1;\r
-               }\r
-       }\r
-       return crc;\r
-}\r
-#endif\r
-\r
-#if ONEWIRE_CRC16\r
-static short oddparity[16] = { 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0 };\r
-\r
-//\r
-// Compute a Dallas Semiconductor 16 bit CRC. I have never seen one of\r
-// these, but here it is.\r
-//\r
-unsigned short OneWire::crc16(unsigned short *data, unsigned short len)\r
-{\r
-    unsigned short i;\r
-    unsigned short crc = 0;\r
-\r
-    for ( i = 0; i < len; i++) {\r
-       unsigned short cdata = data[len];\r
-\r
-       cdata = (cdata ^ (crc & 0xff)) & 0xff;\r
-       crc >>= 8;\r
-\r
-       if (oddparity[cdata & 0xf] ^ oddparity[cdata >> 4]) crc ^= 0xc001;\r
-\r
-       cdata <<= 6;\r
-       crc ^= cdata;\r
-       cdata <<= 1;\r
-       crc ^= cdata;\r
-    }\r
-    return crc;\r
-}\r
-#endif\r
-\r
-#endif\r
diff --git a/rf433ctl/OneWire/OneWire.h b/rf433ctl/OneWire/OneWire.h
deleted file mode 100644 (file)
index c579b94..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-#ifndef OneWire_h
-#define OneWire_h
-
-#include <inttypes.h>
-
-// you can exclude onewire_search by defining that to 0
-#ifndef ONEWIRE_SEARCH
-#define ONEWIRE_SEARCH 1
-#endif
-
-// You can exclude CRC checks altogether by defining this to 0
-#ifndef ONEWIRE_CRC
-#define ONEWIRE_CRC 1
-#endif
-
-// Select the table-lookup method of computing the 8-bit CRC
-// by setting this to 1.  The lookup table no longer consumes
-// limited RAM, but enlarges total code size by about 250 bytes
-#ifndef ONEWIRE_CRC8_TABLE
-#define ONEWIRE_CRC8_TABLE 0
-#endif
-
-// You can allow 16-bit CRC checks by defining this to 1
-// (Note that ONEWIRE_CRC must also be 1.)
-#ifndef ONEWIRE_CRC16
-#define ONEWIRE_CRC16 0
-#endif
-
-#define FALSE 0
-#define TRUE  1
-
-class OneWire
-{
-  private:
-    uint8_t bitmask;
-    volatile uint8_t *baseReg;
-
-#if ONEWIRE_SEARCH
-    // global search state
-    unsigned char ROM_NO[8];
-    uint8_t LastDiscrepancy;
-    uint8_t LastFamilyDiscrepancy;
-    uint8_t LastDeviceFlag;
-#endif
-
-  public:
-    OneWire( uint8_t pin);
-
-    // Perform a 1-Wire reset cycle. Returns 1 if a device responds
-    // with a presence pulse.  Returns 0 if there is no device or the
-    // bus is shorted or otherwise held low for more than 250uS
-    uint8_t reset(void);
-
-    // Issue a 1-Wire rom select command, you do the reset first.
-    void select( uint8_t rom[8]);
-
-    // Issue a 1-Wire rom skip command, to address all on bus.
-    void skip(void);
-
-    // Write a byte. If 'power' is one then the wire is held high at
-    // the end for parasitically powered devices. You are responsible
-    // for eventually depowering it by calling depower() or doing
-    // another read or write.
-    void write(uint8_t v, uint8_t power = 0);
-
-    // Read a byte.
-    uint8_t read(void);
-
-    // Write a bit. The bus is always left powered at the end, see
-    // note in write() about that.
-    void write_bit(uint8_t v);
-
-    // Read a bit.
-    uint8_t read_bit(void);
-
-    // Stop forcing power onto the bus. You only need to do this if
-    // you used the 'power' flag to write() or used a write_bit() call
-    // and aren't about to do another read or write. You would rather
-    // not leave this powered if you don't have to, just in case
-    // someone shorts your bus.
-    void depower(void);
-
-#if ONEWIRE_SEARCH
-    // Clear the search state so that if will start from the beginning again.
-    void reset_search();
-
-    // Look for the next device. Returns 1 if a new address has been
-    // returned. A zero might mean that the bus is shorted, there are
-    // no devices, or you have already retrieved all of them.  It
-    // might be a good idea to check the CRC to make sure you didn't
-    // get garbage.  The order is deterministic. You will always get
-    // the same devices in the same order.
-    uint8_t search(uint8_t *newAddr);
-#endif
-
-#if ONEWIRE_CRC
-    // Compute a Dallas Semiconductor 8 bit CRC, these are used in the
-    // ROM and scratchpad registers.
-    static uint8_t crc8( uint8_t *addr, uint8_t len);
-
-#if ONEWIRE_CRC16
-    // Compute a Dallas Semiconductor 16 bit CRC. Maybe. I don't have
-    // any devices that use this so this might be wrong. I just copied
-    // it from their sample code.
-    static unsigned short crc16(unsigned short *data, unsigned short len);
-#endif
-#endif
-};
-
-#endif
diff --git a/rf433ctl/OneWire/examples/readme.txt b/rf433ctl/OneWire/examples/readme.txt
deleted file mode 100644 (file)
index 02252de..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-
-OneWire library for Arduino
----------------------------
-
-Version 2.0 fixes search bugs (thanks to Robin James) and interrupt issues.
-http://www.pjrc.com/teensy/td_libs_OneWire.html
-
-
-This is a slightly modified version of the OneWire library originally written by Jim Studt for arduino-0007 and later updated for arduino-0008 by Josh Larios.  This new version eliminates the large lookup table that was previously used by the checksum calculation - otherwise it's identical to Josh's version.  It was developed under arduino-0010.
-
-For a general description and links, see
-
-    http://www.arduino.cc/playground/Learning/OneWire
-
-Jim Studt's original verion of this library is still available at
-
-    http://www.federated.com/~jim/onewire/
-
-Josh Larios' version is available at 
-
-    http://www.elsewhere.org/onewire/
-
-To install this library, you should just have to unzip the archive in the arduino-0010/hardware/libraries directory.  It will create a subdirectory
-called 'OneWire'.
-
-Tom Pollard
-pollard@alum.mit.edu
-May 20, 2008
diff --git a/rf433ctl/OneWire/examples/sample/sample.pde b/rf433ctl/OneWire/examples/sample/sample.pde
deleted file mode 100644 (file)
index 9124f52..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#include <OneWire.h>
-
-/* DS18S20 Temperature chip i/o */
-
-OneWire  ds(8);  // on pin 10
-
-void setup(void) {
-  Serial.begin(9600);
-}
-
-void loop(void) {
-  byte i;
-  byte present = 0;
-  byte data[12];
-  byte addr[8];
-  
-  if ( !ds.search(addr)) {
-    Serial.print("No more addresses.\n");
-    ds.reset_search();
-    delay(250);
-    return;
-  }
-  
-  Serial.print("R=");
-  for( i = 0; i < 8; i++) {
-    Serial.print(addr[i], HEX);
-    Serial.print(" ");
-  }
-
-  if ( OneWire::crc8( addr, 7) != addr[7]) {
-      Serial.print("CRC is not valid!\n");
-      return;
-  }
-  
-  if ( addr[0] != 0x10) {
-      Serial.print("Device is not a DS18S20 family device.\n");
-      return;
-  }
-
-  // The DallasTemperature library can do all this work for you!
-
-  ds.reset();
-  ds.select(addr);
-  ds.write(0x44,1);         // start conversion, with parasite power on at the end
-  
-  delay(1000);     // maybe 750ms is enough, maybe not
-  // we might do a ds.depower() here, but the reset will take care of it.
-  
-  present = ds.reset();
-  ds.select(addr);    
-  ds.write(0xBE);         // Read Scratchpad
-
-  Serial.print("P=");
-  Serial.print(present,HEX);
-  Serial.print(" ");
-  for ( i = 0; i < 9; i++) {           // we need 9 bytes
-    data[i] = ds.read();
-    Serial.print(data[i], HEX);
-    Serial.print(" ");
-  }
-  Serial.print(" CRC=");
-  Serial.print( OneWire::crc8( data, 8), HEX);
-  Serial.println();
-}
diff --git a/rf433ctl/OneWire/keywords.txt b/rf433ctl/OneWire/keywords.txt
deleted file mode 100644 (file)
index 243bc1a..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#######################################
-# Syntax Coloring Map For OneWire
-#######################################
-
-#######################################
-# Datatypes (KEYWORD1)
-#######################################
-
-OneWire        KEYWORD1
-
-#######################################
-# Methods and Functions (KEYWORD2)
-#######################################
-
-reset  KEYWORD2
-write_bit      KEYWORD2
-read_bit       KEYWORD2
-write  KEYWORD2
-read   KEYWORD2
-select KEYWORD2
-skip   KEYWORD2
-depower        KEYWORD2
-reset_search   KEYWORD2
-search KEYWORD2
-crc8   KEYWORD2
-crc16  KEYWORD2
-
-#######################################
-# Instances (KEYWORD2)
-#######################################
-
-
-#######################################
-# Constants (LITERAL1)
-#######################################
diff --git a/rf433ctl/README b/rf433ctl/README
deleted file mode 100644 (file)
index f7cade4..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-Realraum tuer instructions:
-
-1. install avr-gcc and tools:
-    $ sudo aptitude install gcc-avr avr-libc avrdude
-
-2. download arduino version 0015 exactly:
-    $ wget http://arduino.googlecode.com/files/arduino-0015-linux.tgz
-
-3. unpack and add link:
-    $ tar -xzf arduino-0015-linux.tgz
-    $ ln -s arduino-0015 arduino
-    
-4. update Makefile variables INSTALL_DIR and PORT to your needs
-
-5. build it
-    $ make
-
-6. flash it (press reset)
-    $ make upload 
-
-
-
-Arduino OneWire Lib 2.0:
-http://www.pjrc.com/teensy/td_libs_OneWire.html
-
-Dallas Temperature Library:
-http://download.milesburton.com/Arduino/MaximTemperature/DallasTemperature_350.zip
diff --git a/rf433ctl/find_onewire.pde b/rf433ctl/find_onewire.pde
deleted file mode 100644 (file)
index 8fedb62..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-#include <OneWire.h>
-#include <DallasTemperature.h>
-
-/* DS18S20 Temperature chip i/o */
-
-OneWire  ds(8); 
-DallasTemperature sensors(&ds);
-
-DeviceAddress insideThermometer = { 0x10, 0xE7, 0x77, 0xD3, 0x01, 0x08, 0x00, 0x3F };
-
-void printTemperature(DeviceAddress deviceAddress)
-{
-  float tempC = sensors.getTempC(deviceAddress);
-  Serial.print("Temp C: ");
-  Serial.print(tempC);
-  Serial.print(" Temp F: ");
-  Serial.println(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit
-}
-
-void setup(void) {
-  Serial.begin(9600);
-  sensors.begin();
-}
-
-void loop(void) {
-  if (millis() < 2000)
-  {
-    return;
-  }
-  
-  printTemperature(insideThermometer);
-  
-  byte i;
-  byte present = 0;
-  byte data[12];
-  byte addr[8];
-  
-  if ( !ds.search(addr)) {
-    Serial.print("\nNo more addresses.\n");
-    ds.reset_search();
-    delay(250);
-    return;
-  }
-  
-  Serial.print("\nR=");
-  for( i = 0; i < 8; i++) {
-    Serial.print(addr[i], HEX);
-    Serial.print(" ");
-  }
-
-  if ( OneWire::crc8( addr, 7) != addr[7]) {
-      Serial.print("  CRC is not valid!\n");
-      return;
-  }
-  
-  if ( addr[0] != 0x10) {
-      Serial.print("\nDevice is not a DS18S20 family device.\n");
-      return;
-  }
-
-  // The DallasTemperature library can do all this work for you!
-
-  ds.reset();
-  ds.select(addr);
-  ds.write(0x44,1);         // start conversion, with parasite power on at the end
-  
-  delay(1000);     // maybe 750ms is enough, maybe not
-  // we might do a ds.depower() here, but the reset will take care of it.
-  
-  present = ds.reset();
-  ds.select(addr);    
-  ds.write(0xBE);         // Read Scratchpad
-
-  Serial.print("\nP=");
-  Serial.print(present,HEX);
-  Serial.print(" ");
-  for ( i = 0; i < 9; i++) {           // we need 9 bytes
-    data[i] = ds.read();
-    Serial.print(data[i], HEX);
-    Serial.print(" ");
-  }
-  Serial.println();
-  Serial.print(" CRC=");
-  Serial.print( OneWire::crc8( data, 8), HEX);
-  Serial.println();
-}
diff --git a/rf433ctl/rf433ctl.pde b/rf433ctl/rf433ctl.pde
deleted file mode 100644 (file)
index 5b3c4b2..0000000
+++ /dev/null
@@ -1,607 +0,0 @@
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include <inttypes.h>
-#include <OneWire.h>
-#include <DallasTemperature.h>
-#include <IRremote.h>
-
-//********************************************************************//
-
-#define RF_DATA_OUT_PIN 13
-#define IR_MOVEMENT_PIN 9
-#define IR_MOVEMENT_PIN2 12
-#define ONE_WIRE_PIN 8
-#define PANIC_BUTTON_PIN 7
-#define PANICLED_PWM_PIN 6
-#define BLUELED_PWM_PIN 11
-#define PHOTO_ANALOGPIN 0
-//movement is reported if during IR_SAMPLE_DURATION at least IR_TRESHOLD ir signals are detectd
-#define IR_SAMPLE_DURATION 6000
-#define IR_TRESHOLD 5900
-//duration PanicButton needs to be pressed before status change occurs (i.e. for two PanicButton Reports, the buttons needs to be pressed 1000 cycles, releases 1000 cycles and again pressed 1000 cycles)
-#define PB_TRESHOLD 1000
-#define PHOTO_SAMPLE_INTERVAL 4000
-#define IRREMOTE_SEND_PIN 3   //hardcoded in library
-//WARNING IRremote Lib uses TCCR2
-
-OneWire  onewire(ONE_WIRE_PIN);
-DallasTemperature dallas_sensors(&onewire);
-DeviceAddress onShieldTemp = { 0x10, 0xE7, 0x77, 0xD3, 0x01, 0x08, 0x00, 0x3F };
-IRsend irsend;
-#define TEMPC_OFFSET_ARDUINO_GENEREATED_HEAT
-
-//********************************************************************//
-// IR Codes, 32 bit, NEC
-const int YAMAHA_CODE_BITS = 32;
-const unsigned long int YAMAHA_CODE_BASE = 0x0000000005EA10000;
-
-const char YAMAHA_POWER_TOGGLE =0xF8; //Power On/Off
-const char YAMAHA_POWER_OFF =0x78; //Power Off !!!
-const char YAMAHA_SLEEP =0xEA; //Toggle Sleep 120/90/60/30min or Off
-
-const char YAMAHA_CD =0xA8; //Input CD
-const char YAMAHA_TUNER =0x68; //Input Tuner
-const char YAMAHA_TAPE =0x18; //Input Toggle Tape/CD
-const char YAMAHA_DVD_SPDIF =0xE8; //Input Toggle DVD Auto / DVD Analog
-const char YAMAHA_SAT_SPDIFF =0x2A; //Input Toggle Sat-DTV Auto / Sat-DTV Analog
-const char YAMAHA_AUX =0xAA;  //Input AUX (mode)
-const char YAMAHA_VCR =0xF0; //Input VCR
-const char YAMAHA_EXT51DEC =0xE1; //Input Ext. Decoder On/Off
-
-const char YAMAHA_TUNER_PLUS =0x08; //Tuner Next Station 1-7  (of A1 - E7)
-const char YAMAHA_TUNER_MINUS =0x88; //Tuner Prev Station 1-7  (of A1 - E7)
-const char YAMAHA_TUNER_ABCDE =0x48; //Tuner Next Station Row A-E (of A1 - E7)
-
-const char YAMAHA_MUTE =0x38;
-const char YAMAHA_VOLUME_UP =0x58;
-const char YAMAHA_VOLUME_DOWN =0xD8;
-
-//const char YAMAHA_FRONT_LEVEL_P =0x01;  //no function
-//const char YAMAHA_FRONT_LEVEL_M =0x81; //no function
-//const char YAMAHA_CENTRE_LEVEL_P =0x41;  //no function
-//const char YAMAHA_CENTRE_LEVEL_M =0xC1; //no function
-//const char YAMAHA_REAR_LEVEL_P =0x7A; //no function
-//const char YAMAHA_REAR_LEVEL_M =0xFA; //no function
-const char YAMAHA_PLUS =0x4A;  //unteres Steuerkreuz: Taste Rechts (Plus)
-const char YAMAHA_MINUS =0xCA; //unteres Steuerkreuz: Taste Links (Minus)
-const char YAMAHA_MENU =0x39; // Menu: Settings
-const char YAMAHA_TEST =0xA1; // Test Sounds
-const char YAMAHA_TIME_LEVEL =0x19; //Settings for Delay, Subwfs, Right Surround, Left Surround, Center
-const char YAMAHA_TIME_LEVEL2 =0x61; //(also) Settings for Delay, Subwfs, Right Surround, Left Surround, Center
-const char YAMAHA_TIME_LEVEL3 =0x99; //(also) Settings for Delay, Subwfs, Right Surround, Left Surround, Center
-
-const char YAMAHA_EFFECT_TOGGLE =0x6A; //Effect Toggle On/Off
-const char YAMAHA_PRG_DOWN =0x9A; //Effect/DSP Programm Toggle in down direction
-const char YAMAHA_PRG_UP =0x1A; //Effect/DSP Programm Toggle in up direction
-const char YAMAHA_EFFECT1 =0x31; //Effect TV Sports
-const char YAMAHA_EFFECT2 =0x71; //Effect Rock Concert
-const char YAMAHA_EFFECT3 =0xB1;  //Effect Disco
-const char YAMAHA_EFFECT4 =0xD1;  //Mono Movie
-const char YAMAHA_EFFECT5 =0x91; //Effect Toggle 70mm Sci-Fi / 70mm Spectacle
-const char YAMAHA_EFFECT6 =0x51; //Effect Toggle 70mm General / 70mm Adventure
-const char YAMAHA_P5 =0xFB; //P5 PRT (1 Main Bypass)? (1587674115)
-
-//********************************************************************//
-
-#define TIMER_RUNNING (TIMSK1 & (1<<OCIE1A))
-
-void start_timer()
-{
-  // timer 1: 2 ms
-  TCCR1A = 0;                    // prescaler 1:8, WGM = 4 (CTC)
-  TCCR1B = 1<<WGM12 | 1<<CS11;   //
-//  OCR1A = 39;        // (1+39)*8 = 320 -> 0.02ms @ 16 MHz -> 1*alpha
-//default: alpha=0.08
-  OCR1A = 159;        // (1+159)*8 = 1280 -> 0.08ms @ 16 MHz -> 1*alpha
-//  OCR1A = 154;        // (1+154)*8 = 1240 -> 0.0775ms @ 16 MHz -> 1*alpha
-//  OCR1A = 207;        // (1+207)*8 = 1664 -> 0.104ms @ 16 MHz -> 1*alpha
-  TCNT1 = 0;          // reseting timer
-  TIMSK1 = 1<<OCIE1A; // enable Interrupt
-}
-
-void stop_timer() // stop the timer
-{
-  // timer1
-  TCCR1B = 0; // no clock source
-  TIMSK1 = 0; // disable timer interrupt
-}
-
-#define NUM_REPEAT_SIGNAL 8
-#define RF_SIGNAL_BYTES 3
-#define RF_SIGNAL_BITS RF_SIGNAL_BYTES * 8
-
-typedef struct {
-  byte duration_short_pulse;  //mulitple of 0.08ms, should be === 0 (mod 4)
-  byte short_mult;
-  byte long_mult;
-  byte sync_mult;
-  byte signal[RF_SIGNAL_BYTES];  //24bit signal info, excluding sync signal (short 1 followed by long pause (~128*0.08ms))
-                            //for each bit: 0 means 1/4 Tau high followed by 3/4 Tau low;    1 means 3/4 Tau high followed by 1/4 Tau low
-} rf_signal;
-
-rf_signal current_signal = {6, 1, 3, 31, {0,0,0}};
-
-typedef struct {
-  byte atime; // time counter
-  byte bit;  //index for current bit
-  byte repeatc; //downward couner of repetition
-  byte state; // current output to RF Pin (position within the bit)
-} rf_state;
-
-rf_state current_state = { 0, 0, 0, 0};
-int rf_num_transmissions_to_acknowledge = 0;
-
-#define CURRENT_BIT_CNT (RF_SIGNAL_BITS - current_state.bit - 1)
-#define CURRENT_BIT (( current_signal.signal[ CURRENT_BIT_CNT/8] >> (CURRENT_BIT_CNT % 8)  )& 1)
-#define RF_TIME_SHORT (current_signal.short_mult * current_signal.duration_short_pulse)
-#define RF_TIME_LONG (current_signal.long_mult * current_signal.duration_short_pulse)
-#define RF_TIME_SNYC (current_signal.sync_mult * current_signal.duration_short_pulse)
-#define RF_OFF digitalWrite(RF_DATA_OUT_PIN, HIGH)
-#define RF_ON digitalWrite(RF_DATA_OUT_PIN, LOW)
-ISR(TIMER1_COMPA_vect)
-{
-  if ( current_state.state || current_state.bit || current_state.repeatc || current_state.atime)
-  {
-    if (current_state.atime)
-    {
-       current_state.atime--;
-    }
-    //atime ran out
-    else if (current_state.state) //was in state 1 or 2
-    {
-      RF_OFF;  //stop sending
-      if (current_state.state == 2) //aka sync
-        current_state.atime=RF_TIME_SNYC;
-      else
-        current_state.atime=CURRENT_BIT?
-           RF_TIME_SHORT
-          :RF_TIME_LONG;
-      current_state.state=0;
-    } 
-    else if  (current_state.bit)  //still more than 0 bits to do
-    {
-      current_state.bit--;
-      current_state.state=1;
-      current_state.atime=CURRENT_BIT?
-           RF_TIME_LONG
-          :RF_TIME_SHORT;
-      RF_ON;  //start sending
-    }
-    else if (current_state.repeatc) 
-    {
-      current_state.bit=RF_SIGNAL_BITS;
-      current_state.repeatc--;
-      current_state.state=2;
-      //start sync (short pulse followed by long pause)
-      RF_ON;
-      current_state.atime=RF_TIME_SHORT;
-    }
-  }
-  else
-  {
-    stop_timer();
-    RF_OFF;
-    rf_num_transmissions_to_acknowledge++;
-  }
-}
-//********************************************************************//
-
-void serial_read_send_rf_cmd()
-{
-  while (TIMER_RUNNING)
-  {}
-  for (byte chr=0; chr < 3; chr++)
-  {
-    while (!Serial.available())
-    {}
-    current_signal.signal[chr]=Serial.read();
-  }
-  current_state.repeatc=NUM_REPEAT_SIGNAL;
-  start_timer();
-}
-
-void send_rf_cmd(const char sr[])
-{
-  while (TIMER_RUNNING)
-  {}
-  for (byte chr=0; chr < 3; chr++)
-  {
-    current_signal.signal[chr]=sr[chr];
-  }
-  current_state.repeatc=NUM_REPEAT_SIGNAL;
-  start_timer();
-}
-
-void check_frame_done()
-{
-  while (rf_num_transmissions_to_acknowledge > 0)
-  {
-    rf_num_transmissions_to_acknowledge--;
-    Serial.println("Ok");
-  }
-}
-
-//********************************************************************//
-
-void printTemperature(DeviceAddress deviceAddress)
-{
-  dallas_sensors.requestTemperatures();
-  float tempC = dallas_sensors.getTempC(deviceAddress);
-  //Serial.print("Temp C: ");
-  Serial.println(tempC TEMPC_OFFSET_ARDUINO_GENEREATED_HEAT);
-  //Serial.print(" Temp F: ");
-  //Serial.println(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit
-}
-
-//********************************************************************//
-
-unsigned int light_level_mean_ = 0;
-unsigned int light_sample_time_ = 0;
-
-void updateLightLevel(unsigned int pin)
-{
-  light_sample_time_++;
-  if (light_sample_time_ < PHOTO_SAMPLE_INTERVAL)
-    return;
-  light_sample_time_ = 0;
-
-  unsigned int value = analogRead(pin);
-  if (value == light_level_mean_)
-    return;
-
-  unsigned int diff = abs(value - light_level_mean_);
-  if (diff > 100)
-    light_level_mean_ = value;
-  else
-      light_level_mean_=(unsigned int) ( ((float) light_level_mean_) * 0.90 + ((float)value)*0.10 );
-}
-
-void printLightLevel()
-{
-  //Serial.print("Photo: ");
-  Serial.println(light_level_mean_);
-}
-
-//********************************************************************//
-
-unsigned long wm_start_[3]={0,0,0};
-bool wait_millis(unsigned long *start_time, unsigned long ms)
-{
-  if (ms == 0)
-    return false;
-  else if (*start_time > 0)
-  {
-    if (millis() < *start_time || millis() > (*start_time) + ms)
-    {
-      *start_time = 0;
-      return false;
-    }
-    else
-      return true;
-  }
-  else
-  {
-    *start_time=millis();
-    return true;
-  }
-}
-#define NUM_LEDS 2
-char flash_led_pins_[NUM_LEDS]={BLUELED_PWM_PIN,PANICLED_PWM_PIN};
-unsigned int flash_led_time_[3]={0,0,0};
-unsigned int flash_led_brightness_[3]={255,255,255};
-unsigned int flash_led_delay_[3]={8,8,8};
-unsigned int flash_led_initial_delay_[3]={0,0,0};
-void calculate_led_level()
-{
-  for (int ledid = 0; ledid < NUM_LEDS; ledid++)
-  {
-    if (flash_led_time_[ledid] == 0)
-      continue;
-    if (wait_millis(wm_start_ + ledid, flash_led_initial_delay_[ledid]))
-      continue;
-    flash_led_initial_delay_[ledid]=0;
-    if (wait_millis(wm_start_ + ledid, flash_led_delay_[ledid]))
-      continue;
-    flash_led_time_[ledid]--;
-    int c = abs(sin(float(flash_led_time_[ledid]) / 100.0)) * flash_led_brightness_[ledid];
-    //int d = abs(sin(float(flash_led_time_) / 100.0)) * flash_led_brightness_;
-    analogWrite(flash_led_pins_[ledid], 255-c);
-  }
-}
-
-// id: id of LED to flash (0,1)
-// times: # of times the LED should flash
-// brightness_divisor: 1: full brightness, 2: half brightness, ...
-// delay_divisor: 1: slow... 8: fastest
-// phase_divisor: 0.. same phase; 2.. pi/2 phase, 4.. pi phase, 6.. 3pi/2 phase
-void flash_led(unsigned int id, unsigned int times, unsigned int brightness_divisor, unsigned int delay_divisor, unsigned int phase_divisor)
-{
-  if (id >= NUM_LEDS)
-    return;
-  unsigned int new_flash_led_brightness = 255;
-  unsigned int new_flash_led_delay = 8;
-  if (times == 0)
-  {
-    analogWrite(flash_led_pins_[id],255); //off
-    return;
-  }
-  if (brightness_divisor > 1) //guard against div by zero
-    new_flash_led_brightness /= brightness_divisor;
-  if (delay_divisor > 1)  //guard against div by zero
-    new_flash_led_delay /= delay_divisor;
-  if (flash_led_time_[id] == 0 || new_flash_led_brightness > flash_led_brightness_[id])
-    flash_led_brightness_[id]=new_flash_led_brightness;
-  if (flash_led_time_[id] == 0 || new_flash_led_delay < flash_led_delay_[id])
-    flash_led_delay_[id]=new_flash_led_delay;
-  flash_led_time_[id] += 314*times;
-  flash_led_initial_delay_[id] = flash_led_delay_[id]*314*phase_divisor/8;
-}
-
-//********************************************************************//
-
-int save_tcnt2=0;
-int save_tccr2a=0;
-int save_tccr2b=0;
-void reset_timer2()
-{
-  TCNT2 = save_tcnt2;
-  TCCR2A = save_tccr2a;  // normal mode
-  TCCR2B = save_tccr2b;
-  //TCNT2 = 256 - (50*(16000000/8/1000000)) + 5;
-  //TCCR2A = 0;  // normal mode
-  //TCCR2B = 0;
-}
-
-void send_yamaha_ir_signal(char codebyte)
-{
-  unsigned long int code = codebyte & 0xFF;
-  code <<= 8;
-  code |= (0xff ^ codebyte) & 0xFF;
-  code |= YAMAHA_CODE_BASE;
-
-  //irsend changes PWM Timer Frequency among other things
-  //.. doesn't go well with PWM output using the same timer
-  //.. thus we just set output to 255 so whatever frequency is used, led is off for the duration
-  //analogWrite(BLUELED_PWM_PIN,255); // switch led off
-
-  irsend.sendNEC(code,YAMAHA_CODE_BITS);
-
-  reset_timer2();
-  analogWrite(BLUELED_PWM_PIN,255); // switch off led again to be sure
-                                      //is actually not necessary, since we are not multitasking/using interrupts, but just to be sure in case this might change
-
-  Serial.println("Ok");
-}
-
-//********************************************************************//
-
-void setup()
-{
-  pinMode(RF_DATA_OUT_PIN, OUTPUT);
-  digitalWrite(RF_DATA_OUT_PIN, HIGH);
-  pinMode(IR_MOVEMENT_PIN, INPUT);      // set pin to input
-  digitalWrite(IR_MOVEMENT_PIN, LOW);  // turn off pullup resistors
-  digitalWrite(IR_MOVEMENT_PIN2, LOW);  // turn off pullup resistors
-  pinMode(PANIC_BUTTON_PIN, INPUT);      // set pin to input
-  digitalWrite(PANIC_BUTTON_PIN, LOW);  // turn of pullup resistors
-  analogWrite(PANICLED_PWM_PIN,255);
-  analogWrite(BLUELED_PWM_PIN,255); //pwm sink(-) instead of pwm + (better for mosfets)
-  pinMode(IRREMOTE_SEND_PIN, OUTPUT);
-  digitalWrite(IRREMOTE_SEND_PIN, HIGH);
-
-  Serial.begin(9600);
-
-  onewire.reset();
-  onewire.reset_search();
-  dallas_sensors.begin();
-  //in case we change temp sensor:
-  if (!dallas_sensors.getAddress(onShieldTemp, 0))
-    Serial.println("Error: Unable to find address for Device 0");
-  dallas_sensors.setResolution(onShieldTemp, 9);
-
-  //save prev timer states:
-  save_tcnt2 = TCNT2;
-  save_tccr2a = TCCR2A;  // normal mode
-  save_tccr2b = TCCR2B;
-}
-
-unsigned int ir_time=IR_SAMPLE_DURATION;
-unsigned int ir_count=0;
-unsigned int ir_count2=0;
-boolean pb_last_state=0;
-boolean pb_state=0;
-boolean pb_postth_state=0;
-unsigned int pb_time=0;
-
-void sensorEchoCommand(char command)
-{
-  Serial.print("Sensor ");
-  Serial.print(command);
-  Serial.print(": ");
-}
-
-void loop()
-{
-  ir_time--;
-  ir_count += (digitalRead(IR_MOVEMENT_PIN) == HIGH);
-  ir_count2 += (digitalRead(IR_MOVEMENT_PIN2) == HIGH);
-
-  if (pb_time < PB_TRESHOLD)
-    pb_time++;
-  pb_state=(digitalRead(PANIC_BUTTON_PIN) == HIGH);
-
-  if (ir_time == 0)
-  {
-    if (ir_count >= IR_TRESHOLD || ir_count2 >= IR_TRESHOLD)
-    {
-      flash_led(0, 1, 8, 1, 0 );
-      Serial.println("movement");
-    }
-    ir_time=IR_SAMPLE_DURATION;
-    ir_count=0;
-    ir_count2=0;
-  }
-
-  if (pb_state == pb_last_state && pb_time >= PB_TRESHOLD)
-  {
-    if (pb_state && ! pb_postth_state)
-    {
-      pb_postth_state=1;
-      Serial.println("PanicButton");
-      flash_led(0, 28, 1, 4, 0 );
-      flash_led(1, 28, 1, 4, 4 );
-    }
-    else if (!pb_state)
-      pb_postth_state=0;
-  }
-  else if (pb_state != pb_last_state)
-  {
-    pb_time=0;
-    pb_last_state=pb_state;
-  }
-
-  updateLightLevel(PHOTO_ANALOGPIN);
-  calculate_led_level();
-  check_frame_done();
-  if(Serial.available()) {
-    char command = Serial.read();
-
-    if (command == '>')
-    {
-      serial_read_send_rf_cmd();
-    }
-    else if(command == 'A')  
-      send_rf_cmd("\x8a\xa0\x8a"); // pollin 00101 a 1
-    else if(command == 'a')
-      send_rf_cmd("\x8a\xa0\x2a");  // pollin 00101 a 0
-    else if(command == 'B')
-      send_rf_cmd("\xa0\xa2\xa8"); //white remote A 2 on
-    else if(command == 'b')
-      send_rf_cmd("\xa0\xa2\x28"); //white remote A 2 off    
-    else if(command == 'C')
-      send_rf_cmd("\xa2\xa0\xa8"); //white remote B 1 on
-    else if(command == 'c')
-      send_rf_cmd("\xa2\xa0\x28"); //white remote B 1 off
-    else if(command == 'D')
-      send_rf_cmd("\x8a\x88\x8a"); //pollin 00101 b 1
-    else if(command == 'd')
-      send_rf_cmd("\x8a\x88\x2a"); //pollin 00101 b 0
-    else if(command == 'E')
-      send_rf_cmd("\xa8\xa0\xa8"); //white remote C 1 on
-    else if(command == 'e')    
-      send_rf_cmd("\xa8\xa0\x28"); //white remote C 1 off
-    else if(command == 'F')
-      send_rf_cmd("\xa8\xa2\xa8");
-    else if(command == 'f')
-      send_rf_cmd("\xa8\xa2\x28");
-    else if(command == 'G')
-      send_rf_cmd("\xaa\xa0\xa8");
-    else if(command == 'g')
-      send_rf_cmd("\xaa\xa0\x28");
-    else if(command == 'H')
-      send_rf_cmd("\xaa\xa2\xa8");
-    else if(command == 'h')
-      send_rf_cmd("\xaa\xa2\x28");
-    else if(command == 'I')
-      send_rf_cmd("\x8a\x28\x8a"); //pollin 00101 c 1
-    else if(command == 'i')
-      send_rf_cmd("\x8a\x28\x2a"); //pollin 00101 c 0
-    else if(command == 'J')
-      send_rf_cmd("\x8a\xa8\x88"); //pollin 00101 d 1
-    else if(command == 'j')
-      send_rf_cmd("\x8a\xa8\x28"); //pollin 00101 d 0
-    else if(command == 'L')
-      send_rf_cmd("\xae\x2b\x30");
-    else if(command == 'l')
-      send_rf_cmd("\xae\x2b\xc0");
-    else if(command == 'M')
-      send_rf_cmd("\xae\x2e\x30");
-    else if(command == 'm')
-      send_rf_cmd("\xae\x2e\xc0");      
-    else if(command == 'N')
-      send_rf_cmd("\xae\x3a\x30");
-    else if(command == 'n')
-      send_rf_cmd("\xae\x3a\xc0");
-    else if(command == 'Z')
-      send_rf_cmd("\xa2\xa2\xaa");
-    else if(command == 'z')
-      send_rf_cmd("\xa2\xa2\x2a");
-    else if(command == '*')
-    {
-      sensorEchoCommand(command);
-      printTemperature(onShieldTemp);
-    }
-    else if(command == '?')
-    {
-      sensorEchoCommand(command);
-      printLightLevel();
-    }
-    else if (command == '^')
-    {
-      //flash_led(1, 1, 2, 1, 0);
-      flash_led(1, 1, 1, 1, 0);
-      Serial.println("Ok");
-    }
-    else if (command == '&')
-    {
-      flash_led(0, 1, 2, 1, 0);
-      Serial.println("Ok");
-    }
-    else if (command == '1')
-      send_yamaha_ir_signal(YAMAHA_CD);
-    else if (command == '2')
-      send_yamaha_ir_signal(YAMAHA_TUNER);
-    else if (command == '3')
-      send_yamaha_ir_signal(YAMAHA_TAPE);
-    else if (command == '4')
-      send_yamaha_ir_signal(YAMAHA_DVD_SPDIF);
-    else if (command == '5')
-      send_yamaha_ir_signal(YAMAHA_SAT_SPDIFF);
-    else if (command == '6')
-      send_yamaha_ir_signal(YAMAHA_VCR);
-//    else if (command == '7')
-//      send_yamaha_ir_signal();
-    else if (command == '8')
-      send_yamaha_ir_signal(YAMAHA_AUX);
-    else if (command == '9')
-      send_yamaha_ir_signal(YAMAHA_EXT51DEC);
-    else if (command == '0')
-      send_yamaha_ir_signal(YAMAHA_TEST);
-    else if (command == '/')
-      send_yamaha_ir_signal(YAMAHA_TUNER_ABCDE);
-    else if (command == '\\')
-      send_yamaha_ir_signal(YAMAHA_EFFECT_TOGGLE);
-    else if (command == '-')
-      send_yamaha_ir_signal(YAMAHA_TUNER_MINUS);
-    else if (command == '+')
-      send_yamaha_ir_signal(YAMAHA_TUNER_PLUS);
-    else if (command == ':')
-      send_yamaha_ir_signal(YAMAHA_POWER_OFF);
-    else if (command == '.')
-      send_yamaha_ir_signal(YAMAHA_POWER_TOGGLE);
-    else if (command == ';')
-      send_yamaha_ir_signal(YAMAHA_VOLUME_UP);
-    else if (command == ',')
-      send_yamaha_ir_signal(YAMAHA_VOLUME_DOWN);
-    else if (command == '_')
-      send_yamaha_ir_signal(YAMAHA_MUTE);
-    else if (command == '#')
-      send_yamaha_ir_signal(YAMAHA_MENU);
-    else if (command == '"')
-      send_yamaha_ir_signal(YAMAHA_PLUS);
-    else if (command == '!')
-      send_yamaha_ir_signal(YAMAHA_MINUS);
-    else if (command == '=')
-      send_yamaha_ir_signal(YAMAHA_TIME_LEVEL);
-    else if (command == '$')
-      send_yamaha_ir_signal(YAMAHA_PRG_DOWN);
-    else if (command == '%')
-      send_yamaha_ir_signal(YAMAHA_PRG_UP);
-    else if (command == '(')
-      send_yamaha_ir_signal(YAMAHA_SLEEP);
-    else if (command == ')')
-      send_yamaha_ir_signal(YAMAHA_P5);
-    else
-      Serial.println("Error: unknown command");
-  }
-}
diff --git a/rf433ctl/rf433ctl_timer_consolidation_experiment.pde b/rf433ctl/rf433ctl_timer_consolidation_experiment.pde
deleted file mode 100644 (file)
index 2fa4d79..0000000
+++ /dev/null
@@ -1,627 +0,0 @@
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include <inttypes.h>
-#include <OneWire.h>
-#include <DallasTemperature.h>
-#include <IRremote.h>
-
-//********************************************************************//
-
-#define RF_DATA_OUT_PIN 13
-#define IR_MOVEMENT_PIN 9
-#define ONE_WIRE_PIN 8
-#define PANIC_BUTTON_PIN 7
-#define PANICLED_PWM_PIN 6
-#define BLUELED_PWM_PIN 11
-#define PHOTO_ANALOGPIN 0
-//movement is reported if during IR_SAMPLE_DURATION at least IR_TRESHOLD ir signals are detectd
-#define IR_SAMPLE_DURATION 12000
-#define IR_TRESHOLD 8000
-//duration PanicButton needs to be pressed before status change occurs (i.e. for two PanicButton Reports, the buttons needs to be pressed 1000 cycles, releases 1000 cycles and again pressed 1000 cycles)
-#define PB_TRESHOLD 1000
-#define PHOTO_SAMPLE_INTERVAL 4000
-#define IRREMOTE_SEND_PIN 3   //hardcoded in library
-//WARNING IRremote Lib uses TCCR2
-
-OneWire  onewire(ONE_WIRE_PIN);
-DallasTemperature dallas_sensors(&onewire);
-DeviceAddress onShieldTemp = { 0x10, 0xE7, 0x77, 0xD3, 0x01, 0x08, 0x00, 0x3F };
-IRsend irsend; 
-#define TEMPC_OFFSET_ARDUINO_GENEREATED_HEAT 
-
-//********************************************************************//
-// IR Codes, 32 bit, NEC
-const int YAMAHA_CODE_BITS = 32;
-const unsigned long int YAMAHA_CODE_BASE = 0x0000000005EA10000;
-
-const char YAMAHA_POWER_TOGGLE =0xF8; //Power On/Off
-const char YAMAHA_POWER_OFF =0x78; //Power Off !!!
-const char YAMAHA_SLEEP =0xEA; //Toggle Sleep 120/90/60/30min or Off
-
-const char YAMAHA_CD =0xA8; //Input CD
-const char YAMAHA_TUNER =0x68; //Input Tuner
-const char YAMAHA_TAPE =0x18; //Input Toggle Tape/CD
-const char YAMAHA_DVD_SPDIF =0xE8; //Input Toggle DVD Auto / DVD Analog
-const char YAMAHA_SAT_SPDIFF =0x2A; //Input Toggle Sat-DTV Auto / Sat-DTV Analog
-const char YAMAHA_AUX =0xAA;  //Input AUX (mode)
-const char YAMAHA_VCR =0xF0; //Input VCR
-const char YAMAHA_EXT51DEC =0xE1; //Input Ext. Decoder On/Off
-
-const char YAMAHA_TUNER_PLUS =0x08; //Tuner Next Station 1-7  (of A1 - E7)
-const char YAMAHA_TUNER_MINUS =0x88; //Tuner Prev Station 1-7  (of A1 - E7)
-const char YAMAHA_TUNER_ABCDE =0x48; //Tuner Next Station Row A-E (of A1 - E7)
-
-const char YAMAHA_MUTE =0x38;
-const char YAMAHA_VOLUME_UP =0x58;
-const char YAMAHA_VOLUME_DOWN =0xD8;
-
-//const char YAMAHA_FRONT_LEVEL_P =0x01;  //no function
-//const char YAMAHA_FRONT_LEVEL_M =0x81; //no function
-//const char YAMAHA_CENTRE_LEVEL_P =0x41;  //no function
-//const char YAMAHA_CENTRE_LEVEL_M =0xC1; //no function
-//const char YAMAHA_REAR_LEVEL_P =0x7A; //no function
-//const char YAMAHA_REAR_LEVEL_M =0xFA; //no function
-const char YAMAHA_PLUS =0x4A;  //unteres Steuerkreuz: Taste Rechts (Plus)
-const char YAMAHA_MINUS =0xCA; //unteres Steuerkreuz: Taste Links (Minus)
-const char YAMAHA_MENU =0x39; // Menu: Settings
-const char YAMAHA_TEST =0xA1; // Test Sounds
-const char YAMAHA_TIME_LEVEL =0x19; //Settings for Delay, Subwfs, Right Surround, Left Surround, Center
-const char YAMAHA_TIME_LEVEL2 =0x61; //(also) Settings for Delay, Subwfs, Right Surround, Left Surround, Center
-const char YAMAHA_TIME_LEVEL3 =0x99; //(also) Settings for Delay, Subwfs, Right Surround, Left Surround, Center
-
-const char YAMAHA_EFFECT_TOGGLE =0x6A; //Effect Toggle On/Off
-const char YAMAHA_PRG_DOWN =0x9A; //Effect/DSP Programm Toggle in down direction
-const char YAMAHA_PRG_UP =0x1A; //Effect/DSP Programm Toggle in up direction
-const char YAMAHA_EFFECT1 =0x31; //Effect TV Sports
-const char YAMAHA_EFFECT2 =0x71; //Effect Rock Concert
-const char YAMAHA_EFFECT3 =0xB1;  //Effect Disco
-const char YAMAHA_EFFECT4 =0xD1;  //Mono Movie
-const char YAMAHA_EFFECT5 =0x91; //Effect Toggle 70mm Sci-Fi / 70mm Spectacle
-const char YAMAHA_EFFECT6 =0x51; //Effect Toggle 70mm General / 70mm Adventure
-const char YAMAHA_P5 =0xFB; //P5 PRT (1 Main Bypass)? (1587674115)
-
-//********************************************************************//
-
-typedef struct {
-  byte offset;
-  byte state;
-} rf_bit_t;
-
-// offset is number of alphas (0.08ms)
-
-const rf_bit_t zero_bit[] = { {  4, 1 },
-                              { 16, 0 },
-                              { 20, 1 },
-                              { 32, 0 },
-                              {  0, 0 } };
-
-const rf_bit_t one_bit[] = { { 12, 1 },
-                             { 16, 0 },
-                             { 28, 1 },
-                             { 32, 0 },
-                             {  0, 0 } };
-
-const rf_bit_t float_bit[] = { {  4, 1 },
-                               { 16, 0 },
-                               { 28, 1 },
-                               { 32, 0 },
-                               {  0, 0 } };
-
-const rf_bit_t sync_bit[] = { {   4, 1 },
-                              { 128, 0 },
-                              {   0, 0 } };
-
-typedef enum { ZERO = 0, ONE , FLOAT , SYNC } adbit_t;
-typedef byte ad_bit_t;
-#define WORD_LEN 13
-typedef ad_bit_t word_t[WORD_LEN];
-
-const rf_bit_t* bit_defs[] = { zero_bit, one_bit, float_bit, sync_bit };
-
-byte alpha_cnt = 0;
-byte bit_cnt = 0;
-byte chunk_cnt = 0;
-byte word_cnt = 0;
-const ad_bit_t* current_word;
-byte volatile frame_finished = 1;
-
-#define FRAME_LEN 8
-
-#define A1_ON  0
-#define A1_OFF 1
-#define A2_ON  2
-#define A2_OFF 3
-
-#define B1_ON  4
-#define B1_OFF 5
-#define B2_ON  6
-#define B2_OFF 7
-
-#define C1_ON  8
-#define C1_OFF 9
-#define C2_ON  10
-#define C2_OFF 11
-
-#define D1_ON  12
-#define D1_OFF 13
-#define D2_ON  14
-#define D2_OFF 15
-
-const word_t words[]  = { 
-{ ZERO,  ZERO,  FLOAT, FLOAT, ZERO,  ZERO, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, FLOAT, SYNC }, // A1_ON
-{ ZERO,  ZERO,  FLOAT, FLOAT, ZERO,  ZERO, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, ZERO,  SYNC }, // A1_OFF
-{ ZERO,  ZERO,  FLOAT, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, FLOAT, SYNC }, // A2_ON
-{ ZERO,  ZERO,  FLOAT, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, ZERO,  SYNC }, // A2_OFF
-
-{ FLOAT, ZERO,  FLOAT, FLOAT, ZERO,  ZERO, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, FLOAT, SYNC }, // B1_ON
-{ FLOAT, ZERO,  FLOAT, FLOAT, ZERO,  ZERO, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, ZERO,  SYNC }, // B1_OFF
-{ FLOAT, ZERO,  FLOAT, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, FLOAT, SYNC }, // B2_ON
-{ FLOAT, ZERO,  FLOAT, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, ZERO,  SYNC }, // B2_OFF
-
-{ ZERO,  FLOAT, FLOAT, FLOAT, ZERO,  ZERO, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, FLOAT, SYNC }, // C1_ON
-{ ZERO,  FLOAT, FLOAT, FLOAT, ZERO,  ZERO, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, ZERO,  SYNC }, // C1_OFF
-{ ZERO,  FLOAT, FLOAT, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, FLOAT, SYNC }, // C2_ON
-{ ZERO,  FLOAT, FLOAT, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, ZERO,  SYNC }, // C2_OFF
-
-{ FLOAT, FLOAT, FLOAT, FLOAT, ZERO,  ZERO, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, FLOAT, SYNC }, // D1_ON
-{ FLOAT, FLOAT, FLOAT, FLOAT, ZERO,  ZERO, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, ZERO,  SYNC }, // D1_OFF
-{ FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, FLOAT, SYNC }, // D2_ON
-{ FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, ZERO, FLOAT, FLOAT, ZERO,  SYNC }  // D2_OFF
-};
-
-
-//********************************************************************//
-
-int save_tcnt2=0;
-int save_tccr2a=0;
-int save_tccr2b=0;
-int save_timsk2=0;
-void reset_timer2()
-{
-  TCNT2 = save_tcnt2;
-  TCCR2A = save_tccr2a;  // normal mode
-  TCCR2B = save_tccr2b;
-  TIMSK2 = save_timsk2;
-}
-
-void start_timer()
-{
-  // timer 1: 2 ms
-  TCCR2A = 0;                    // prescaler 1:8, WGM = 4 (CTC)
-  TCCR2B = 1<<WGM12 | 1<<CS11;   // 
-  OCR2A = 159;        // (1+159)*8 = 1280 -> 0.08ms @ 16 MHz -> 1*alpha
-//  OCR1A = 207;        // (1+207)*8 = 1664 -> 0.104ms @ 16 MHz -> 1*alpha
-  TCNT2 = 0;          // reseting timer
-  TIMSK2 = 1<<OCIE2A; // enable Interrupt
-}
-
-void stop_timer() // stop the timer
-{
-  // timer1
-  TCCR2B = 0; // no clock source
-  TIMSK2 = 0; // disable timer interrupt
-}
-
-void init_word(const word_t w)
-{
-  current_word = w;
-  alpha_cnt = 0;
-  chunk_cnt = 0;
-  bit_cnt = 0;
-
-  if(bit_defs[current_word[bit_cnt]][chunk_cnt].state)
-    digitalWrite(RF_DATA_OUT_PIN, LOW); //neue 12V MosFET Verstärkung invertiert Logik !
-  else
-    digitalWrite(RF_DATA_OUT_PIN, HIGH);
-
-  start_timer();
-}
-
-ISR(TIMER2_COMPA_vect)
-{
-  alpha_cnt++;
-  if(alpha_cnt < bit_defs[current_word[bit_cnt]][chunk_cnt].offset)
-    return;
-
-  chunk_cnt++;
-  if(bit_defs[current_word[bit_cnt]][chunk_cnt].offset != 0) {
-    if(bit_defs[current_word[bit_cnt]][chunk_cnt].state)
-      digitalWrite(RF_DATA_OUT_PIN, LOW); //neue 12V MosFET Verstärkung invertiert Logik !
-    else
-      digitalWrite(RF_DATA_OUT_PIN, HIGH);
-    return;
-  }
-  
-  bit_cnt++;
-  if(bit_cnt < WORD_LEN) {
-    alpha_cnt = 0;
-    chunk_cnt = 0;
-    if(bit_defs[current_word[bit_cnt]][chunk_cnt].state)
-      digitalWrite(RF_DATA_OUT_PIN, LOW); //neue 12V MosFET Verstärkung invertiert Logik !
-    else
-      digitalWrite(RF_DATA_OUT_PIN, HIGH);
-    return;
-  }
-  stop_timer();
-  digitalWrite(RF_DATA_OUT_PIN, HIGH);
-
-  word_cnt++;
-  if(word_cnt < FRAME_LEN)
-    init_word(current_word);
-  else
-    frame_finished = 2;
-}
-
-//***********//
-
-
-void send_frame(const word_t w)
-{
-  if (frame_finished != 1)
-    for(;;) //wait until sending of previous frame finishes
-      if (frame_finished)
-      {
-        delay(150);
-        break;
-      }
-  word_cnt = 0;
-  frame_finished = 0;
-  init_word(w);
-}
-
-void check_frame_done()
-{
-  if (frame_finished==2)
-  {
-    Serial.println("Ok");
-    frame_finished=1;
-    reset_timer2();
-    delay(120);
-  }
-}
-
-//********************************************************************//
-
-void printTemperature(DeviceAddress deviceAddress)
-{
-  dallas_sensors.requestTemperatures();
-  float tempC = dallas_sensors.getTempC(deviceAddress);
-  //Serial.print("Temp C: ");
-  Serial.println(tempC TEMPC_OFFSET_ARDUINO_GENEREATED_HEAT);
-  //Serial.print(" Temp F: ");
-  //Serial.println(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit
-}
-
-//********************************************************************//
-
-unsigned int light_level_mean_ = 0;
-unsigned int light_sample_time_ = 0;
-
-void updateLightLevel(unsigned int pin)
-{
-  light_sample_time_++;
-  if (light_sample_time_ < PHOTO_SAMPLE_INTERVAL)
-    return;
-  light_sample_time_ = 0;
-  
-  unsigned int value = analogRead(pin);
-  if (value == light_level_mean_)
-    return;
-  
-  unsigned int diff = abs(value - light_level_mean_);
-  if (diff > 100)
-    light_level_mean_ = value;
-  else
-      light_level_mean_=(unsigned int) ( ((float) light_level_mean_) * 0.90 + ((float)value)*0.10 );
-}
-
-void printLightLevel()
-{
-  Serial.println(light_level_mean_);
-}
-
-//********************************************************************//
-
-unsigned long wm_start_[3]={0,0,0};
-bool wait_millis(unsigned long *start_time, unsigned long ms)
-{
-  if (ms == 0)
-    return false;
-  else if (*start_time > 0)
-  {
-    if (millis() < *start_time || millis() > (*start_time) + ms)
-    {
-      *start_time = 0;
-      return false;
-    }
-    else
-      return true;
-  }
-  else
-  {
-    *start_time=millis();
-    return true;
-  }
-}
-#define NUM_LEDS 2
-char flash_led_pins_[NUM_LEDS]={BLUELED_PWM_PIN,PANICLED_PWM_PIN};
-unsigned int flash_led_time_[3]={0,0,0};
-unsigned int flash_led_brightness_[3]={255,255,255};
-unsigned int flash_led_delay_[3]={8,8,8};
-unsigned int flash_led_initial_delay_[3]={0,0,0};
-void calculate_led_level()
-{
-  for (int ledid = 0; ledid < NUM_LEDS; ledid++)
-  {
-    if (flash_led_time_[ledid] == 0)
-      continue;
-    if (wait_millis(wm_start_ + ledid, flash_led_initial_delay_[ledid]))
-      continue;
-    flash_led_initial_delay_[ledid]=0;
-    if (wait_millis(wm_start_ + ledid, flash_led_delay_[ledid]))
-      continue;
-    flash_led_time_[ledid]--;
-    int c = abs(sin(float(flash_led_time_[ledid]) / 100.0)) * flash_led_brightness_[ledid];
-    //int d = abs(sin(float(flash_led_time_) / 100.0)) * flash_led_brightness_;
-    analogWrite(flash_led_pins_[ledid], 255-c);
-  }
-}
-
-ISR(TIMER1_COMPA_vect)
-{
-  calculate_led_level();
-}
-// id: id of LED to flash (0,1)
-// times: # of times the LED should flash
-// brightness_divisor: 1: full brightness, 2: half brightness, ...
-// delay_divisor: 1: slow... 8: fastest
-// phase_divisor: 0.. same phase; 2.. pi/2 phase, 4.. pi phase, 6.. 3pi/2 phase
-void flash_led(unsigned int id, unsigned int times, unsigned int brightness_divisor, unsigned int delay_divisor, unsigned int phase_divisor)
-{
-  if (id >= NUM_LEDS)
-    return;
-  unsigned int new_flash_led_brightness = 255;
-  unsigned int new_flash_led_delay = 8;
-  if (times == 0)
-  {
-    analogWrite(flash_led_pins_[id],255); //off
-    return;
-  }
-  if (brightness_divisor > 1) //guard against div by zero
-    new_flash_led_brightness /= brightness_divisor;
-  if (delay_divisor > 1)  //guard against div by zero
-    new_flash_led_delay /= delay_divisor;
-  if (flash_led_time_[id] == 0 || new_flash_led_brightness > flash_led_brightness_[id])
-    flash_led_brightness_[id]=new_flash_led_brightness;
-  if (flash_led_time_[id] == 0 || new_flash_led_delay < flash_led_delay_[id])
-    flash_led_delay_[id]=new_flash_led_delay;
-  flash_led_time_[id] += 314*times;
-  flash_led_initial_delay_[id] = flash_led_delay_[id]*314*phase_divisor/8;
-}
-
-void start_led_timer()
-{
-  // timer 1: 2 ms
-  TCCR1A = 0;                    // prescaler 1:8, WGM = 4 (CTC)
-  TCCR1B = 1<<WGM12 | 1<<CS11;   // 
-  OCR1A = 15999;        // (1+15999) = 16000 -> 1ms @ 16 MHz
-  TCNT1 = 0;          // reseting timer
-  TIMSK1 = 1<<OCIE1A; // enable Interrupt
-}
-
-void stop_led_timer() // stop the timer
-{
-  // timer1
-  TCCR1B = 0; // no clock source
-  TIMSK1 = 0; // disable timer interrupt
-}
-
-//********************************************************************//
-
-void send_yamaha_ir_signal(char codebyte)
-{
-  unsigned long int code = codebyte & 0xFF;
-  code <<= 8;
-  code |= (0xff ^ codebyte) & 0xFF;
-  code |= YAMAHA_CODE_BASE;
-  
-  //irsend changes PWM Timer Frequency among other things
-  //.. doesn't go well with PWM output using the same timer
-  //.. thus we just set output to 255 so whatever frequency is used, led is off for the duration
-  //analogWrite(BLUELED_PWM_PIN,255); // switch led off
-
-  irsend.sendNEC(code,YAMAHA_CODE_BITS);
-
-  reset_timer2();
-  analogWrite(BLUELED_PWM_PIN,255); // switch off led again to be sure
-                                      //is actually not necessary, since we are not multitasking/using interrupts, but just to be sure in case this might change
-
-  Serial.println("Ok");
-}
-
-//********************************************************************//
-
-void setup()
-{
-  pinMode(RF_DATA_OUT_PIN, OUTPUT);
-  digitalWrite(RF_DATA_OUT_PIN, HIGH);
-  pinMode(IR_MOVEMENT_PIN, INPUT);      // set pin to input
-  digitalWrite(IR_MOVEMENT_PIN, LOW);  // turn off pulldown resistors  
-  pinMode(PANIC_BUTTON_PIN, INPUT);      // set pin to input
-  digitalWrite(PANIC_BUTTON_PIN, LOW);  // turn on pulldown resistors 
-  analogWrite(PANICLED_PWM_PIN,255);
-  analogWrite(BLUELED_PWM_PIN,255); //pwm sink(-) instead of pwm + (better for mosfets)
-  pinMode(IRREMOTE_SEND_PIN, OUTPUT);
-  digitalWrite(IRREMOTE_SEND_PIN, HIGH);
-  
-  Serial.begin(9600);
-  
-  onewire.reset();
-  onewire.reset_search();
-  dallas_sensors.begin();
-  //in case we change temp sensor:
-  if (!dallas_sensors.getAddress(onShieldTemp, 0)) 
-    Serial.println("Error: Unable to find address for Device 0"); 
-  dallas_sensors.setResolution(onShieldTemp, 9);  
-
-  //save prev timer states:
-  save_tcnt2 = TCNT2;
-  save_tccr2a = TCCR2A;  // normal mode
-  save_tccr2b = TCCR2B;
-  start_led_timer();
-}
-
-unsigned int ir_time=IR_SAMPLE_DURATION;
-unsigned int ir_count=0;
-boolean pb_last_state=0;
-boolean pb_state=0;
-boolean pb_postth_state=0;
-unsigned int pb_time=0;
-
-void sensorEchoCommand(char command)
-{
-  Serial.print("Sensor ");
-  Serial.print(command);
-  Serial.print(": ");
-}
-
-void loop()
-{
-  ir_time--;
-  ir_count += (digitalRead(IR_MOVEMENT_PIN) == HIGH);
-
-  if (pb_time < PB_TRESHOLD)
-    pb_time++;
-  pb_state=(digitalRead(PANIC_BUTTON_PIN) == HIGH);
-  
-  if (ir_time == 0)
-  {
-    if (ir_count >= IR_TRESHOLD)
-    {
-      flash_led(0, 1, 8, 1, 0 );
-      Serial.println("movement");
-    }
-    ir_time=IR_SAMPLE_DURATION;
-    ir_count=0;
-  }
-  
-  if (pb_state == pb_last_state && pb_time >= PB_TRESHOLD)
-  {
-    if (pb_state && ! pb_postth_state)
-    {   
-      pb_postth_state=1;
-      Serial.println("PanicButton");
-      flash_led(0, 28, 1, 4, 0 );
-      flash_led(1, 28, 1, 4, 4 );
-    }
-    else if (!pb_state)
-      pb_postth_state=0;
-  }
-  else if (pb_state != pb_last_state)
-  {
-    pb_time=0;
-    pb_last_state=pb_state;
-  }
-  
-  updateLightLevel(PHOTO_ANALOGPIN);
-  //calculate_led_level();
-  check_frame_done();
-  
-  if(Serial.available()) {
-    char command = Serial.read();
-    
-    if(command == 'A')
-      send_frame(words[A1_ON]);
-    else if(command == 'a')
-      send_frame(words[A1_OFF]);
-    else if(command == 'B')
-      send_frame(words[A2_ON]);
-    else if(command == 'b')
-      send_frame(words[A2_OFF]);
-
-    else if(command == 'C')
-      send_frame(words[B1_ON]);
-    else if(command == 'c')
-      send_frame(words[B1_OFF]);
-    else if(command == 'D')
-      send_frame(words[B2_ON]);
-    else if(command == 'd')
-      send_frame(words[B2_OFF]);
-
-    else if(command == 'E')
-      send_frame(words[C1_ON]);
-    else if(command == 'e')
-      send_frame(words[C1_OFF]);
-    else if(command == 'F')
-      send_frame(words[C2_ON]);
-    else if(command == 'f')
-      send_frame(words[C2_OFF]);
-
-    else if(command == 'G')
-      send_frame(words[D1_ON]);
-    else if(command == 'g')
-      send_frame(words[D1_OFF]);
-    else if(command == 'H')
-      send_frame(words[D2_ON]);
-    else if(command == 'h')
-      send_frame(words[D2_OFF]);
-    else if(command == 'T')
-    {
-      sensorEchoCommand(command);
-      printTemperature(onShieldTemp);
-    }
-    else if(command == 'P')
-    {
-      sensorEchoCommand(command);
-      printLightLevel();
-    }
-    else if (command == '^')
-      flash_led(1, 1, 2, 1, 0);
-    else if (command == '0')
-      send_yamaha_ir_signal(YAMAHA_POWER_OFF);
-    else if (command == '1')
-      send_yamaha_ir_signal(YAMAHA_POWER_TOGGLE);
-    else if (command == '2')
-      send_yamaha_ir_signal(YAMAHA_VOLUME_UP);
-    else if (command == '3')
-      send_yamaha_ir_signal(YAMAHA_VOLUME_DOWN);
-    else if (command == '4')
-      send_yamaha_ir_signal(YAMAHA_MUTE);
-    else if (command == '5')
-      send_yamaha_ir_signal(YAMAHA_CD);
-    else if (command == '6')
-      send_yamaha_ir_signal(YAMAHA_TUNER);
-    else if (command == '7')
-      send_yamaha_ir_signal(YAMAHA_DVD_SPDIF);
-    else if (command == '8')
-      send_yamaha_ir_signal(YAMAHA_MENU);
-    else if (command == '+')
-      send_yamaha_ir_signal(YAMAHA_PLUS);
-    else if (command == '-')
-      send_yamaha_ir_signal(YAMAHA_MINUS);
-    else if (command == 0xa7) // Â§
-      send_yamaha_ir_signal(YAMAHA_TEST);
-    else if (command == '$')
-      send_yamaha_ir_signal(YAMAHA_TIME_LEVEL);
-    else if (command == '%')
-      send_yamaha_ir_signal(YAMAHA_EFFECT_TOGGLE);
-    else if (command == '&')
-      send_yamaha_ir_signal(YAMAHA_PRG_DOWN);
-    else if (command == '/')
-      send_yamaha_ir_signal(YAMAHA_PRG_UP);
-    else if (command == '(')
-      send_yamaha_ir_signal(YAMAHA_TUNER_PLUS);
-    else if (command == '[')
-      send_yamaha_ir_signal(YAMAHA_TUNER_MINUS);
-    else if (command == ')')
-      send_yamaha_ir_signal(YAMAHA_TUNER_ABCDE);
-    else if (command == '9')
-      send_yamaha_ir_signal(YAMAHA_TAPE);
-    else if (command == '?')
-      send_yamaha_ir_signal(YAMAHA_VCR);
-    else if (command == '=')
-      send_yamaha_ir_signal(YAMAHA_EXT51DEC);
-    else
-      Serial.println("Error: unknown command");
-  }
-}
diff --git a/sensor_graph/NOTES.txt b/sensor_graph/NOTES.txt
deleted file mode 100644 (file)
index 8df81db..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-http://nuwiki.openwrt.org/oldwiki/rrdtrafficwatch
-http://oss.oetiker.ch/rrdtool/tut/rrd-beginners.en.html
-http://oss.oetiker.ch/rrdtool/prog/rrdlua.en.html
-http://www.tecgraf.puc-rio.br/~diego/professional/luasocket/
-http://lua-users.org/lists/lua-l/2008-07/msg00460.html
diff --git a/sensor_graph/freeze_realraum_picture.pl b/sensor_graph/freeze_realraum_picture.pl
deleted file mode 100755 (executable)
index a499399..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/perl -w
-#
-#
-use strict;
-use utf8;
-use CGI;
-my $q = CGI->new;
-require LWP::UserAgent;
-my $ua = LWP::UserAgent->new(env_proxy => 1,
-                              keep_alive => 1,
-                              timeout => 30,
-                             );
-use HTTP::Cookies;
-use LWP;
-$ua->cookie_jar({});
-
-###############
-$cam::url = "http://slug.realraum.at:8088/?action=snapshot";
-#$cam::get = {action=>"snapshot"};
-$cam::localpath = "/tmp/realraum-freeze.jpg";
-###############
-
-sub output_saved_image
-{
-  return 0 if ( not -e $cam::localpath);
-  my $fh;  
-  print STDOUT header("image/jpeg");
-  open($fh,"<$cam::localpath") or exit;
-  while (<$fh>) {print $_};
-  close($fh);
-  return 1;
-}
-
-sub save_remote_image
-{
-  my $response;
-  $response = $ua->get($cam::url);
-  if (defined $response and $response->content =~ /^\xff\xd8/)
-  {    
-    my $fh;
-    open($fh,">$cam::localpath");
-    print $fh $response->content;
-    close($fh);
-    
-    print STDOUT header("text/html");
-    print STDOUT "ok";
-    return 1;
-  }
-  return 0;
-}
-
-sub output_error
-{
-  print STDOUT header("text/html","404 Not Found");
-  print STDOUT "<html><body><h1>Sorry</h1><h2>The picture you requested could not be found</h2></body></html>\n"; 
-  return 1;
-}
-
-if ($q->param('freeze') eq "98VB9s")
-{
-  exit if (&save_remote_image);
-}
-elsif (-e $cam::localpath and -M $cam::localpath)
-{
-  exit if (&output_saved_image);
-}
-&output_error;
diff --git a/sensor_graph/get_realraum_picture.pl b/sensor_graph/get_realraum_picture.pl
deleted file mode 100755 (executable)
index bd97148..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/perl -w
-#
-#
-
-use strict;
-use utf8;
-require LWP::UserAgent;
-my $ua = LWP::UserAgent->new(env_proxy => 1,
-                              keep_alive => 1,
-                              timeout => 30,
-                             );
-use HTTP::Cookies;
-use LWP;
-$ua->cookie_jar({});
-
-###############
-$cam::url = "http://slug.realraum.at:8088/?action=snapshot";
-#$cam::get = {action=>"snapshot"};
-$cam::localpath = "/tmp/realraum.jpg";
-$cam::mintime = 0.00025;
-###############
-
-sub output_saved_image
-{
-  return 0 if ( not -e $cam::localpath);
-  my $fh;  
-  print STDOUT "Content-type: image/jpeg\n\n";
-  open($fh,"<$cam::localpath") or exit;
-  while (<$fh>) {print $_};
-  close($fh);
-  return 1;
-}
-
-sub output_remote_image_and_save
-{
-  my $response;
-  $response = $ua->get($cam::url);
-  if (defined $response and $response->content =~ /^\xff\xd8/)
-  {    
-    my $fh;
-    open($fh,">$cam::localpath");
-    print $fh $response->content;
-    close($fh);
-    print STDOUT "Content-type: image/jpeg\n\n";
-    print $response->content;
-    $response->clear;
-    return 1;
-  }
-  return 0;
-}
-
-sub output_error
-{
-  print STDOUT "Status: 404 Not Found\n";
-  print STDOUT "Content-type: text/html\n\n";
-  print STDOUT "<html><body><h1>Sorry</h1><h2>The picture you requested could not be found</h2></body></html>\n"; 
-  return 1;
-}
-
-if (-e $cam::localpath and -M $cam::localpath < $cam::mintime)
-{
-  exit if (&output_saved_image);
-}
-else
-{
-  exit if (&output_remote_image_and_save);
-  exit if (&output_saved_image);
-}
-&output_error;
diff --git a/sensor_graph/get_sensor_light.pl b/sensor_graph/get_sensor_light.pl
deleted file mode 100755 (executable)
index 85fe638..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/perl -w
-#
-#
-
-use strict;
-use utf8;
-require LWP::UserAgent;
-my $ua = LWP::UserAgent->new(env_proxy => 1,
-                              keep_alive => 1,
-                              timeout => 30,
-                             );
-use HTTP::Cookies;
-use LWP;
-$ua->cookie_jar({});
-
-###############
-$sensor::url_refresh = "http://slug.realraum.at/cgi-bin/sensor-light.cgi";
-$sensor::url_image = "http://slug.realraum.at/light0.png";
-$sensor::localpath = "/tmp/light0.png";
-$sensor::mintime = 0.0015;
-###############
-
-sub output_saved_image
-{
-  return 0 if ( not -e $sensor::localpath);
-  my $fh;  
-  print STDOUT "Content-type: image/png\n\n";
-  open($fh,"<$sensor::localpath") or exit;
-  while (<$fh>) {print $_};
-  close($fh);
-  return 1;
-}
-
-sub output_remote_image_and_save
-{
-  my $response;
-  $response = $ua->get($sensor::url_refresh);
-  return 0 unless (defined $response);
-  $response = $ua->get($sensor::url_image);
-  if (defined $response and $response->content =~ /^\x89PNG/)
-  {
-    my $fh;
-    open($fh,">$sensor::localpath");
-    print $fh $response->content;
-    close($fh);
-    print STDOUT "Content-type: image/png\n\n";
-    print $response->content;
-    $response->clear;
-    return 1;
-  }
-  return 0;
-}
-
-sub output_error
-{
-  print STDOUT "Status: 404 Not Found\n";
-  print STDOUT "Content-type: text/html\n\n";
-  print STDOUT "<html><body><h1>Sorry</h1><h2>The picture you requested could not be found</h2></body></html>\n"; 
-  return 1;
-}
-
-if (-e $sensor::localpath and -M $sensor::localpath < $sensor::mintime)
-{
-  exit if (&output_saved_image);
-}
-else
-{
-  exit if (&output_remote_image_and_save);
-  exit if (&output_saved_image);
-}
-&output_error;
diff --git a/sensor_graph/get_sensor_movement.pl b/sensor_graph/get_sensor_movement.pl
deleted file mode 100755 (executable)
index f4c7ffb..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/perl -w
-#
-#
-
-use strict;
-use utf8;
-require LWP::UserAgent;
-my $ua = LWP::UserAgent->new(env_proxy => 1,
-                              keep_alive => 1,
-                              timeout => 30,
-                             );
-use HTTP::Cookies;
-use LWP;
-$ua->cookie_jar({});
-
-###############
-$sensor::url_refresh = "http://slug.realraum.at/cgi-bin/sensor-movement.cgi";
-$sensor::url_image = "http://slug.realraum.at/movement.png";
-$sensor::localpath = "/tmp/movement.png";
-$sensor::mintime = 0.0015;
-###############
-
-sub output_saved_image
-{
-  return 0 if ( not -e $sensor::localpath);
-  my $fh;  
-  print STDOUT "Content-type: image/png\n\n";
-  open($fh,"<$sensor::localpath") or exit;
-  while (<$fh>) {print $_};
-  close($fh);
-  return 1;
-}
-
-sub output_remote_image_and_save
-{
-  my $response;
-  $response = $ua->get($sensor::url_refresh);
-  return 0 unless (defined $response);
-  $response = $ua->get($sensor::url_image);
-  if (defined $response and $response->content =~ /^\x89PNG/)
-  {
-    my $fh;
-    open($fh,">$sensor::localpath");
-    print $fh $response->content;
-    close($fh);
-    print STDOUT "Content-type: image/png\n\n";
-    print $response->content;
-    $response->clear;
-    return 1;
-  }
-  return 0;
-}
-
-sub output_error
-{
-  print STDOUT "Status: 404 Not Found\n";
-  print STDOUT "Content-type: text/html\n\n";
-  print STDOUT "<html><body><h1>Sorry</h1><h2>The picture you requested could not be found</h2></body></html>\n"; 
-  return 1;
-}
-
-if (-e $sensor::localpath and -M $sensor::localpath < $sensor::mintime)
-{
-  exit if (&output_saved_image);
-}
-else
-{
-  exit if (&output_remote_image_and_save);
-  exit if (&output_saved_image);
-}
-&output_error;
diff --git a/sensor_graph/get_sensor_temp.pl b/sensor_graph/get_sensor_temp.pl
deleted file mode 100755 (executable)
index 39b5d1f..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/perl -w
-#
-#
-
-use strict;
-use utf8;
-require LWP::UserAgent;
-my $ua = LWP::UserAgent->new(env_proxy => 1,
-                              keep_alive => 1,
-                              timeout => 30,
-                             );
-use HTTP::Cookies;
-use LWP;
-$ua->cookie_jar({});
-
-###############
-$sensor::url_refresh = "http://slug.realraum.at/cgi-bin/sensor-temp.cgi";
-$sensor::url_image = "http://slug.realraum.at/temp0.png";
-$sensor::localpath = "/tmp/temp0.png";
-$sensor::mintime = 0.0015;
-###############
-
-sub output_saved_image
-{
-  return 0 if ( not -e $sensor::localpath);
-  my $fh;  
-  print STDOUT "Content-type: image/png\n\n";
-  open($fh,"<$sensor::localpath") or exit;
-  while (<$fh>) {print $_};
-  close($fh);
-  return 1;
-}
-
-sub output_remote_image_and_save
-{
-  my $response;
-  $response = $ua->get($sensor::url_refresh);
-  return 0 unless (defined $response);
-  $response = $ua->get($sensor::url_image);
-  if (defined $response and $response->content =~ /^\x89PNG/)
-  {
-    my $fh;
-    open($fh,">$sensor::localpath");
-    print $fh $response->content;
-    close($fh);
-    print STDOUT "Content-type: image/png\n\n";
-    print $response->content;
-    $response->clear;
-    return 1;
-  }
-  return 0;
-}
-
-sub output_error
-{
-  print STDOUT "Status: 404 Not Found\n";
-  print STDOUT "Content-type: text/html\n\n";
-  print STDOUT "<html><body><h1>Sorry</h1><h2>The picture you requested could not be found</h2></body></html>\n"; 
-  return 1;
-}
-
-if (-e $sensor::localpath and -M $sensor::localpath < $sensor::mintime)
-{
-  exit if (&output_saved_image);
-}
-else
-{
-  exit if (&output_remote_image_and_save);
-  exit if (&output_saved_image);
-}
-&output_error;
diff --git a/sensor_graph/rrdtool.sh b/sensor_graph/rrdtool.sh
deleted file mode 100644 (file)
index 374686a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-rrdtool create sensorlight.rrd --step 30 DS:light:GAUGE:300:0:1023 RRA:LAST:0.5:2:2048
-rrdtool create sensortemp.rrd --step 30 DS:temp:GAUGE:1800:-20:60 RRA:LAST:0.5:2:2048
-rrdtool create sensormovement.rrd --step 30 DS:movement:ABSOLUTE:604800:0:U  RRA:LAST:0.5:2:2048
-rrdtool update sensorlight.rrd -t temp N:26.0   
-rrdtool update sensortemp.rrd -t light N:200 
-rrdtool update sensormovement.rrd -t movement N:0 
diff --git a/sensor_graph/sensor-light.cgi b/sensor_graph/sensor-light.cgi
deleted file mode 100755 (executable)
index 8c3c3c1..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/rrdcgi
-<HTML>
-<BODY>
-<RRD::GOODFOR 30>
-<RRD::GRAPH ../light0.png
-   --imginfo '<IMG SRC="/%s" WIDTH="%lu" HEIGHT="%lu" >'
-   --color="BACK#d0d0af" --color="CANVAS#ffffff" 
-   --color="SHADEA#dfdfdf" --color="SHADEB#525252" 
-   --color="AXIS#761407" --color="FONT#272727" --color="MGRID#b65447"
-   --color="ARROW#761407" --color="GRID#d0d0af"
-   --title="Room Illumination" --lazy
-   --start=now-36h --end=now --width=490
-   --slope-mode --alt-autoscale-max
-   DEF:cel=/home/sensorlight.rrd:light:LAST VDEF:lv=cel,LAST
-   LINE2:cel#04d532:"0 complete darkness via 450 dark to 1023 quite bright," GPRINT:lv:"Current Value\: %1.0lf">
-</BODY>
-</HTML>
diff --git a/sensor_graph/sensor-movement.cgi b/sensor_graph/sensor-movement.cgi
deleted file mode 100755 (executable)
index 976711c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/rrdcgi
-<HTML>
-<BODY>
-<RRD::GOODFOR 30>
-<RRD::GRAPH ../movement.png
-  --imginfo '<IMG SRC="/%s" WIDTH="%lu" HEIGHT="%lu" >'
-  --color="BACK#d0d0af" --color="CANVAS#ffffff" 
-  --color="SHADEA#dfdfdf" --color="SHADEB#525252" 
-  --color="AXIS#761407" --color="FONT#272727" --color="MGRID#b65447"
-  --color="ARROW#761407" --color="GRID#d0d0af"
-  --title="Movement Sensor" --lazy
-  --start=now-36h --end=now --width=490
-  DEF:cel=/home/sensormovement.rrd:movement:LAST
-  LINE2:cel#1407e2:"Movements / Minute">
-
-</BODY>
-</HTML>
-
diff --git a/sensor_graph/sensor-temp.cgi b/sensor_graph/sensor-temp.cgi
deleted file mode 100755 (executable)
index f891a40..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/rrdcgi
-<HTML>
-<BODY>
-<RRD::GOODFOR 30>
-<RRD::GRAPH ../temp0.png
-   --imginfo '<IMG SRC="/%s" WIDTH="%lu" HEIGHT="%lu" >'
-   --color="BACK#d0d0af" --color="CANVAS#ffffff" 
-   --color="SHADEA#dfdfdf" --color="SHADEB#525252" 
-   --color="AXIS#761407" --color="FONT#272727" --color="MGRID#b65447"
-   --color="ARROW#761407" --color="GRID#d0d0af"
-   --title="Room Temperature" --lazy
-   --start=now-36h --end=now --width=490
-   --slope-mode
-   DEF:cel=/home/sensortemp.rrd:temp:LAST 
-   CDEF:corrcel=cel,6,- VDEF:lv=corrcel,LAST
-   LINE2:corrcel#e21407:"°C (±0.5)," GPRINT:lv:"Current Temperature\: %1.2lf Â°C">
-</BODY>
-</HTML>
diff --git a/sensor_graph/sensors.cgi b/sensor_graph/sensors.cgi
deleted file mode 100755 (executable)
index 1fb368c..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/rrdcgi
-<HTML>
-<HEAD><TITLE>RealRaum Sensor Data</TITLE></HEAD>
-<BODY>
-<H1>RealRaum Sensor Data</H1>
-<RRD::GOODFOR 30>
-<P>
-<RRD::GRAPH ../light0.png
-   --imginfo '<IMG SRC="/%s" WIDTH="%lu" HEIGHT="%lu" >'
-   --color="BACK#d0d0af" --color="CANVAS#ffffff" 
-   --color="SHADEA#dfdfdf" --color="SHADEB#525252" 
-   --color="AXIS#761407" --color="FONT#272727" --color="MGRID#b65447"
-   --color="ARROW#761407" --color="GRID#d0d0af"
-   --title="Room Illumination"
-   --start=now-36h --end=now --width=490
-   --slope-mode --alt-autoscale-max
-   DEF:cel=/home/sensorlight.rrd:light:LAST VDEF:lv=cel,LAST
-   LINE2:cel#04d532:"0 complete darkness via 450 dark to 1023 quite bright," GPRINT:lv:"Current Value\: %1.0lf">
-</P>
-Current Light Value: <RRD::INCLUDE /home/sensorlight.txt>
-<P>
-<RRD::GRAPH ../temp0.png
-   --imginfo '<IMG SRC="/%s" WIDTH="%lu" HEIGHT="%lu" >'
-   --color="BACK#d0d0af" --color="CANVAS#ffffff" 
-   --color="SHADEA#dfdfdf" --color="SHADEB#525252" 
-   --color="AXIS#761407" --color="FONT#272727" --color="MGRID#b65447"
-   --color="ARROW#761407" --color="GRID#d0d0af"
-   --title="Room Temperature"
-   --start=now-36h --end=now --width=490
-   --slope-mode
-   DEF:cel=/home/sensortemp.rrd:temp:LAST 
-   CDEF:corrcel=cel,6,- VDEF:lv=corrcel,LAST
-   LINE2:corrcel#e21407:"°C (±0.5)," GPRINT:lv:"Current Temperature\: %1.2lf Â°C">
-</P>
-Current Temperature: <RRD::INCLUDE /home/sensortemp.txt> Â°C
-<P>
-<RRD::GRAPH ../movement.png
-  --imginfo '<IMG SRC="/%s" WIDTH="%lu" HEIGHT="%lu" >'
-  --color="BACK#d0d0af" --color="CANVAS#ffffff" 
-  --color="SHADEA#dfdfdf" --color="SHADEB#525252" 
-  --color="AXIS#761407" --color="FONT#272727" --color="MGRID#b65447"
-  --color="ARROW#761407" --color="GRID#d0d0af"
-  --title="Movement Sensor"
-  --start=now-36h --end=now --width=490
-  DEF:cel=/home/sensormovement.rrd:movement:LAST
-  LINE2:cel#1407e2:"Movements / Minute">
-</P>
-Page generated: <RRD::TIME::NOW "%Y-%m-%d %H:%M">
-</BODY>
-</HTML>
diff --git a/serial_console/Makefile b/serial_console/Makefile
deleted file mode 100644 (file)
index f8b3413..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-TARGET1:=serial
-TARGET2:=usocket
-TARGET3:=sample_sensors
-CFLAGS:= -Wall
-
-all: $(TARGET1) $(TARGET2) $(TARGET3)
-
-.PHONY: clean all
-
-clean: 
-       rm -f $(TARGET1) $(TARGET2) $(TARGET3)
diff --git a/serial_console/sample_sensors.c b/serial_console/sample_sensors.c
deleted file mode 100644 (file)
index 29d3b0e..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-#include "sample_sensors.h"
-
-int check_handle_line(char *buffer, unsigned int buflen, char *cmpstr, char *rrd_file, char *txt_file)
-{
-  char *cmd;
-  unsigned int cmpstrlen = strlen(cmpstr);
-  unsigned int value = atoi(buffer + cmpstrlen);
-  if (buflen > cmpstrlen && strncmp(cmpstr,buffer,cmpstrlen) == 0)
-  {
-    if (asprintf(&cmd, "rrdtool update %s N:%d", rrd_file, value))
-    {
-      //printf("%s\n",cmd);
-      system(cmd);
-      free(cmd);
-    }
-    int fd = open(txt_file, O_WRONLY | O_CREAT | O_TRUNC, 0666);
-    if (fd) 
-    {
-      if (asprintf(&cmd, "%d", value))
-      {
-        
-        write(fd,cmd, strnlen(cmd,12)); //elim. newline
-        free(cmd);
-      }
-      close(fd);
-    }
-    return 1;
-  }
-  return 0;
-}
-
-int check_handle_line_float(char *buffer, unsigned int buflen, char *cmpstr, char *rrd_file, char *txt_file)
-{
-  char *cmd;
-  unsigned int cmpstrlen = strlen(cmpstr);
-  float value = atof(buffer + cmpstrlen);
-  if (buflen > cmpstrlen && strncmp(cmpstr,buffer,cmpstrlen) == 0)
-  {
-    if (asprintf(&cmd, "rrdtool update %s N:%f", rrd_file, value))
-    {
-      system(cmd);
-      free(cmd);
-    }
-    int fd = open(txt_file, O_WRONLY | O_CREAT | O_TRUNC, 0666);
-    if (fd) 
-    {
-      if (asprintf(&cmd, "%f", value))
-      {
-        
-        write(fd,cmd, strnlen(cmd,12)); //elim. newline
-        free(cmd);
-      }
-      close(fd);
-    }
-    return 1;
-  }
-  return 0;
-}
-
-unsigned int collect_data(char *buffer, unsigned int size)
-{
-  if (size >= 8 && strncmp("movement", buffer, 8) == 0)
-    return 1;
-  else if (check_handle_line_float(buffer, size, "temp0: ", rrd_temp_, txt_temp_))
-    return 0;
-  else if (check_handle_line(buffer, size, "photo0: ", rrd_light_, txt_light_))
-    return 0;
-  return 0;
-}
-
-void  sample_sensors(int fd)
-{
-  if (fd < 3)
-    return;
-  struct timeval timeout;
-  fd_set fds_r;
-  unsigned int const buffer_size=1024;
-  unsigned int buffer_offset=0;
-  char buffer[1024];
-  char *cmd;
-  unsigned int movement_count=0;
-  int num_byte=0;
-  time_t last_sample_time, curr_time;
-  
-  send(fd,"listen sensor\n",14,0);
-  send(fd,"listen movement\n",16,0);
-  
-  FD_ZERO(&fds_r);
-  FD_SET(fd,&fds_r);
-  timeout.tv_sec=1;
-  timeout.tv_usec=0;
-  last_sample_time=time(0);
-  while (select(fd+1,&fds_r,0,0,&timeout) > -1)
-  {
-    curr_time=time(0);
-    if (FD_ISSET(fd,&fds_r))
-    {
-      if ((num_byte = recv(fd, buffer+buffer_offset , buffer_size - buffer_offset ,0)) > 0)
-      {
-        buffer_offset+=num_byte;
-      }
-      
-      if (num_byte < 1)
-        return;
-      
-      char linebreak_found=0;
-      if (buffer_offset > 0)
-      {
-        do
-        {
-          int c=0;
-          linebreak_found=0;
-          for (c=0; c < buffer_offset; c++)
-            if (buffer[c] == '\n')
-            {
-              buffer[c]='\0';
-              linebreak_found=1;
-              break;
-            }
-            
-          if (linebreak_found)
-          {
-            movement_count += collect_data(buffer, buffer_offset+c);
-            if (c < buffer_offset)
-            {
-              memmove(buffer, buffer + c + 1, buffer_size - c - 1);
-            }
-            buffer_offset -= c + 1;
-          }
-        } while (linebreak_found);
-      }
-      
-    }
-    
-    if (curr_time - last_sample_time > sample_interval_s_)
-    {
-      last_sample_time=curr_time;
-      if (asprintf(&cmd,"rrdtool update %s -t movement N:%d", rrd_movement_, movement_count))
-      {
-        /*printf("%s\n",cmd);*/
-        system(cmd);
-        free(cmd);
-        movement_count=0;
-      }
-    }
-    
-    FD_SET(fd,&fds_r);
-    timeout.tv_sec=1;
-    timeout.tv_usec=0;
-  }
-}
-
-int establish_socket_connection(const char* path)
-{
-  int fd = socket(AF_UNIX, SOCK_STREAM, 0);
-  if(fd < 0) {
-    fprintf(stderr, "unable to open socket: %s\n", strerror(errno));
-    return -1;
-  }
-  struct sockaddr_un local;
-  local.sun_family = AF_UNIX;
-  if(sizeof(local.sun_path) <= strlen(path)) {
-    fprintf(stderr, "socket path is to long (max %lu)\n", sizeof(local.sun_path)-1);
-    return -1;
-  }
-  strcpy(local.sun_path, path);
-  int len = SUN_LEN(&local);
-  int ret = connect(fd, (struct sockaddr*) &local, len);
-  if(ret) {
-    fprintf(stderr, "unable to connect to '%s': %s\n", local.sun_path, strerror(errno));
-    return -1;
-  }
-  return fd;
-}
-
-int main(int argc, char* argv[])
-{
-  int socket_fd = 0;
-  char *socket_file;
-  if (argc > 1)
-    socket_file = argv[1];
-  else
-    socket_file = default_socket_file_;
-  
-  while (1)
-  {
-    socket_fd = establish_socket_connection(socket_file);
-    if(socket_fd)
-    {
-      sample_sensors(socket_fd);
-    }
-    else
-    {
-      fprintf(stderr, "%s error, retrying..\n", socket_file);
-    }
-
-    if(socket_fd > 0)
-      shutdown(socket_fd,SHUT_RDWR);
-    
-    sleep(2);
-  }
-  return 0;
-}
-
diff --git a/serial_console/sample_sensors.h b/serial_console/sample_sensors.h
deleted file mode 100644 (file)
index 3031147..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#define _GNU_SOURCE
-#include <sys/select.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <termios.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/un.h>
-#include <stdlib.h>
-#include <time.h>
-
-char *default_socket_file_="/var/run/powersensordaemon/cmd.sock";
-char *rrd_temp_ = "/home/sensortemp.rrd";
-char *rrd_light_ = "/home/sensorlight.rrd";
-char *txt_temp_ = "/home/sensortemp.txt";
-char *txt_light_ = "/home/sensorlight.txt";
-char *rrd_movement_ = "/home/sensormovement.rrd";
-const int sample_interval_s_ = 30;
\ No newline at end of file
diff --git a/serial_console/serial.c b/serial_console/serial.c
deleted file mode 100644 (file)
index 0e4715a..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-#include "serial.h"
-
-
-int setup_tty(int fd)
-{
-  struct termios tmio;
-  
-  int ret = tcgetattr(fd, &tmio);
-  if(ret) {
-    fprintf(stderr, "Error on tcgetattr(): %s", strerror(errno));
-    return ret;
-  }
-
-  ret = cfsetospeed(&tmio, B9600);
-  if(ret) {
-    fprintf(stderr, "Error on cfsetospeed(): %s", strerror(errno));
-    return ret;
-  }
-
-  ret = cfsetispeed(&tmio, B9600);
-  if(ret) {
-    fprintf(stderr, "Error on cfsetispeed(): %s", strerror(errno));
-    return ret;
-  }
-
-  tmio.c_lflag &= ~ECHO;
-
-  ret = tcsetattr(fd, TCSANOW, &tmio);
-  if(ret) {
-    fprintf(stderr, "Error on tcsetattr(): %s", strerror(errno));
-    return ret;
-  }
-  
-  ret = tcflush(fd, TCIFLUSH);
-  if(ret) {
-    fprintf(stderr, "Error on tcflush(): %s", strerror(errno));
-    return ret;
-  }
-
-  fd_set fds;
-  struct timeval tv;
-  FD_ZERO(&fds);
-  FD_SET(fd, &fds);
-  tv.tv_sec = 0;
-  tv.tv_usec = 50000;
-  for(;;) {
-    ret = select(fd+1, &fds, NULL, NULL, &tv);
-    if(ret > 0) {
-      char buffer[100];
-      ret = read(fd, buffer, sizeof(buffer));
-    }
-    else
-      break;
-  }
-
-  return 0;
-}
-
-
-int set_tty_raw(int fd, struct termios *termios_prev)
-{
-  struct termios tmio;
-  
-  int ret = tcgetattr(fd, &tmio);
-  if(ret) {
-    fprintf(stderr, "Error on tcgetattr(): %s", strerror(errno));
-    return ret;
-  }
-  
-  memcpy(termios_prev, &tmio,sizeof(struct termios));
-  
-  cfmakeraw(&tmio);
-  
-  ret = tcsetattr(fd, TCSANOW, &tmio);
-  if(ret) {
-    fprintf(stderr, "Error on tcsetattr(): %s", strerror(errno));
-    return ret;
-  }  
-  
-  fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK);
-  
-  return 0;
-}
-
-int restore_tty(int fd, struct termios  *termios_prev)
-{
-  int ret = tcsetattr(fd, TCSANOW, termios_prev);
-  if(ret) {
-    fprintf(stderr, "Error on tcsetattr(): %s", strerror(errno));
-  }
-  return ret;  
-}
-
-void  connect_terminal(int door_fd)
-{
-  if (door_fd < 3)
-    return;
-  fd_set fds_r;
-  char buffer[256];
-  int num_byte=0;
-  FD_ZERO(&fds_r);
-
-  FD_SET(STDIN_FILENO,&fds_r);
-  FD_SET(door_fd,&fds_r);
-  while (select(door_fd+1,&fds_r,0,0,0) > 0)
-  {
-    if (FD_ISSET(door_fd,&fds_r))
-    {
-      if ((num_byte = read(door_fd,buffer, 1)) > 0)
-      {
-        write(STDOUT_FILENO,buffer,num_byte);
-      }
-      if (num_byte == 0 || (num_byte <0 && errno != EAGAIN))
-        return;
-    }    
-    if (FD_ISSET(STDIN_FILENO,&fds_r))
-    {
-      while((num_byte = read(STDIN_FILENO,buffer, 256)) > 0)
-      {
-        write(door_fd,buffer,num_byte);
-      }
-      if (num_byte <0 && errno != EAGAIN)
-        return;
-    }
-    
-    FD_SET(STDIN_FILENO,&fds_r);
-    FD_SET(door_fd,&fds_r);
-  }
-}
-
-int main(int argc, char* argv[])
-{
-  int ret = 0;
-  int door_fd = 0;
-  struct termios tmio_prev;
-  
-  if (argc > 0)
-    door_dev_ = argv[1];
-  
-  for(;;) 
-  {
-    door_fd = open(door_dev_, O_RDWR | O_NONBLOCK); // | O_NOCTTY
-    if(door_fd < 0)
-      ret = 2;
-    else {
-      ret = setup_tty(door_fd);
-      if(ret)
-        ret = 2;
-      else
-      {
-        ret = set_tty_raw(STDIN_FILENO,&tmio_prev);
-        if (ret)
-          break;
-        
-        connect_terminal(door_fd);
-        
-        ret = restore_tty(STDIN_FILENO,&tmio_prev);
-        if (ret)
-          break;        
-      }
-    }
-
-    if (ret == 2) {
-      fprintf(stderr, "%s error, trying to reopen in 5 seconds..", door_dev_);
-      if(door_fd > 0)
-        close(door_fd);
-      sleep(5);
-    }
-    else
-      break;
-  }
-
-  if(door_fd > 0)
-    close(door_fd);
-  return(ret);
-}
-
diff --git a/serial_console/serial.h b/serial_console/serial.h
deleted file mode 100644 (file)
index 8056131..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <termios.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/select.h>
-
-char const *door_dev_="/dev/ttyUSB0";
-
diff --git a/serial_console/usocket.c b/serial_console/usocket.c
deleted file mode 100644 (file)
index c87b265..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-#include "usocket.h"
-
-void  connect_terminal(int fd)
-{
-  if (fd < 3)
-    return;
-  fd_set fds_r;
-  char buffer[1024];
-  int num_byte=0;
-  char stdin_valid_fd=1;
-  FD_ZERO(&fds_r);
-
-  FD_SET(STDIN_FILENO,&fds_r);
-  FD_SET(fd,&fds_r);
-  while (select(fd+1,&fds_r,0,0,0) > 0)
-  {
-    if (FD_ISSET(fd,&fds_r))
-    {
-      if ((num_byte = recv(fd,buffer, 1024,0)) > 0)
-      {
-        //~ printf("%d:%s\n",num_byte,buffer);
-        write(STDOUT_FILENO,buffer,num_byte);
-      }
-      if (num_byte < 1)
-        return;
-    }    
-    if (stdin_valid_fd && FD_ISSET(STDIN_FILENO,&fds_r))
-    {
-      while((num_byte = read(STDIN_FILENO,buffer, 1024)) > 0)
-      {
-        send(fd,buffer,num_byte,0);
-      }
-      if (num_byte <0 && errno != EAGAIN)
-        return;
-      if (num_byte == 0)
-      {
-        if (quit_on_eof_)
-          return;
-        else
-        {
-          stdin_valid_fd=0;
-          FD_CLR(STDIN_FILENO,&fds_r);
-        }
-      }
-    }
-    
-    FD_SET(fd,&fds_r);
-    if (stdin_valid_fd)
-      FD_SET(STDIN_FILENO,&fds_r);
-  }
-}
-
-int establish_socket_connection(const char* path)
-{
-  int fd = socket(AF_UNIX, SOCK_STREAM, 0);
-  if(fd < 0) {
-    fprintf(stderr, "unable to open socket: %s\n", strerror(errno));
-    return -1;
-  }
-
-  struct sockaddr_un local;
-  local.sun_family = AF_UNIX;
-  if(sizeof(local.sun_path) <= strlen(path)) {
-    fprintf(stderr, "socket path is to long (max %lu)\n", sizeof(local.sun_path)-1);
-    return -1;
-  }
-  
-  strcpy(local.sun_path, path);
-  int len = SUN_LEN(&local);
-  int ret = connect(fd, (struct sockaddr*) &local, len);
-  if(ret) {
-    fprintf(stderr, "unable to connect to '%s': %s\n", local.sun_path, strerror(errno));
-    return -1;
-  }
-  
-  return fd;
-}
-
-
-int main(int argc, char* argv[])
-{
-  int ret = 0;
-  int socket_fd = 0;
-  char *socket_file;
-  
-  if (argc > 1)
-    socket_file = argv[1];
-  else
-    socket_file = default_socket_file_;
-  
-  //give a second argument, to not quit on EOF on stdin.
-  //useful if you just want to pipe some commands to usocket with echo and then listen to stdout
-  if (argc > 2)
-    quit_on_eof_=0;
-  
-  socket_fd = establish_socket_connection(socket_file);
-  if(socket_fd > 0)
-  {
-    fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK);
-    connect_terminal(socket_fd);
-  }
-  else
-  {
-    fprintf(stderr, "%s error, aborting..\n", socket_file);
-    ret=2;
-  }
-
-  if(socket_fd > 0)
-    shutdown(socket_fd,SHUT_RDWR);
-  return(ret);
-}
-
diff --git a/serial_console/usocket.h b/serial_console/usocket.h
deleted file mode 100644 (file)
index 11a6b0d..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <termios.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/select.h>
-#include <sys/un.h>
-
-char *default_socket_file_="/var/run/powersensordaemon/cmd.sock";
-int quit_on_eof_ = 1;
\ No newline at end of file
diff --git a/speak_on_slug.sh b/speak_on_slug.sh
deleted file mode 100755 (executable)
index f1c16d9..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-TFILE=$(mktemp)
-flite -t "$*" $TFILE
-toolame $TFILE - 2>/dev/null | ssh -i /flash/tuer/id_rsa -o PasswordAuthentication=no -o StrictHostKeyChecking=no root@slug.realraum.at /home/playmp3.sh -
-rm $TFILE
diff --git a/speak_on_slug_badly.sh b/speak_on_slug_badly.sh
deleted file mode 100755 (executable)
index 8ada75c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-TFILE=$(mktemp)
-flite -t "$*" $TFILE
-ssh -C -i /flash/tuer/id_rsa -o PasswordAuthentication=no -o StrictHostKeyChecking=no root@slug.realraum.at /home/playwav.sh - < $TFILE 
-rm $TFILE
diff --git a/speak_on_slug_realraumuser.sh b/speak_on_slug_realraumuser.sh
deleted file mode 100755 (executable)
index bb1ed34..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-TFILE=$(mktemp)
-flite -t "$*" $TFILE
-toolame $TFILE - 2>/dev/null | ssh -o PasswordAuthentication=no -o StrictHostKeyChecking=no root@slug.realraum.at /home/playmp3.sh -
-rm $TFILE
diff --git a/sshtest.py b/sshtest.py
deleted file mode 100755 (executable)
index f10ea97..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-from __future__ import with_statement
-import os
-import os.path
-import sys
-import threading
-import logging
-import logging.handlers
-import time
-import signal
-import re
-import socket
-import select
-import subprocess
-import types
-import ConfigParser
-import traceback
-
-logger = logging.getLogger()
-logger.setLevel(logging.INFO)
-lh_syslog = logging.handlers.SysLogHandler(address="/dev/log",facility=logging.handlers.SysLogHandler.LOG_LOCAL2)
-lh_syslog.setFormatter(logging.Formatter('track-presence.py: %(levelname)s %(message)s'))
-logger.addHandler(lh_syslog)
-lh_stderr = logging.StreamHandler()
-logger.addHandler(lh_stderr)
-
-######## Config File Data Class ############
-
-class UWSConfig:
-  def __init__(self,configfile=None):
-    #Synchronisation
-    self.lock=threading.Lock()
-    self.finished_reading=threading.Condition(self.lock)
-    self.finished_writing=threading.Condition(self.lock)
-    self.currently_reading=0
-    self.currently_writing=False
-    #Config Data
-    self.configfile=configfile
-    self.config_parser=ConfigParser.ConfigParser()
-    self.config_parser.add_section('door')
-    self.config_parser.set('door','cmd_socket',"/var/run/tuer/door_cmd.socket")
-    self.config_parser.add_section('sensors')
-    self.config_parser.set('sensors','remote_cmd',"ssh -o PasswordAuthentication=no %RHOST% %RSHELL% %RSOCKET%")
-    self.config_parser.set('sensors','remote_host',"root@slug.realraum.at")
-    self.config_parser.set('sensors','remote_socket',"/var/run/powersensordaemon/cmd.sock")
-    self.config_parser.set('sensors','remote_shell',"usocket")
-    self.config_parser.add_section('tracker')
-    self.config_parser.set('tracker','sec_wait_movement_after_door_closed',2.5)
-    self.config_parser.set('tracker','sec_general_movement_timeout',3600)
-    self.config_parser.set('tracker','server_socket',"/var/run/tuer/presence.socket")
-    self.config_parser.set('tracker','photo_flashlight',950)
-    self.config_parser.set('tracker','photo_daylight',500)
-    self.config_parser.set('tracker','photo_artif_light',150)
-    self.config_parser.add_section('debug')
-    self.config_parser.set('debug','enabled',"False")
-    self.config_mtime=0
-    if not self.configfile is None:
-      try:
-        cf_handle = open(self.configfile,"r")
-        cf_handle.close()
-      except IOError:
-        self.writeConfigFile()
-      else:
-        self.checkConfigUpdates()
-    
-  def guardReading(self):
-    self.lock.acquire()
-    while self.currently_writing:
-      self.finished_writing.wait()
-    self.currently_reading+=1
-    self.lock.release()
-
-  def unguardReading(self):
-    with self.lock:
-      self.currently_reading-=1
-      self.finished_reading.notifyAll()
-      
-  def guardWriting(self):
-    with self.lock:
-      self.currently_writing=True
-      while self.currently_reading > 0:
-        self.finished_reading.wait()
-    
-  def unguardWriting(self):
-    with self.lock:
-      self.currently_writing=False
-      self.finished_writing.notifyAll()
-    
-  def checkConfigUpdates(self):
-    global logger
-    if self.configfile is None:
-      return
-    logging.debug("Checking Configfile mtime: "+self.configfile)
-    try:
-      mtime = os.path.getmtime(self.configfile)
-    except (IOError,OSError):
-      return
-    if self.config_mtime < mtime:
-      logging.debug("Reading Configfile")
-      self.guardWriting()
-      try:
-        self.config_parser.read(self.configfile)
-        self.config_mtime=os.path.getmtime(self.configfile)
-      except (ConfigParser.ParsingError, IOError), pe_ex:
-        logging.error("Error parsing Configfile: "+str(pe_ex))
-      self.unguardWriting()
-      self.guardReading()
-      if self.config_parser.get('debug','enabled') == "True":
-        logger.setLevel(logging.DEBUG)
-      else:
-        logger.setLevel(logging.INFO)
-      self.unguardReading()
-
-  def writeConfigFile(self):
-    if self.configfile is None:
-      return
-    logging.debug("Writing Configfile "+self.configfile)
-    self.guardReading()
-    try:
-      cf_handle = open(self.configfile,"w")
-      self.config_parser.write(cf_handle)
-      cf_handle.close()
-      self.config_mtime=os.path.getmtime(self.configfile)
-    except IOError, io_ex:
-      logging.error("Error writing Configfile: "+str(io_ex))
-      self.configfile=None
-    self.unguardReading()
-
-  def __getattr__(self, name):
-    underscore_pos=name.find('_')
-    if underscore_pos < 0:
-      raise AttributeError
-    rv=None
-    self.guardReading()
-    try:
-      rv = self.config_parser.get(name[0:underscore_pos], name[underscore_pos+1:])
-    except (ConfigParser.NoOptionError, ConfigParser.NoSectionError):
-      self.unguardReading()
-      raise AttributeError
-    self.unguardReading()
-    return rv
-
-
-######## Status Listener Threads ############
-
-def trackSensorStatusThread(uwscfg):
-  try:
-    cmd = uwscfg.sensors_remote_cmd.replace("%RHOST%",uwscfg.sensors_remote_host).replace("%RSHELL%",uwscfg.sensors_remote_shell).replace("%RSOCKET%",uwscfg.sensors_remote_socket).split(" ")
-    print(cmd)
-    sshp = subprocess.Popen(cmd, stdin=subprocess.PIPE, stderr=subprocess.STDOUT, stdout=subprocess.PIPE, shell=False)
-    if not sshp.poll() is None:
-      raise Exception("trackSensorStatusThread: subprocess %d finished, returncode: %d" % (sshp.pid,sshp.returncode))
-    while True:
-      if not sys.stdin is None:
-        sys.stdout.write("> sample temp0")
-        sshp.stdin.write("sample temp0\n")
-      line=sshp.stdout.readline()
-      if len(line) < 1:
-        print "EOF on ssh"
-        break
-      else:
-        print "> "+line
-  except Exception, ex:
-    logging.error("trackSensorStatusThread: "+str(ex)) 
-    traceback.print_exc(file=sys.stdout)
-
-
-############ Main Routine ############
-
-def exitHandler(signum, frame):
-  logging.info("Track Presence stopping")
-  sys.exit(0)
-  
-#signals proapbly don't work because of readline
-#signal.signal(signal.SIGTERM, exitHandler)
-signal.signal(signal.SIGINT, exitHandler)
-signal.signal(signal.SIGQUIT, exitHandler)
-
-logging.info("Presence Tracker started")
-
-#option and only argument: path to config file
-if len(sys.argv) > 1:
-  uwscfg = UWSConfig(sys.argv[1])
-else:
-  uwscfg = UWSConfig()
-
-trackSensorStatusThread(uwscfg)
diff --git a/switch-power.py b/switch-power.py
deleted file mode 100755 (executable)
index 94b0dee..0000000
+++ /dev/null
@@ -1,367 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-import os
-import os.path
-import sys
-import logging
-import logging.handlers
-import urllib
-import time
-import signal
-import json
-import zmq
-import ConfigParser
-import datetime
-import random
-import traceback
-
-logger = logging.getLogger()
-logger.setLevel(logging.INFO)
-lh_syslog = logging.handlers.SysLogHandler(address="/dev/log",facility=logging.handlers.SysLogHandler.LOG_LOCAL2)
-lh_syslog.setFormatter(logging.Formatter('switch-power.py: %(levelname)s %(message)s'))
-logger.addHandler(lh_syslog)
-lh_stderr = logging.StreamHandler()
-logger.addHandler(lh_stderr)
-
-class UWSConfig:
-  def __init__(self,configfile=None):
-    self.configfile=configfile
-    self.config_parser=ConfigParser.ConfigParser()
-    self.config_parser.add_section('powerswitching')
-    self.config_parser.set('powerswitching','secs_movement_before_presence_to_launch_event','1')
-    self.config_parser.set('powerswitching','secs_presence_before_movement_to_launch_event','120')
-    self.config_parser.set('powerswitching','max_secs_since_movement','600')
-    self.config_parser.add_section('slug')
-    self.config_parser.set('slug','cgiuri','http://slug.realraum.at/cgi-bin/switch.cgi?id=%ID%&power=%ONOFF%')
-    self.config_parser.set('slug','lightleveluri','http://slug.realraum.at/cgi-bin/lightlevel.cgi')
-    self.config_parser.set('slug','ids_logo','logo')
-    self.config_parser.set('slug','ids_present_day_bright_room','ymhpoweron werkzeug ymhcd')
-    self.config_parser.set('slug','ids_present_day_dark_room','ymhpoweron decke werkzeug ymhcd')
-    self.config_parser.set('slug','ids_present_night','ymhpoweron werkzeug schreibtisch spots1 labor ymhcd')
-    self.config_parser.set('slug','ids_panic','spots1 ymhmute labor werkzeug deckevorne deckehinten')
-    self.config_parser.set('slug','ids_decke','deckevorne deckehinten')
-    self.config_parser.set('slug','ids_nonpresent_off','ymhvoldown ymhvoldown ymhvoldown ymhvoldown ymhvoldown ymhvoldown ymhvoldown ymhvoldown ymhvoldown ymhvoldown ymhvoldown ymhvoldown lichter ymhpoweroff lichter')
-    self.config_parser.set('slug','light_threshold_brightness','400')
-    self.config_parser.set('slug','light_difference_decke','100')
-    #self.config_parser.set('slug','time_day','6:00-17:00')
-    self.config_parser.add_section('debug')
-    self.config_parser.set('debug','enabled',"False")
-    self.config_parser.add_section('broker')
-    self.config_parser.set('broker','uri',"tcp://torwaechter.realraum.at:4244")
-    self.config_mtime=0
-    if not self.configfile is None:
-      try:
-        cf_handle = open(self.configfile,"r")
-        cf_handle.close()
-      except IOError:
-        self.writeConfigFile()
-      else:
-        self.checkConfigUpdates()
-
-  def checkConfigUpdates(self):
-    global logger
-    if self.configfile is None:
-      return
-    logging.debug("Checking Configfile mtime: "+self.configfile)
-    try:
-      mtime = os.path.getmtime(self.configfile)
-    except (IOError,OSError):
-      return
-    if self.config_mtime < mtime:
-      logging.debug("Reading Configfile")
-      try:
-        self.config_parser.read(self.configfile)
-        self.config_mtime=os.path.getmtime(self.configfile)
-      except (ConfigParser.ParsingError, IOError), pe_ex:
-        logging.error("Error parsing Configfile: "+str(pe_ex))
-      if self.config_parser.get('debug','enabled') == "True":
-        logger.setLevel(logging.DEBUG)
-      else:
-        logger.setLevel(logging.INFO)
-
-  def writeConfigFile(self):
-    if self.configfile is None:
-      return
-    logging.debug("Writing Configfile "+self.configfile)
-    try:
-      cf_handle = open(self.configfile,"w")
-      self.config_parser.write(cf_handle)
-      cf_handle.close()
-      self.config_mtime=os.path.getmtime(self.configfile)
-    except IOError, io_ex:
-      logging.error("Error writing Configfile: "+str(io_ex))
-      self.configfile=None
-
-  def __getattr__(self, name):
-    underscore_pos=name.find('_')
-    if underscore_pos < 0:
-      raise AttributeError
-    try:
-      return self.config_parser.get(name[0:underscore_pos], name[underscore_pos+1:])
-    except (ConfigParser.NoOptionError, ConfigParser.NoSectionError):
-      raise AttributeError
-
-def touchURL(url):
-  try:
-    f = urllib.urlopen(url)
-    rq_response = f.read()
-    logging.debug("touchURL: url: "+url)
-    #logging.debug("touchURL: Response "+rq_response)
-    f.close()
-    return rq_response
-  except Exception, e:
-    logging.error("touchURL: "+str(e))
-
-def switchPower(powerid,turn_on=False):
-  if turn_on:
-    onoff="on"
-  else:
-    onoff="off"
-  touchURL(uwscfg.slug_cgiuri.replace("%ID%",powerid).replace("%ONOFF%",onoff))
-
-def getLightValueNow():
-  lvalue = touchURL(uwscfg.slug_lightleveluri)
-  try:
-    return int(lvalue)
-  except:
-    return None
-
-def haveDaylight():
-  dawn_per_month = {1:8, 2:7, 3:6, 4:6, 5:5, 6:5, 7:5, 8:6, 9:7, 10:8, 11:8, 12:8}
-  dusk_per_month = {1:15, 2:16, 3:17, 4:19, 5:20, 6:20, 7:20, 8:19, 9:17, 10:17, 11:16, 12:15}
-  hour = datetime.datetime.now().hour
-  month = datetime.datetime.now().month
-  return (hour >= dawn_per_month[month] and hour < dusk_per_month[month])
-
-def isWolfHour():
-  hour = datetime.datetime.now().hour
-  return (hour >= 2 and hour < 6)
-
-######### ALGOS ###############
-
-def switchLogo(status_presence):
-  logo_action=None
-  if status_presence:
-    logo_action=True
-  else:
-    if haveDaylight():
-      logo_action=False
-    else:
-       if isWolfHour():
-          logo_action=False
-       else:
-          logo_action=True
-  if not logo_action is None:
-    logging.info("switchLogo: logo_action:%s" % str(logo_action))
-    for id in uwscfg.slug_ids_logo.split(" "):
-      switchPower(id,logo_action)
-
-######### EVENTS ###############
-unixts_last_movement=0
-unixts_last_presence=0
-status_presence=None
-room_is_bright=None
-
-
-def eventRoomGotBright():
-  global room_is_bright
-  logging.debug("eventRoomGotBright()")
-  room_is_bright=True
-
-def eventRoomGotDark():
-  global room_is_bright
-  logging.debug("eventRoomGotDark()")
-  room_is_bright=False
-
-def eventMovement():
-  global unixts_last_movement, unixts_last_presence
-  unixts_last_movement=time.time()
-  if (time.time() - unixts_last_presence) <= float(uwscfg.powerswitching_secs_presence_before_movement_to_launch_event):
-    eventPresentAndMoved()
-    unixts_last_presence=0  # so that eventPresentAndMoved will only launch once per presence event (i.e. supress multiple movement events)
-
-
-#  global unixts_last_movement
-#  if status_presence is True and unixts_last_movement + int(uwscfg.powerswitching_max_secs_since_movement) >= time.time():
-#    presumed_state=not (haveDaylight() or isWolfHour())
-#    for id in uwscfg.slug_ids_logo.split(" "):
-#      switchPower(id,not presumed_state)
-#      time.sleep(1);
-#      switchPower(id,presumed_state)
-
-def eventPresent():
-  global status_presence,room_is_bright,unixts_last_movement,uwscfg,unixts_last_presence
-  unixts_last_presence=time.time()
-  logging.debug("eventPresent()");
-  status_presence=True
-  if haveDaylight():
-    if room_is_bright is False:
-      present_ids=uwscfg.slug_ids_present_day_dark_room
-    else:
-      present_ids=uwscfg.slug_ids_present_day_bright_room
-  else:
-    present_ids=uwscfg.slug_ids_present_night
-  logging.info("event: someone present, switching on: "+present_ids)
-  for id in present_ids.split(" "):
-    switchPower(id,True)
-  switchLogo(status_presence)
-  if ( time.time() - unixts_last_movement ) <= float(uwscfg.powerswitching_secs_movement_before_presence_to_launch_event):
-    unixts_last_movement=0
-    eventPresentAndMoved()
-
-def eventPresentAndMoved():
-  global status_presence,room_is_bright
-  pass
-
-def eventNobodyHere():
-  global status_presence
-  logging.debug("eventNobodyHere()");
-  status_presence=False
-  present_ids=uwscfg.slug_ids_nonpresent_off
-  logging.info("event: noone here, switching off: "+present_ids)
-  present_id_list=present_ids.split(" ")
-  for id in present_id_list:
-    time.sleep(0.15)
-    switchPower(id,False)
-  present_id_list.reverse()
-  time.sleep(0.15)
-  switchLogo(status_presence)
-  time.sleep(2)
-  for id in present_id_list:
-    time.sleep(0.15)
-    switchPower(id,False)
-
-##def eventPanic():
-##  logging.info("eventPanic(): switching around: "+uwscfg.slug_ids_panic)
-##  lst1 = uwscfg.slug_ids_panic.split(" ")
-##  lst2 = map(lambda e:[e,False], lst1)
-##  for id in lst1:
-##    switchPower(id,False)
-##  for delay in map(lambda e: (40-e)/33.0,range(10,33)):
-##    e = random.choice(lst2)
-##    e[1]=not e[1]
-##    switchPower(e[0],e[1])
-##    time.sleep(delay)
-##  random.shuffle(lst1)
-##  for id in lst1:
-##    switchPower(id,False)
-##  time.sleep(1.2)
-##  eventPresent()
-
-def eventPanic():
-  global light_value
-  logging.info("eventPanic(): switching around: "+uwscfg.slug_ids_panic)
-  lst1 = uwscfg.slug_ids_panic.split(" ")
-  lst2 = map(lambda e:[e,False], lst1)
-  deckenlicht_ids = uwscfg.slug_ids_decke.split(" ")
-  ceiling_light_was_on = False
-  #guess main light state:
-  if len(list(set(deckenlicht_ids) & set(lst1))) > 0:
-    light_value_before = light_value
-    for id in deckenlicht_ids:
-      switchPower(id,False)
-    time.sleep(2.8)
-    light_value_after = getLightValueNow()
-    if not (light_value_before is None or light_value_after is None):
-      ceiling_light_was_on = ((light_value_before - light_value_after) > int(uwscfg.slug_light_difference_decke))
-    logging.debug("eventPanic: light_value_before: %d, light_value_after: %d, ceiling_light_was_on: %s" % (light_value_before,light_value_after,str(ceiling_light_was_on)))
-  for id in lst1:
-    switchPower(id,False)
-  for times in range(1,6):
-    delay = random.choice([0.3,1.4,0.9,0.5,0.3,1.4,0.9,0.5,2.2])
-    time.sleep(delay)
-    for e in lst2:
-      e[1]=not e[1]
-      switchPower(e[0],e[1])
-  for id in lst1:
-    switchPower(id,False)
-  time.sleep(1.2)
-  eventPresent()
-  #we can only test if it was on, we don't any other informatino
-  if ceiling_light_was_on:
-    for id in deckenlicht_ids:
-      switchPower(id,True)
-
-
-########################
-
-def decodeR3Message(multipart_msg):
-    try:
-        return (multipart_msg[0], json.loads(multipart_msg[1]))
-    except Exception, e:
-        logging.debug("decodeR3Message:"+str(e))
-        return ("",{})
-
-def exitHandler(signum, frame):
-  logging.info("Power Switch Daemon stopping")
-  try:
-    zmqsub.close()
-    zmqctx.destroy()
-  except:
-    pass
-  sys.exit(0)
-
-#signals proapbly don't work because of readline
-#signal.signal(signal.SIGTERM, exitHandler)
-signal.signal(signal.SIGINT, exitHandler)
-signal.signal(signal.SIGQUIT, exitHandler)
-
-logging.info("Power Switch Daemon started")
-
-if len(sys.argv) > 1:
-  uwscfg = UWSConfig(sys.argv[1])
-else:
-  uwscfg = UWSConfig()
-
-
-daylight=None
-wolfhour=None
-light_value=0
-while True:
-  try:
-    #Start zmq connection to publish / forward sensor data
-    zmqctx = zmq.Context()
-    zmqctx.linger = 0
-    zmqsub = zmqctx.socket(zmq.SUB)
-    zmqsub.setsockopt(zmq.SUBSCRIBE, "")
-    zmqsub.connect(uwscfg.broker_uri)
-
-    while True:
-
-      data = zmqsub.recv_multipart()
-      (structname, dictdata) = decodeR3Message(data)
-      logging.debug("Got data: " + structname + ":"+ str(dictdata))
-
-      uwscfg.checkConfigUpdates()
-
-      if structname == "PresenceUpdate" and "Present" in dictdata:
-        if dictdata["Present"]:
-          eventPresent()
-        else:
-          eventNobodyHere()
-        continue
-      elif structname == "BoreDoomButtonPressEvent":
-        eventPanic()
-        continue
-      elif structname == "MovementSensorUpdate" or structname == "DoorAjarUpdate":
-        eventMovement()
-        continue
-      elif structname == "IlluminationSensorUpdate" and "Value" in dictdata:
-        light_value = dictdata["Value"]
-        light_threshold = int(uwscfg.slug_light_threshold_brightness)
-        #logging.debug("photo value: %d  threshold: %s" % (light_value,light_threshold))
-        if light_value >= light_threshold:
-          eventRoomGotBright()
-        else:
-          eventRoomGotDark()
-        continue
-
-  except Exception, ex:
-    logging.error("main: "+str(ex))
-    traceback.print_exc(file=sys.stdout)
-    try:
-      zmqsub.close()
-      zmqctx.destroy()
-    except:
-      pass
-    time.sleep(5)
diff --git a/test_autosuspend.sh b/test_autosuspend.sh
deleted file mode 100755 (executable)
index e15eb95..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/zsh
-local devPath
-for idVendor in /sys/bus/usb/devices/*/idVendor; do
-  devPath=${idVendor:h} 
-  if [[ "$(< $idVendor)" == "16c0" && "$(< ${devPath}/idProduct )" == "076b" ]]; then
-    cat ${devPath}/power/autosuspend
-  fi
-done
-
-
diff --git a/track-presence.py b/track-presence.py
deleted file mode 100755 (executable)
index 3877c5c..0000000
+++ /dev/null
@@ -1,624 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-from __future__ import with_statement
-import os
-import os.path
-import sys
-import threading
-import logging
-import logging.handlers
-import time
-import signal
-import re
-import socket
-import select
-import subprocess
-import types
-import ConfigParser
-import traceback
-
-logger = logging.getLogger()
-logger.setLevel(logging.INFO)
-lh_syslog = logging.handlers.SysLogHandler(address="/dev/log",facility=logging.handlers.SysLogHandler.LOG_LOCAL2)
-lh_syslog.setFormatter(logging.Formatter('track-presence.py: %(levelname)s %(message)s'))
-logger.addHandler(lh_syslog)
-lh_stderr = logging.StreamHandler()
-logger.addHandler(lh_stderr)
-
-######## Config File Data Class ############
-
-class UWSConfig:
-  def __init__(self,configfile=None):
-    #Synchronisation
-    self.lock=threading.Lock()
-    self.finished_reading=threading.Condition(self.lock)
-    self.finished_writing=threading.Condition(self.lock)
-    self.currently_reading=0
-    self.currently_writing=False
-    #Config Data
-    self.configfile=configfile
-    self.config_parser=ConfigParser.ConfigParser()
-    self.config_parser.add_section('door')
-    self.config_parser.set('door','cmd_socket',"/var/run/tuer/door_cmd.socket")
-    self.config_parser.add_section('sensors')
-    self.config_parser.set('sensors','remote_cmd',"ssh -i /flash/tuer/id_rsa -o PasswordAuthentication=no -o StrictHostKeyChecking=no %RHOST% %RSHELL% %RSOCKET%")
-    self.config_parser.set('sensors','remote_host',"root@slug.realraum.at")
-    self.config_parser.set('sensors','remote_socket',"/var/run/powersensordaemon/cmd.sock")
-    self.config_parser.set('sensors','remote_shell',"usocket")
-    self.config_parser.add_section('tracker')
-    self.config_parser.set('tracker','sec_wait_after_close_using_cardphone',"4.2")
-    self.config_parser.set('tracker','sec_wait_for_movement_before_warning',"60")
-    self.config_parser.set('tracker','sec_wait_after_close_using_manualswitch',"22.0")
-    self.config_parser.set('tracker','sec_movement_before_manual_switch',"-3.0")  #neg duration means: movement has to occur _after_ door was closed manually
-    self.config_parser.set('tracker','sec_general_movement_timeout',"3600")
-    self.config_parser.set('tracker','num_movements_req_on_nonpresence_until_present',"3")
-    self.config_parser.set('tracker','server_socket',"/var/run/tuer/presence.socket")
-    self.config_parser.set('tracker','photo_flashlight',"1020")
-    self.config_parser.set('tracker','photo_artif_light',"970")
-    self.config_parser.add_section('debug')
-    self.config_parser.set('debug','enabled',"False")
-    self.config_mtime=0
-    if not self.configfile is None:
-      try:
-        cf_handle = open(self.configfile,"r")
-        cf_handle.close()
-      except IOError:
-        self.writeConfigFile()
-      else:
-        self.checkConfigUpdates()
-    
-  def guardReading(self):
-    with self.lock:
-      while self.currently_writing:
-        self.finished_writing.wait()
-      self.currently_reading+=1
-
-  def unguardReading(self):
-    with self.lock:
-      self.currently_reading-=1
-      self.finished_reading.notifyAll()
-      
-  def guardWriting(self):
-    with self.lock:
-      self.currently_writing=True
-      while self.currently_reading > 0:
-        self.finished_reading.wait()
-    
-  def unguardWriting(self):
-    with self.lock:
-      self.currently_writing=False
-      self.finished_writing.notifyAll()
-    
-  def checkConfigUpdates(self):
-    global logger
-    if self.configfile is None:
-      return
-    logging.debug("Checking Configfile mtime: "+self.configfile)
-    try:
-      mtime = os.path.getmtime(self.configfile)
-    except (IOError,OSError):
-      return
-    if self.config_mtime < mtime:
-      logging.debug("Reading Configfile")
-      self.guardWriting()
-      try:
-        self.config_parser.read(self.configfile)
-        self.config_mtime=os.path.getmtime(self.configfile)
-      except (ConfigParser.ParsingError, IOError), pe_ex:
-        logging.error("Error parsing Configfile: "+str(pe_ex))
-      self.unguardWriting()
-      self.guardReading()
-      if self.config_parser.get('debug','enabled') == "True":
-        logger.setLevel(logging.DEBUG)
-      else:
-        logger.setLevel(logging.INFO)
-      self.unguardReading()
-
-  def writeConfigFile(self):
-    if self.configfile is None:
-      return
-    logging.debug("Writing Configfile "+self.configfile)
-    self.guardReading()
-    try:
-      cf_handle = open(self.configfile,"w")
-      self.config_parser.write(cf_handle)
-      cf_handle.close()
-      self.config_mtime=os.path.getmtime(self.configfile)
-    except IOError, io_ex:
-      logging.error("Error writing Configfile: "+str(io_ex))
-      self.configfile=None
-    self.unguardReading()
-
-  def __getattr__(self, name):
-    underscore_pos=name.find('_')
-    if underscore_pos < 0:
-      raise AttributeError
-    rv=None
-    self.guardReading()
-    try:
-      rv = self.config_parser.get(name[0:underscore_pos], name[underscore_pos+1:])
-    except (ConfigParser.NoOptionError, ConfigParser.NoSectionError):
-      self.unguardReading()
-      raise AttributeError
-    self.unguardReading()
-    return rv
-
-
-######## Status Listener Threads ############
-threads_running=True
-
-def trackSensorStatusThread(uwscfg,status_tracker,connection_listener):
-  global sshp, threads_running
-  #RE_TEMP = re.compile(r'temp\d: (\d+\.\d+)')
-  RE_PHOTO = re.compile(r'photo\d: [^0-9]*?(\d+)',re.I)
-  RE_MOVEMENT = re.compile(r'movement|button\d?|PanicButton',re.I)
-  RE_ERROR = re.compile(r'Error: (.+)',re.I)
-  while threads_running:
-    uwscfg.checkConfigUpdates()
-    sshp = None
-    try:
-      cmd = uwscfg.sensors_remote_cmd.replace("%RHOST%",uwscfg.sensors_remote_host).replace("%RSHELL%",uwscfg.sensors_remote_shell).replace("%RSOCKET%",uwscfg.sensors_remote_socket).split(" ")
-      logging.debug("trackSensorStatusThread: Executing: "+" ".join(cmd))
-      sshp = subprocess.Popen(cmd, bufsize=1024, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=False)
-      logging.debug("trackSensorStatusThread: pid %d: running=%d" % (sshp.pid,sshp.poll() is None))
-      if not sshp.poll() is None:
-        raise Exception("trackSensorStatusThread: subprocess %d not started ?, returncode: %d" % (sshp.pid,sshp.returncode))
-      #sshp.stdin.write("listen movement\nlisten button\nlisten sensor\n")
-      time.sleep(5) #if we send listen bevor usocket is running, we will never get output
-      #sshp.stdin.write("listen all\n")
-      logging.debug("trackSensorStatusThread: send: listen movement, etc")
-      sshp.stdin.write("listen movement\n")
-      sshp.stdin.write("listen button\n")
-      sshp.stdin.write("listen sensor\n")
-      #sshp.stdin.write("sample temp0\n")
-      sshp.stdin.flush()
-      while threads_running:
-        if not sshp.poll() is None:
-          raise Exception("trackSensorStatusThread: subprocess %d finished, returncode: %d" % (sshp.pid,sshp.returncode))
-        line = sshp.stdout.readline()
-        if len(line) < 1:
-          raise Exception("EOF on Subprocess, daemon seems to have quit, returncode: %d",sshp.returncode)
-        logging.debug("trackSensorStatusThread: Got Line: " + line)
-        if not line.startswith("Warning: Permanently added"):
-          connection_listener.distributeData(line)
-        m = RE_MOVEMENT.match(line)
-        if not m is None:
-          status_tracker.movementDetected()
-          continue
-        m = RE_PHOTO.match(line)
-        if not m is None:
-          status_tracker.currentLightLevel(int(m.group(1)))
-          continue
-        m = RE_ERROR.match(line)
-        if not m is None:
-          logging.error("trackSensorStatusThread: got: "+line) 
-    except Exception, ex:
-      logging.error("trackSensorStatusThread: "+str(ex)) 
-      traceback.print_exc(file=sys.stdout)
-      if not sshp is None and sshp.poll() is None:
-        if sys.hexversion >= 0x020600F0:
-          sshp.terminate()
-        else:
-          subprocess.call(["kill",str(sshp.pid)])
-        time.sleep(1.5)
-        if sshp.poll() is None:
-          logging.error("trackSensorStatusThread: subprocess still alive, sending SIGKILL to pid %d" % (sshp.pid))
-          if sys.hexversion >= 0x020600F0:
-            sshp.kill()
-          else:
-            subprocess.call(["kill","-9",str(sshp.pid)])
-      time.sleep(5)  
-
-door_sockhandle=None
-door_socklock=threading.Lock()
-def trackDoorStatusThread(uwscfg, status_tracker,connection_listener):
-  global door_sockhandle, door_socklock, threads_running
-  #socket.setdefaulttimeout(10.0) #affects all new Socket Connections (urllib as well)
-  RE_STATUS = re.compile(r'Status: (closed|opened), (opening|waiting|closing|idle), (ajar|shut).*',re.I)
-  RE_REQUEST = re.compile(r'Request: (\w+) (?:(Card|Phone|SSH|ssh) )?(.+)',re.I)
-  RE_ERROR = re.compile(r'Error: (.+)',re.I)
-  while threads_running:
-    uwscfg.checkConfigUpdates()
-    with door_socklock:
-      conn=None
-      door_sockhandle=None
-    try:
-      if not os.path.exists(uwscfg.door_cmd_socket):
-        logging.debug("Socketfile '%s' not found, waiting 5 secs" % uwscfg.door_cmd_socket)
-        time.sleep(5)
-        continue
-      with door_socklock:
-        door_sockhandle = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
-        door_sockhandle.connect(uwscfg.door_cmd_socket)
-        conn = os.fdopen(door_sockhandle.fileno())
-        door_sockhandle.send("listen\n")
-        door_sockhandle.send("status\n")
-
-      last_who = None
-      last_how = None
-      while threads_running:
-        #no lock here, we're just blocking and reading
-        line = conn.readline()
-        logging.debug("trackDoorStatusThread: Got Line: " + line)
-        
-        if len(line) < 1:
-          raise Exception("EOF on Socket, daemon seems to have quit")
-        
-        connection_listener.distributeData(line)
-        
-        m = RE_STATUS.match(line)
-        if not m is None:
-          (status, current_operation, ajar_status) = m.group(1,2,3)
-          #REALLY: doorOpen/Closed should be called before doorLocked/Unlocked
-          if ajar_status == "ajar":
-            status_tracker.doorOpen()
-          else:
-            status_tracker.doorClosed()
-          if current_operation == "idle":
-            if status == "opened":
-              status_tracker.doorUnlocked(last_who, last_how)
-            if status == "closed":
-              status_tracker.doorLocked(last_who, last_how)
-            last_who = None
-            last_how = None
-          continue
-        m = RE_REQUEST.match(line)
-        if not m is None:  
-          last_who = m.group(3)
-          last_how = m.group(2)
-          continue
-    except Exception, ex:
-      logging.error("main: "+str(ex))
-      traceback.print_exc(file=sys.stdout) 
-      try:
-        with door_socklock:
-          if not door_sockhandle is None:
-            door_sockhandle.close()
-      except:
-        pass
-      with door_socklock:
-        conn=None
-        door_sockhandle=None      
-      time.sleep(5)
-
-def updateDoorStatus():
-  global door_sockhandle, door_socklock
-  with door_socklock:
-    if not door_sockhandle is None:
-      door_sockhandle.send("status\n")
-
-############ Status Tracker Class ############
-
-class StatusTracker: #(threading.Thread):
-  def __init__(self, uwscfg):
-    self.uwscfg=uwscfg
-    self.status_change_handler = None
-    #State locked by self.lock
-    self.door_unlocked_previously=None
-    self.door_unlocked=False
-    self.door_closed=True
-    self.door_manual_switch_used=False
-    self.door_physically_present=True
-    self.door_who=None
-    self.last_door_operation_unixts=0
-    self.last_movement_unixts=0
-    self.last_light_value=0
-    self.last_light_unixts=0
-    self.lock=threading.RLock()
-    #Notify State locked by self.presence_notify_lock
-    self.last_somebody_present_result=False
-    self.last_warning=None
-    self.count_same_warning=0
-    self.who_might_be_here=None
-    self.presence_notify_lock=threading.RLock()
-    #timer
-    self.timer=None
-    self.timer_timeout=0
-    self.num_movements_during_nonpresences = 0
-
-  def doorOpen(self):
-    logging.debug("doorOpen()")
-    self.door_closed=False
-    #future other stuff
-
-  def doorClosed(self):
-    logging.debug("doorClosed()")
-    self.door_closed=True
-    #future other stuff
-
-  def doorUnlocked(self,who,how):
-    self.uwscfg.checkConfigUpdates()
-    self.lock.acquire()
-    self.door_unlocked=True
-    self.door_closed=True
-    if self.door_unlocked != self.door_unlocked_previously:
-      self.door_who=who
-      self.lock.release()
-      self.updateWhoMightBeHere(who)
-      self.lock.acquire()
-      self.door_manual_switch_used=(who is None or len(who) == 0)
-      self.door_physically_present=(self.door_manual_switch_used or (not how is None and how.startswith("Card")))
-      if not self.door_unlocked_previously is None:
-        self.last_door_operation_unixts=time.time()
-      self.lock.release()
-      self.checkPresenceStateChangeAndNotify()
-      self.lock.acquire()
-      self.door_unlocked_previously = self.door_unlocked
-    self.lock.release()
-    logging.debug("doorUnlocked: open: %s, who: %s, how: %s, manual_switch: %s; physically_present: %s" % (self.door_unlocked,self.door_who,how,self.door_manual_switch_used,self.door_physically_present))
-    
-  def doorLocked(self,who,how):
-    self.uwscfg.checkConfigUpdates()
-    self.lock.acquire()
-    self.door_unlocked=False
-    if self.door_unlocked != self.door_unlocked_previously:
-      self.door_who=who
-      self.lock.release()
-      self.updateWhoMightBeHere(who)
-      self.lock.acquire()
-      self.door_manual_switch_used=(who is None or len(who) == 0)
-      self.door_physically_present=(self.door_manual_switch_used or (not how is None and how.startswith("Card")))
-      if not self.door_unlocked_previously is None:
-        self.last_door_operation_unixts=time.time()
-      self.lock.release()
-      self.checkPresenceStateChangeAndNotify()
-      self.lock.acquire()
-      self.door_unlocked_previously = self.door_unlocked
-    self.lock.release()
-    logging.debug("doorLocked: open: %s, who: %s, how:%s, manual_switch: %s; physically_present: %s" % (self.door_unlocked,self.door_who,how,self.door_manual_switch_used,self.door_physically_present))
-
-  def movementDetected(self):
-    self.uwscfg.checkConfigUpdates()
-    self.lock.acquire()
-    self.last_movement_unixts=time.time()
-    self.lock.release()
-    #FIXME: QUICKFIX ignore movement
-    return
-    self.checkPresenceStateChangeAndNotify()
-
-  def currentLightLevel(self, value):
-    self.uwscfg.checkConfigUpdates()
-    self.last_light_unixts=time.time()
-    self.last_light_value=value
-    self.checkPresenceStateChangeAndNotify()
-  
-  def checkLight(self, somebody_present=None):
-    if somebody_present is None:
-      somebody_present=self.somebodyPresent()
-    
-    if self.last_light_value > int(self.uwscfg.tracker_photo_flashlight):
-      return "Light: flashlight"
-    elif self.last_light_value > int(self.uwscfg.tracker_photo_artif_light):
-      if not somebody_present and self.last_light_unixts > self.last_door_operation_unixts:
-        return "Light: forgotten"
-      else:
-        return "Light: on"      
-    else:
-      return "Light: off"
-
-  def checkAgainIn(self, sec):
-    if sec <= 0.0:
-        return
-    if self.timer_timeout < time.time():
-      logging.debug("checkAgainIn: starting Timer with timeout %fs" % sec)
-      self.timer=threading.Timer(sec, self.checkPresenceStateChangeAndNotify)
-      self.timer.start()
-      self.timer_timeout = time.time() + sec
-    else:
-      logging.debug("checkAgainIn: not starting timer, already one scheduled in %fs" % (time.time() - self.timer_timeout))
-  
-  def somebodyPresent(self):
-    with self.lock:
-      #door unlocked:
-      if self.door_unlocked:
-        self.num_movements_during_nonpresences = 0
-        if self.door_physically_present:
-          return True
-        #door is ajar and unlocked then we are here for sure:
-        elif self.door_closed == False: 
-          return True
-        elif self.last_movement_unixts > self.last_door_operation_unixts:
-          return True
-        else:
-          return False
-      # door locked but still ajar:
-      elif self.door_closed == False:   #and elf.door_unlocked == False
-        return True
-      # door not locked from inside, but with card/phone .. check again in ...
-      elif not self.door_manual_switch_used and time.time() - self.last_door_operation_unixts <= float(self.uwscfg.tracker_sec_wait_after_close_using_cardphone):
-        self.num_movements_during_nonpresences = 0
-        self.checkAgainIn(float(self.uwscfg.tracker_sec_wait_after_close_using_cardphone))
-        return self.last_somebody_present_result      
-      # door locked from inside, and door not ajar
-      elif self.door_manual_switch_used and self.door_closed:
-        return True
-#      # door locked from inside, stay on last status ....
-#      elif self.door_manual_switch_used and time.time() - self.last_door_operation_unixts <= float(self.uwscfg.tracker_sec_wait_after_close_using_manualswitch):
-#        self.num_movements_during_nonpresences = 0
-#        self.checkAgainIn(float(self.uwscfg.tracker_sec_wait_after_close_using_manualswitch))
-#        return self.last_somebody_present_result
-#      # door locked from inside and movement detected around that time
-#      elif self.door_manual_switch_used and self.last_movement_unixts > self.last_door_operation_unixts - float(self.uwscfg.tracker_sec_movement_before_manual_switch):
-#        self.num_movements_during_nonpresences = 0
-#        return True
-      ##door was closed and nobody here But movement is dedected:
-      #elif self.last_movement_unixts > self.last_door_operation_unixts and time.time() - self.last_movement_unixts < float(self.uwscfg.tracker_sec_general_movement_timeout):
-      #  self.num_movements_during_nonpresences += 1
-      #  if self.num_movements_during_nonpresences >= int(self.uwscfg.tracker_num_movements_req_on_nonpresence_until_present):
-      #    return True
-      #  else:
-      #    return False
-      else:
-        self.num_movements_during_nonpresences = 0
-        return False
-  def getPossibleWarning(self):
-    with self.lock:
-      somebody_present=self.last_somebody_present_result
-      if not somebody_present and not self.door_closed:
-        return "Nobody here but door ajar !"
-      elif self.door_unlocked and not somebody_present and time.time() - self.last_door_operation_unixts >= float(self.uwscfg.tracker_sec_wait_for_movement_before_warning):
-        return "Door unlocked recently but nobody present"
-      elif self.door_unlocked and not somebody_present:
-        self.checkAgainIn(float(self.uwscfg.tracker_sec_wait_for_movement_before_warning))
-        return None
-#      elif not somebody_present and self.last_light_unixts > self.last_door_operation_unixts and self.last_light_value > int(self.uwscfg.tracker_photo_artif_light):
-#return "Nobody here but light is still on"
-      else:
-        return None
-  def updateWhoMightBeHere(self, who):
-    with self.presence_notify_lock:
-      self.who_might_be_here = who
-
-  def forgetWhoMightBeHere(self, somebody_present):
-    with self.presence_notify_lock:
-      if not somebody_present:
-        self.who_might_be_here = None
-
-  def checkPresenceStateChangeAndNotify(self):
-    #no acquiring of self.lock, "just" reading. chance wrong reads in favour of avoiding race conditions (is python var _read_ threadsafe ?)
-    with self.presence_notify_lock:
-      somebody_present = self.somebodyPresent()
-      logging.debug("checkPresenceStateChangeAndNotify: somebody_present=%s, door_locked=%s, door_ajar=%s, door_who=%s, who=%s, light=%s" % (somebody_present,not self.door_unlocked, not self.door_closed, self.door_who,self.who_might_be_here, str(self.last_light_value)))
-      if somebody_present != self.last_somebody_present_result:
-        self.last_somebody_present_result = somebody_present
-        if not self.status_change_handler is None:
-          self.status_change_handler(somebody_present, door_open=self.door_unlocked, who=self.who_might_be_here)
-        self.forgetWhoMightBeHere(somebody_present)
-      warning = self.getPossibleWarning()
-      if warning == self.last_warning:
-        self.count_same_warning+=1
-      else:
-        self.last_warning=warning
-        self.count_same_warning=0
-      if not warning is None and self.count_same_warning < 3:
-        logging.debug("checkPresenceStateChangeAndNotify: warning: " + str(warning))
-        if not self.status_change_handler is None:
-          self.status_change_handler(somebody_present=None, door_open=self.door_unlocked, who=self.who_might_be_here, warning=warning)
-############ Connection Listener ############
-class ConnectionListener:
-  def __init__(self, uwscfg, status_tracker):
-    self.uwscfg=uwscfg
-    self.status_tracker=status_tracker
-    self.server_socket=None
-    self.running=True
-    #register update handler with StatusTracker
-    status_tracker.status_change_handler = self.updateStatus
-    #Lock protected data:
-    self.client_sockets=[]
-    self.lock=threading.Lock()
-  
-  def shutdown(self):
-    self.running=False
-    try:
-      self.server_socket.close()
-    except:
-      pass
-    with self.lock:
-      for sock_to_close in self.client_sockets:
-        try:
-          sock_to_close.close()
-        except:
-          pass
-  
-  def statusString(self,somebody_present, door_open=None, who=None):
-    details=""
-    if not who is None:
-      if door_open:
-        details=", opened, "
-      else:
-        details=", closed, "
-      details += who
-    if somebody_present:
-      return "Presence: yes" + details + "\n"
-    else:
-      return "Presence: no" + details + "\n"
-  
-  def updateStatus(self,somebody_present=None,door_open=None,who=None,warning=None):
-    if not somebody_present is None:
-      self.distributeData(self.statusString(somebody_present, door_open, who))
-    if not warning is None:
-      self.distributeData("Warning: " + warning + "\n")
-    
-  def distributeData(self,data):
-    with self.lock:
-      for socket_to_send_to in self.client_sockets:
-        socket_to_send_to.send(data)
-    
-  def serve(self):
-    self.server_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
-    try:
-        os.remove(self.uwscfg.tracker_server_socket)
-    except OSError:
-        pass
-    self.server_socket.bind(self.uwscfg.tracker_server_socket)
-    self.server_socket.listen(2)
-    while (self.running):
-      (ready_to_read, ready_to_write, in_error) = select.select([self.server_socket]+self.client_sockets, [],  [])
-      for socket_to_read in ready_to_read:
-        if socket_to_read == self.server_socket:
-          newsocketconn, addr = self.server_socket.accept()
-          newsocketconn.send(self.statusString(self.status_tracker.somebodyPresent()))
-          with self.lock:
-            self.client_sockets.append(newsocketconn)
-          updateDoorStatus()
-        else:
-          #drop all recieved data and watch for closed sockets
-          if not socket_to_read.recv(256):
-            with self.lock:
-              self.client_sockets.remove(socket_to_read)
-            try:
-              socket_to_read.close()
-            except:
-              pass
-    if self.server_socket:
-      self.server_socket.shutdown(socket.SHUT_RDWR)
-############ Main Routine ############
-
-def exitHandler(signum, frame):
-  global threads_running, connection_listener, sshp, door_sockhandle
-  logging.info("Track Presence stopping")
-  threads_running=False
-  connection_listener.shutdown()
-  try:
-    if sys.hexversion >= 0x020600F0:
-      sshp.terminate()
-    else:
-      subprocess.call(["kill",str(sshp.pid)])
-  except:
-    pass
-  try:
-    door_sockhandle.close()
-  except:
-    pass
-  time.sleep(0.1)
-  sys.exit(0)
-  
-#signals proapbly don't work because of readline
-#signal.signal(signal.SIGTERM, exitHandler)
-signal.signal(signal.SIGINT, exitHandler)
-signal.signal(signal.SIGQUIT, exitHandler)
-
-logging.info("Presence Tracker started")
-
-#option and only argument: path to config file
-if len(sys.argv) > 1:
-  uwscfg = UWSConfig(sys.argv[1])
-else:
-  uwscfg = UWSConfig()
-
-#Status Tracker keeps track of stuff and derives peoples presence from current state
-status_tracker = StatusTracker(uwscfg)
-#ConnectionListener servers incoming socket connections and distributes status update
-connection_listener = ConnectionListener(uwscfg, status_tracker)
-#Thread listening for door status changes
-track_doorstatus_thread = threading.Thread(target=trackDoorStatusThread,args=(uwscfg,status_tracker,connection_listener),name="trackDoorStatusThread")
-track_doorstatus_thread.start()
-#Thread listening for movement
-track_sensorstatus_thread = threading.Thread(target=trackSensorStatusThread,args=(uwscfg,status_tracker,connection_listener),name="trackSensorStatusThread")
-track_sensorstatus_thread.start()
-
-#main routine: serve connections
-connection_listener.serve()