Merge pull request #1743 from marcin1j/patchwork/owfs
owfs: add startup scripts, make features configurable and fix w1 adapter bugs
This commit is contained in:
commit
5f9cd613f6
|
@ -0,0 +1,49 @@
|
|||
menu "Customize libow"
|
||||
depends on PACKAGE_libow
|
||||
|
||||
menu "Bus master and adapter support"
|
||||
config LIBOW_MASTER_USB
|
||||
bool "USB bus master support (requires libusb)"
|
||||
help
|
||||
Include support for USB adapters (NOT usb-serial adapters, which use
|
||||
kernel driver and are supported anyway).
|
||||
Turning this off will save ~13kB (and ~50kB weighting libusb dependency).
|
||||
default y
|
||||
|
||||
config LIBOW_MASTER_I2C
|
||||
bool "I2C bus master (DS2482) support"
|
||||
default y
|
||||
help
|
||||
Include support for I2C adapters.
|
||||
Turning this feature off will save ~6kB.
|
||||
|
||||
config LIBOW_MASTER_W1
|
||||
bool "Kernel W1 bus master support (requires kmod-w1)"
|
||||
help
|
||||
Support kernel 1-Wire bus masters (requires KConfig CONFIG_CONNECTOR=y
|
||||
and CONFIG_W1_CON=y).
|
||||
Turning this on will increase libow size by about 10kB.
|
||||
default n
|
||||
endmenu
|
||||
|
||||
config LIBOW_ZEROCONF
|
||||
bool "Zeroconf/bonjour support"
|
||||
default y
|
||||
help
|
||||
Enable server process announcement using Zeroconf (Bonjour) protocol.
|
||||
Turning this feature on will increase owlib size by about 12kB.
|
||||
|
||||
config LIBOW_DEBUG
|
||||
bool "Enable debug output (100+ kB)"
|
||||
default y
|
||||
help
|
||||
If you don't need to debug your 1-wire network, you can save as much as
|
||||
137kB disabling debug output.
|
||||
|
||||
config LIBOW_OWTRAFFIC
|
||||
bool "Enable bus traffic reports"
|
||||
default n
|
||||
help
|
||||
Enable owfs traffic monitor. It's here purely for debugging purposes.
|
||||
Turning this on will increase libow size by about 3kB.
|
||||
endmenu
|
|
@ -20,6 +20,14 @@ PKG_LICENSE:=GPL-2.0
|
|||
PKG_FIXUP:=autoreconf
|
||||
PKG_INSTALL:=1
|
||||
|
||||
PKG_CONFIG_DEPENDS:= \
|
||||
CONFIG_LIBOW_MASTER_USB \
|
||||
CONFIG_LIBOW_MASTER_I2C \
|
||||
CONFIG_LIBOW_MASTER_W1 \
|
||||
CONFIG_LIBOW_ZEROCONF \
|
||||
CONFIG_LIBOW_DEBUG \
|
||||
CONFIG_LIBOW_OWTRAFFIC
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
#
|
||||
|
@ -74,10 +82,17 @@ endef
|
|||
|
||||
define Package/libow
|
||||
$(call Package/owfs/Library)
|
||||
DEPENDS:=+libusb-compat +libpthread
|
||||
DEPENDS:= \
|
||||
+libpthread \
|
||||
+LIBOW_MASTER_USB:libusb-compat \
|
||||
+LIBOW_MASTER_W1:kmod-w1
|
||||
TITLE:=OWFS - common shared library
|
||||
endef
|
||||
|
||||
define Package/libow/config
|
||||
source "$(SOURCE)/Config.in"
|
||||
endef
|
||||
|
||||
define Package/libow/description
|
||||
$(call Package/$(PKG_NAME)/Default/description)
|
||||
|
||||
|
@ -170,13 +185,18 @@ CONFIGURE_ARGS += \
|
|||
--with-fuseinclude="$(STAGING_DIR)/usr/include" \
|
||||
--with-fuselib="$(STAGING_DIR)/usr/lib" \
|
||||
--enable-shared \
|
||||
--enable-zero \
|
||||
--disable-parport \
|
||||
--disable-ownet \
|
||||
--disable-owpython \
|
||||
--disable-owphp \
|
||||
--disable-owtcl \
|
||||
--disable-swig \
|
||||
$(if $(CONFIG_LIBOW_MASTER_USB),--enable-usb,--disable-usb) \
|
||||
$(if $(CONFIG_LIBOW_MASTER_W1),--enable-w1,--disable-w1) \
|
||||
$(if $(CONFIG_LIBOW_MASTER_I2C),--enable-i2c,--disable-i2c) \
|
||||
$(if $(CONFIG_LIBOW_ZEROCONF),--enable-zero,--disable-zero) \
|
||||
$(if $(CONFIG_LIBOW_DEBUG),--enable-debug,--disable-debug) \
|
||||
$(if $(CONFIG_LIBOW_OWTRAFFIC),--enable-owtraffic,--disable-owtraffic)
|
||||
|
||||
CONFIGURE_VARS += \
|
||||
LDFLAGS="$(TARGET_LDFLAGS) -Wl,-rpath-link=$(STAGING_DIR)/usr/lib -Wl,-rpath-link=$(TOOLCHAIN_DIR)/usr/lib" \
|
||||
|
@ -198,6 +218,15 @@ endef
|
|||
define Package/owfs/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/owfs $(1)/usr/bin/
|
||||
$(INSTALL_DIR) $(1)/etc/config
|
||||
$(INSTALL_DATA) ./files/owfs.conf $(1)/etc/config/owfs
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/owfs.init $(1)/etc/init.d/owfs
|
||||
mkdir -p $(1)/mnt/owfs
|
||||
endef
|
||||
|
||||
define Package/owfs/conffiles
|
||||
/etc/config/owfs
|
||||
endef
|
||||
|
||||
define Package/owshell/install
|
||||
|
@ -213,18 +242,41 @@ endef
|
|||
define Package/owserver/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/owserver $(1)/usr/bin/
|
||||
$(INSTALL_DIR) $(1)/etc/config
|
||||
$(INSTALL_DATA) ./files/owserver.conf $(1)/etc/config/owserver
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/owserver.init $(1)/etc/init.d/owserver
|
||||
endef
|
||||
|
||||
define Package/owserver/conffiles
|
||||
/etc/config/owserver
|
||||
endef
|
||||
|
||||
define Package/owhttpd/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/owhttpd $(1)/usr/bin/
|
||||
$(INSTALL_DIR) $(1)/etc/config
|
||||
$(INSTALL_DATA) ./files/owhttpd.conf $(1)/etc/config/owhttpd
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/owhttpd.init $(1)/etc/init.d/owhttpd
|
||||
endef
|
||||
|
||||
define Package/owhttpd/conffiles
|
||||
/etc/config/owhttpd
|
||||
endef
|
||||
|
||||
define Package/owftpd/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/owftpd $(1)/usr/bin/
|
||||
$(INSTALL_DIR) $(1)/etc/config
|
||||
$(INSTALL_DATA) ./files/owftpd.conf $(1)/etc/config/owftpd
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/owftpd.init $(1)/etc/init.d/owftpd
|
||||
endef
|
||||
|
||||
define Package/owftpd/conffiles
|
||||
/etc/config/owftpd
|
||||
endef
|
||||
|
||||
define Package/libow/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
config owfs 'owfs'
|
||||
option enabled 0
|
||||
option user root
|
||||
option readonly 0
|
||||
option mountpoint '/mnt/owfs'
|
||||
option fuse_allow_other 0
|
||||
option fuse_open_opt ''
|
||||
option error_level 0
|
||||
list devices '-s'
|
||||
list devices 'localhost:4304'
|
|
@ -0,0 +1,82 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2009-2015 OpenWrt.org
|
||||
|
||||
START=95
|
||||
USE_PROCD=1
|
||||
|
||||
PROG=/usr/bin/owfs
|
||||
|
||||
append_arg() {
|
||||
local cfg="$1"
|
||||
local var="$2"
|
||||
local opt="$3"
|
||||
local def="$4"
|
||||
local val
|
||||
|
||||
config_get val "$cfg" "$var"
|
||||
[ -n "$val" -o -n "$def" ] && procd_append_param command $opt "${val:-$def}"
|
||||
}
|
||||
|
||||
append_bool() {
|
||||
local cfg="$1"
|
||||
local var="$2"
|
||||
local opt="$3"
|
||||
local def="$4"
|
||||
local val
|
||||
|
||||
config_get_bool val "$cfg" "$var" "$def"
|
||||
[ "$val" = 1 ] && procd_append_param command "$opt"
|
||||
}
|
||||
|
||||
append_plain() {
|
||||
procd_append_param command "$1"
|
||||
}
|
||||
|
||||
append_param() {
|
||||
local cfg="$1"
|
||||
local var="$2"
|
||||
local opt="$3"
|
||||
local def="$4"
|
||||
local val
|
||||
|
||||
config_get val "$cfg" "$var"
|
||||
[ -n "$val" -o -n "$def" ] && procd_append_param "$opt" "${val:-$def}"
|
||||
}
|
||||
|
||||
start_instance() {
|
||||
local cfg="$1"
|
||||
local enabled
|
||||
|
||||
config_get_bool enabled "$cfg" 'enabled' '0'
|
||||
[ "$enabled" = 0 ] && return 1
|
||||
|
||||
procd_open_instance
|
||||
|
||||
procd_set_param command "$PROG" --foreground --error_print=1
|
||||
|
||||
# common parameters
|
||||
append_bool "$cfg" readonly "--readonly"
|
||||
append_arg "$cfg" error_level "--error_level"
|
||||
config_list_foreach "$cfg" options append_plain
|
||||
config_list_foreach "$cfg" devices append_plain
|
||||
append_param "$cfg" user user
|
||||
|
||||
# owfs-specific
|
||||
append_arg "$cfg" mountpoint "--mountpoint" /mnt/owfs
|
||||
append_bool "$cfg" fuse_allow_other "--allow_other"
|
||||
append_arg "$cfg" fuse_open_opt "--fuse_open_opt"
|
||||
|
||||
# don't respawn fuse
|
||||
|
||||
procd_close_instance
|
||||
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger owfs
|
||||
}
|
||||
|
||||
start_service() {
|
||||
config_load owfs
|
||||
config_foreach start_instance owfs
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
config owftpd 'owftpd'
|
||||
option enabled 0
|
||||
option user root
|
||||
option readonly 0
|
||||
option port 21
|
||||
option error_level 0
|
||||
list devices '-s'
|
||||
list devices 'localhost:4304'
|
|
@ -0,0 +1,81 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2009-2015 OpenWrt.org
|
||||
|
||||
START=95
|
||||
USE_PROCD=1
|
||||
|
||||
PROG=/usr/bin/owftpd
|
||||
|
||||
append_arg() {
|
||||
local cfg="$1"
|
||||
local var="$2"
|
||||
local opt="$3"
|
||||
local def="$4"
|
||||
local val
|
||||
|
||||
config_get val "$cfg" "$var"
|
||||
[ -n "$val" -o -n "$def" ] && procd_append_param command $opt "${val:-$def}"
|
||||
}
|
||||
|
||||
append_bool() {
|
||||
local cfg="$1"
|
||||
local var="$2"
|
||||
local opt="$3"
|
||||
local def="$4"
|
||||
local val
|
||||
|
||||
config_get_bool val "$cfg" "$var" "$def"
|
||||
[ "$val" = 1 ] && procd_append_param command "$opt"
|
||||
}
|
||||
|
||||
append_plain() {
|
||||
procd_append_param command "$1"
|
||||
}
|
||||
|
||||
append_param() {
|
||||
local cfg="$1"
|
||||
local var="$2"
|
||||
local opt="$3"
|
||||
local def="$4"
|
||||
local val
|
||||
|
||||
config_get val "$cfg" "$var"
|
||||
[ -n "$val" -o -n "$def" ] && procd_append_param "$opt" "${val:-$def}"
|
||||
}
|
||||
|
||||
start_instance() {
|
||||
local cfg="$1"
|
||||
local enabled
|
||||
|
||||
config_get_bool enabled "$cfg" 'enabled' '0'
|
||||
[ "$enabled" = 0 ] && return 1
|
||||
|
||||
procd_open_instance
|
||||
|
||||
procd_set_param command "$PROG" --foreground --error_print=1
|
||||
|
||||
# common parameters
|
||||
append_bool "$cfg" readonly "--readonly"
|
||||
append_arg "$cfg" error_level "--error_level"
|
||||
config_list_foreach "$cfg" options append_plain
|
||||
config_list_foreach "$cfg" devices append_plain
|
||||
append_param "$cfg" user user
|
||||
|
||||
# owftpd-specific
|
||||
append_arg "$cfg" port "--port"
|
||||
append_arg "$cfg" max_connections "--max_connections"
|
||||
|
||||
procd_set_param respawn
|
||||
|
||||
procd_close_instance
|
||||
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger owftpd
|
||||
}
|
||||
|
||||
start_service() {
|
||||
config_load owftpd
|
||||
config_foreach start_instance owftpd
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
config owhttpd 'owhttpd'
|
||||
option enabled 0
|
||||
option user root
|
||||
option readonly 0
|
||||
option port 3001
|
||||
option error_level 0
|
||||
list devices '-s'
|
||||
list devices 'localhost:4304'
|
|
@ -0,0 +1,81 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2009-2015 OpenWrt.org
|
||||
|
||||
START=95
|
||||
USE_PROCD=1
|
||||
|
||||
PROG=/usr/bin/owhttpd
|
||||
|
||||
append_arg() {
|
||||
local cfg="$1"
|
||||
local var="$2"
|
||||
local opt="$3"
|
||||
local def="$4"
|
||||
local val
|
||||
|
||||
config_get val "$cfg" "$var"
|
||||
[ -n "$val" -o -n "$def" ] && procd_append_param command $opt "${val:-$def}"
|
||||
}
|
||||
|
||||
append_bool() {
|
||||
local cfg="$1"
|
||||
local var="$2"
|
||||
local opt="$3"
|
||||
local def="$4"
|
||||
local val
|
||||
|
||||
config_get_bool val "$cfg" "$var" "$def"
|
||||
[ "$val" = 1 ] && procd_append_param command "$opt"
|
||||
}
|
||||
|
||||
append_plain() {
|
||||
procd_append_param command "$1"
|
||||
}
|
||||
|
||||
append_param() {
|
||||
local cfg="$1"
|
||||
local var="$2"
|
||||
local opt="$3"
|
||||
local def="$4"
|
||||
local val
|
||||
|
||||
config_get val "$cfg" "$var"
|
||||
[ -n "$val" -o -n "$def" ] && procd_append_param "$opt" "${val:-$def}"
|
||||
}
|
||||
|
||||
start_instance() {
|
||||
local cfg="$1"
|
||||
local enabled
|
||||
|
||||
config_get_bool enabled "$cfg" 'enabled' '0'
|
||||
[ "$enabled" = 0 ] && return 1
|
||||
|
||||
procd_open_instance
|
||||
|
||||
procd_set_param command "$PROG" --foreground --error_print=1
|
||||
|
||||
# common parameters
|
||||
append_bool "$cfg" readonly "--readonly"
|
||||
append_arg "$cfg" error_level "--error_level"
|
||||
config_list_foreach "$cfg" options append_plain
|
||||
config_list_foreach "$cfg" devices append_plain
|
||||
append_param "$cfg" user user
|
||||
|
||||
# owhttpd-specific
|
||||
append_arg "$cfg" port "--port"
|
||||
append_arg "$cfg" max_connections "--max_connections"
|
||||
|
||||
procd_set_param respawn
|
||||
|
||||
procd_close_instance
|
||||
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger owhttpd
|
||||
}
|
||||
|
||||
start_service() {
|
||||
config_load owhttpd
|
||||
config_foreach start_instance owhttpd
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
config owserver 'owserver'
|
||||
option enabled 0
|
||||
option user root
|
||||
option readonly 0
|
||||
option port 4304
|
||||
option error_level 0
|
||||
list devices '-d'
|
||||
list devices '/dev/ttyUSB0'
|
|
@ -0,0 +1,81 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2009-2015 OpenWrt.org
|
||||
|
||||
START=90
|
||||
USE_PROCD=1
|
||||
|
||||
PROG=/usr/bin/owserver
|
||||
|
||||
append_arg() {
|
||||
local cfg="$1"
|
||||
local var="$2"
|
||||
local opt="$3"
|
||||
local def="$4"
|
||||
local val
|
||||
|
||||
config_get val "$cfg" "$var"
|
||||
[ -n "$val" -o -n "$def" ] && procd_append_param command $opt "${val:-$def}"
|
||||
}
|
||||
|
||||
append_bool() {
|
||||
local cfg="$1"
|
||||
local var="$2"
|
||||
local opt="$3"
|
||||
local def="$4"
|
||||
local val
|
||||
|
||||
config_get_bool val "$cfg" "$var" "$def"
|
||||
[ "$val" = 1 ] && procd_append_param command "$opt"
|
||||
}
|
||||
|
||||
append_plain() {
|
||||
procd_append_param command "$1"
|
||||
}
|
||||
|
||||
append_param() {
|
||||
local cfg="$1"
|
||||
local var="$2"
|
||||
local opt="$3"
|
||||
local def="$4"
|
||||
local val
|
||||
|
||||
config_get val "$cfg" "$var"
|
||||
[ -n "$val" -o -n "$def" ] && procd_append_param "$opt" "${val:-$def}"
|
||||
}
|
||||
|
||||
start_instance() {
|
||||
local cfg="$1"
|
||||
local enabled
|
||||
|
||||
config_get_bool enabled "$cfg" 'enabled' '0'
|
||||
[ "$enabled" = 0 ] && return 1
|
||||
|
||||
procd_open_instance
|
||||
|
||||
procd_set_param command "$PROG" --foreground --error_print=1
|
||||
|
||||
# common parameters
|
||||
append_bool "$cfg" readonly "--readonly"
|
||||
append_arg "$cfg" error_level "--error_level"
|
||||
config_list_foreach "$cfg" options append_plain
|
||||
config_list_foreach "$cfg" devices append_plain
|
||||
append_param "$cfg" user user
|
||||
|
||||
# owserver-specific
|
||||
append_arg "$cfg" port "--port"
|
||||
append_arg "$cfg" max_connections "--max_connections"
|
||||
|
||||
procd_set_param respawn
|
||||
|
||||
procd_close_instance
|
||||
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger owserver
|
||||
}
|
||||
|
||||
start_service() {
|
||||
config_load owserver
|
||||
config_foreach start_instance owserver
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
AaAA
|
||||
--- a/module/owlib/src/c/ow_w1_parse.c
|
||||
+++ b/module/owlib/src/c/ow_w1_parse.c
|
||||
@@ -237,7 +237,7 @@ enum Netlink_Read_Status W1_Process_Resp
|
||||
owfree(nlp.nlm) ;
|
||||
return nrs_nodev ;
|
||||
}
|
||||
- if ( nrs_callback == NULL ) { // status message
|
||||
+ if ( nrs_callback == NULL ) { // bus reset
|
||||
owfree(nlp.nlm) ;
|
||||
return nrs_complete ;
|
||||
}
|
||||
@@ -246,7 +246,7 @@ enum Netlink_Read_Status W1_Process_Resp
|
||||
nrs_callback( &nlp, v, pn ) ;
|
||||
LEVEL_DEBUG("Called nrs_callback");
|
||||
owfree(nlp.nlm) ;
|
||||
- if ( nlp.cn->ack != 0 ) {
|
||||
+ if ( nlp.cn->seq != nlp.cn->ack ) {
|
||||
if ( nlp.w1m->type == W1_LIST_MASTERS ) {
|
||||
continue ; // look for more data
|
||||
}
|
||||
@@ -254,7 +254,7 @@ enum Netlink_Read_Status W1_Process_Resp
|
||||
continue ; // look for more data
|
||||
}
|
||||
}
|
||||
- nrs_callback = NULL ; // now look for status message
|
||||
+ return nrs_complete ; // status message
|
||||
}
|
||||
return nrs_timeout ;
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
--- a/module/owlib/src/c/ow_reset.c
|
||||
+++ b/module/owlib/src/c/ow_reset.c
|
||||
@@ -21,6 +21,10 @@ RESET_TYPE BUS_reset(const struct parsed
|
||||
struct connection_in * in = pn->selected_connection ;
|
||||
STAT_ADD1_BUS(e_bus_resets, in);
|
||||
|
||||
+ if ( in->iroutines.reset == NO_RESET_ROUTINE ) {
|
||||
+ return BUS_RESET_OK;
|
||||
+ }
|
||||
+
|
||||
switch ( (in->iroutines.reset) (pn) ) {
|
||||
case BUS_RESET_OK:
|
||||
in->reconnect_state = reconnect_ok; // Flag as good!
|
Loading…
Reference in New Issue