GithubHelp home page GithubHelp logo

ethersex / ethersex Goto Github PK

View Code? Open in Web Editor NEW
162.0 33.0 151.0 29.86 MB

etherrape port towards IPv6

Home Page: http://www.ethersex.de

License: GNU General Public License v3.0

Makefile 0.19% C 97.00% Perl 0.15% Shell 0.22% Python 0.04% HTML 0.05% PHP 0.08% Ruby 0.01% C++ 0.66% Pascal 0.18% JavaScript 0.01% Objective-C 0.02% Assembly 0.33% Awk 0.01% CSS 0.02% Java 0.14% M4 0.88%

ethersex's Introduction

About Ethersex

Ethersex, originally developed to provide an alternative firmware for the etherrape hardware, evolved into a full-featured still light-weight firmware for the Atmel megaAVR processors.
For more information and a comprehensive documentation consult http://www.ethersex.de!

How to configure the firmware

Make sure that you meet the requirements.
Use make menuconfig to configure and make to compile the firmware. The final hex file is named ethersex.hex.

See the Quick Start Guide in the wiki for more information

How to add a new hardware pinning

Use the script at scripts/add-hardware to add a new pinning.

Used 3rd party software

This program contains software by other authors:

License

All ethersex related code is licensed under GPLv3, unless otherwise noted. See COPYING in the main directory, but in doubt check the file header. Usually every file contains a header, stating all contributing authors and the specific license used.

Various make targets

  • make show-config -- Shows the activated modules

ethersex's People

Contributors

andann avatar benson-zerties avatar ch1r0n avatar eku avatar fd0 avatar fordprfkt avatar g-v-egidy avatar gvegidy avatar habo avatar hundertvolt avatar jochen avatar joerghermann avatar justinotherguy avatar kiwi77 avatar maniac103 avatar marschap avatar mguentner avatar michaelb42 avatar owagner avatar rdnzl avatar sauttefk avatar sittner avatar stesie avatar stettberger avatar stv0g avatar took avatar tu500 avatar vben avatar warhog avatar wiiilmaa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ethersex's Issues

replace sprintf(_P) with snprintf(_P)

sprintf(_P) are potentially dangerous because of buffer overflows. Replace all of them with their snprintf counterpart.Since snprintf is already used this will even reduce code size, because less library functions are used.

Also replace strcpy with strncpy.

Makefile: parallel build breaks embedding files

If I compile ethersex (for my AVR NET IO, without add-on board) using "make -j2", the build silently skips embedding the files. This is reproducible here, but it may depend on the choices of the scheduler. I used "touch autoconf.h && make -j2" to re-build with the same configuration again and again.

The tail of the output from a broken build clearly shows that only "gr.gif" is embedded:

The pagesize of current architecture is 128.
Embedding embed/gr.gif ...
embed/gr.gif.gz
vfs-concat: Lengths: image=21508, file=397
Final size of ethersex.bin is 22039.
avr-objcopy -O ihex -I binary ethersex.bin ethersex.hex
=======The ethersex project========
Compiled for: atmega32 at 16000000Hz
Imagesize: 22039/32768 bytes (67.26%)
  [====================----------]

Program (.text + .data) : 21508 bytes
Data (.data + .bss)     :  1203 bytes

===================================

However, this is built using the default configuration for my board, it should include some more files for the webserver - which it does correctly if I run plain "make".

I am using Debian testing amd64.

Status LEDs in EMS protocol

Hello,

in the ems.c file there is the reference to

ifdef STATUSLED_EMS_TX_SUPPORT

however in the heartbeat.h there is:

ifdef STATUSLED_EMS_TX_ACT_SUPPORT

Is this a typo or two different definitions?
By the way: where are these defined?

Thank you,
Maciej

Mantis 0000005: make the bridge a visible router

This is, make the bridging code standards compliant, i.e. let it especially care for the TTL field. We usually just need to decrease it (and adjust the chksum for IPv4), in case it gets zero however, we need to send a ICMP message back, that the packets has been destroyed.

Stesi has implemented the routing functionality meanwhile, but ICMP notifications for dropped packets are missing as yet.

clean separation of RF protocols and hardware control

The hardware module fs20 and rfm12 do not only controll the hardware but also implement the application protocol which leads to

  • complex modules
  • code duplication
  • conflicts

The existing modules should be separated into protocoll and hardware parts

  • /protocols/fs20
  • /protocols/ask
  • /hardware/radio/generic
  • /hardware/radio/rfm12

RS485 USART Makros break build

When activating either debug or ecmd via usart the build breaks with the error:

avr-gcc -Wall -W -Wno-unused-parameter -Wshadow -Wpointer-arith -Wno-cast-qual -Wcast-align -Wwrite-strings -Wconversion -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Winline -Wbad-function-cast -Wsign-compare -Wnested-externs -g -Os -std=gnu99 -fdata-sections -ffunction-sections -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -mcall-prologues -fshort-enums -fno-strict-aliasing -Iprotocols/usb/usbdrv -Iprotocols/usb -DAVR_BUILD -DF_CPU=16000000UL -mmcu=atmega32 -I. -c -o core/debug.o core/debug.c
In file included from core/debug.c:61:0:
./pinning.c:9:16: error: operator '==' has no left operand
#if (USE_USART == 0 && defined(HAVE_RS485TE_USART0))
^
./pinning.c:14:18: error: operator '==' has no left operand
#elif (USE_USART == 1 && defined(HAVE_RS485TE_USART1))
^

This is because core/debug.c first includes config.h and later defines USE_USART and includes pinning.c again. The same is true for protocols/ecmd/via_usart/ecmd_usart.c.

The above reported error comes from the first include of pinning.c via config.h at the beginning of the mentioned files.

config.h needs to be included first to decide how the USE_USART to be set.

Looks like a chicken-egg problem.

Artnet Input Universum

Hallo

Müsste nicht die Zeile 110 im der artnet.c Datei an Zeile 89 stehen, so das das Input Universum beim initialisieren auf den Wert in der Config gestellt wird und nicht auf den der undefinierten Variable artnet_inputUniverse.

Gruß
Jonas

timezone offset in output ecmd "date"

The ecmd command "date" outputs the offset of local time to UTC, It does not include DST offset if active.

date
Fri 19.04.2013 22:33:15 +1:00

Should be +2:00, because of CEST.

Profile rs485-modbus-dmx-onewire-compile-test does not compile

Autotest fails with

Trying to compile Ethersex firmware using profile 'contrib/autotest/profiles/rs485-modbus-dmx-onewire-compile-test' ...

In file included from protocols/modbus/modbus.c:39:0:
protocols/modbus/modbus.c: In function 'usart_init':
./core/usart.h:104:11: error: 'UBRRMODBUS_USE_USARTH' undeclared (first use in this function)
usart(UBRR,H) = UBRRH_VALUE; \

Mantis 0000053: separated user permissions/rights

Anyhow with http authentication all http sites are authenticated, more separated modes are usefull

Features:
1: enable auth separated for each inline file
1a: auth for vfs (sd, df, eeprom)
2: different user/right (admin vs. user)
3: for jabber, telnet, http, serial console, i2c, ...

Multiple compiler warnings since pull https://github.com/ethersex/ethersex/pull/180

hardware/onewire/ds2450.c: In function 'ow_ds2450_get':
hardware/onewire/ds2450.c:539:3: warning: implicit declaration of function 'alloca' [-Wimplicit-function-declaration]
hardware/onewire/ds2450.c:539:7: warning: incompatible implicit declaration of built-in function 'alloca' [enabled by default]
hardware/onewire/ds2450.c: In function 'ow_ds2450_mempage_read':
hardware/onewire/ds2450.c:602:3: warning: passing argument 1 of 'ow_match_skip_rom' discards 'const' qualifier from pointer target type [enabled by default]
hardware/onewire/ds2450.c:48:1: note: expected 'struct ow_rom_code_t *' but argument is of type 'const struct ow_rom_code_t *'

multiple issues with dcf77 and CLOCK_CPU_SUPPORT

There are multiple issues when dcf77 is used together with CLOCK_CPU_SUPPORT.

AVR-NET-IO, 20MHz Osc, DCF1 Module. Some debugging added to the original code.

a. Pulse length calculation for the first pulse after successfull time sync is wrong.

D: dcf77: Jahr: 2013 D: dcf77: pre-sync act - last 60 D: dcf77: dcf.ticks: 2, timertemp: 6170, divtime: 37085, dcf.timerlast: 8147 D: dcf77: TC1_COUNTER_COMPARE: 52245 D: dcf77: cur TC1_COUNTER_COMPARE: 52245, timertemp: 6170 D: dcf77: reset TC1_COUNTER_COMPARE: 46325, timertemp: 46005 D: dcf77: set unix-time 1365172440 D: dcf77: start sync D: dcf77: dcf.ticks: 0, timertemp: 206, divtime: 4294921497, dcf.timerlast: 46005

uint32_t divtime is calculated by subtracting dcf.timerlast from timertemp, which always causes an underflow.

FIX: timertemp should be reset to value 0 instead of the "virtual" zero value 65536 - CLOCK_SECONDS.

b. endless series of "start sync".

D: dcf77: dcf.ticks: 1, timertemp: 19139, divtime: 37109, dcf.timerlast: 1561 D: dcf77: TC1_COUNTER_COMPARE: 65505 D: dcf77: start sync D: dcf77: dcf.ticks: 1, timertemp: 3534, divtime: 3926, dcf.timerlast: 19139 D: dcf77: TC1_COUNTER_COMPARE: 49905 D: dcf77: pulse: 1 201ms (divtime: 3926) 1 D: dcf77: dcf.ticks: 1, timertemp: 19090, divtime: 35087, dcf.timerlast: 3534 D: dcf77: TC1_COUNTER_COMPARE: 65115 D: dcf77: start sync D: dcf77: dcf.ticks: 1, timertemp: 1432, divtime: 1873, dcf.timerlast: 19090 D: dcf77: TC1_COUNTER_COMPARE: 47565 D: dcf77: pulse: 1 95ms (divtime: 1873) 0 D: dcf77: dcf.ticks: 1, timertemp: 19008, divtime: 37107, dcf.timerlast: 1432 D: dcf77: TC1_COUNTER_COMPARE: 65115 D: dcf77: start sync

b. occurs whenever an TC1-overflow 'tick' occurs between the rising and falling edge of a pulse. The code handling the falling edge does not reset the tick-counter and thus the timestamp of the next rising edge is calculated wrong, the bitcounter is reset to 0. WORKSFORME-Fix is to add an additional dcf.ticks=0 to the falling edge handling.

Branched and fixed in my fork, branch ethersex_iss211_dcf77_and_CPU_CLOCK_SUPPORT.
NEEDS TESTING!

hackery_atmega*.m4 use wrong register names

hackery_atmega162.m4 uses wrong register name TCCR1 instead of TCCR1A and TCCR1B.
Additionally the ATmega162 datasheet and include use register name MCUCSR instead of MCUSR, a compat define is required.

If MCU ATmega162 is choosen e6 does not even compile (using avr-gcc 4.7.2 and -libc 1.8.0). Has this ever been working?

Same error with hackery_atmega64.m4 and probably others.

Mantis 0000059: Game and Menu Input Support Framework

similar input devices for games or menues

  • PS/2 Keyboard
  • IR Remote
  • Radio Control Remote (RFM12 ASK, etc)
  • digital Joystick (Atari style, 9 pins)
  • analog Joystick (PC-MIDI Connector, 15 Pins)
  • direct Input Pins/Buttons (several Pins mapped to a hardware device)
  • Serial Console direct Input
  • ECMD Input
  • USB-HOST-> HID (e.g. USB-Keyboard, -Mouse or -Gamepad)

goal is to have a input framework for games or menus which is independent of the hardware device.

Needed Functions

minimal Functions:
directions: UP, DOWN, LEFT, RIGHT, NONE
actions: BUTTON-1, BUTTON-2

n2h:

  • more directions: UP-LEFT, UP-RIGHT,...
  • more action buttons: BUTTON-3, ...

DHCP

Hello,
(sorry for my English:)
It wouldn't be very useful, but it would be a 'nice-to-have' for some Projects to got DHCP, so you mustn't define the IP before Burning to chip.

Low level 1wire interface for ECMD

Nachdem ich etwas im Ethersex Code herumgestöbert habe, leider folgende Nachricht: Vorerst wird es keine Unterstützung meiner 1-Wire Module für das ECMD-Device geben.

Hintergrund: Die Ethersex-Firmware kennt zwar alle nötigen Low-Level-Funktionen für den 1-Wire-Bus - stellt diese aber nicht nach außen zur Verfügung (im Gegensatz zum CUNO). Sondern nur High-Level-Abfragen, wie eben "get temperature" o.ä.

Notwendig für eine Unterstützung wäre eine relativ einfache Modifikation der Datei /hardware/onewire/ecmd.c im Ethersex-Projekt - eben die Verfügbarkeit solcher intern sehr wohl vorhandenen Funktionen wie "schreibe 1 Byte auf den 1-Wire-Bus" nach außen und damit via telnet.

Dafür aber fehlt mir bei allem guten Willen die Zeit. Wer also mit einem AVR-NET-IO o.ä. ausgestattet ist und gerne mehr 1-Wire-Devices haben möchte, muss sich bitte entweder selbst an die Arbeit machen oder dieses Request in die Ethersex-Community einspeisen. Dabei kann sehr wohl der CUNO als Vorbild dienen: Dort sind eben genau diese benötigten Funktionen von "außen" aufrufbar.

Mantis 0000054: easier Support for new/own hardware

  1. start "make menuconfig" to for default settings at the next steps
  2. "add-hardware-broken MYNEWHARDWARE"
    2.1. change pinning/hardware/MYNEWHARDWARE.m4 to your needs
  3. change "HARDWARE" value to new hardware in "scripts/profiles/MYNEWHARWARE"
  4. add new setting to scripts/Menuconfig so the new hardware can be found in make menuconfig -> defaults
  5. start "make menuconfig" and select new default-configuration

Well, this is fine but to much work for newer hardware or ethersex newbies who want to setup there own hardware.

Idea: There could be a new entry in "make menuconfig" which guides to all these steps.

Options BOOTLOADER_JUMP and BOOTLOADER_SUPPORT

The option BOOTLOADER_JUMP allows Ethersex to jump into any flashed bootloader without the need to set the BOOTRST fuse.

BOOTLOADER_SUPPORT is set when the Ethersex bootloader is build.

Both options are mutually exclusive. Menuconfig should consider this fact.

Jeelink v3 Intertechno

Hi,

Maybe some of you already have experience with the following problem:
I crafted my own ethersex firmware for the Jeelink. And now after half a day of testing I realized the following:
Switching my Intertechno wireless power switches only works when I first connect to the Jeelink on my serial console. The following commands are confirmed with an OK but nothing happens on the power switch. However, when I disconnect my console and reconnect, I can fire one other command!

Dont know if this is a bug or just me...

Daniel

Mantis 0000058: VFS Access (read/write) improvements

  • access to read and write a file line by line.
  • seek (line) in file
  • append new line to end of a file

Could usefull to store in VFS:

  • aliascmd
  • jabber buddy
  • crontab

ECMD Scripting

  • execute each line of VFS file
  • command: GOTO

logging:

  • syslog to file

Possible limits:

  • max chars in line: 80
  • only files with .txt extention
  • linebreak is \n

Create/Delete snapshot_compile_ok

Many How-Tos, including the old ethersex wiki, reference this tag as a version of ethersex that compiles and works in most cases.
The tag needs to be either updated or deleted since the last tag is two years old.

If someone currently checks out this tag he or she will get an way too old revision.

Assertion failure in obj_elf_init_stab_section at config/obj-elf.c line 1782

Configuration Profile:
Pollin AVR Net-IO (w/ addon board) + RFM12 ASK + One-Wire

Final size of ethersex.bin is 51374.
avr-objcopy -O ihex -I binary ethersex.bin ethersex.hex
=======The ethersex project========
Compiled for: atmega644 at 16000000Hz
Imagesize: 51374/65536 bytes (78.39%)
  [=======================-------]

Program (.text + .data) : 40818 bytes
Data (.data + .bss) :  2159 bytes

/tmp/cclC2wiQ.s: Assembler messages:
/tmp/cclC2wiQ.s:8: Internal error!
Assertion failure in obj_elf_init_stab_section at config/obj-elf.c line 1782.
Please report this bug.
===================================

config:

#
# Automatically generated by make menuconfig: don't edit
#

#
# General Setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_EXPERT=y
ARCH=ARCH_AVR
ARCH_AVR=y
# ARCH_HOST is not set
# atmega8 is not set
# atmega88 is not set
# atmega128 is not set
# atmega16 is not set
# atmega162 is not set
# atmega168 is not set
# atmega168p is not set
# atmega169 is not set
# atmega32 is not set
# atmega328p is not set
# atmega64 is not set
MCU=atmega644
atmega644=y
# atmega644p is not set
# atmega1284p is not set
FREQ=16000000
# alpengluehn is not set
# Arduino_Duemilanove is not set
# conrad_probot is not set
# ehaserl is not set
# etherrape is not set
# Fimser is not set
# fnordlicht_servo is not set
# generic_usb_teensy is not set
# hr20 is not set
# Jackalope is not set
# JeeLinkv2 is not set
# lome6 is not set
# MicroWebServer is not set
HARDWARE=netio_addon
netio_addon=y
# netio is not set
# other is not set
# pollin_evalboard_addon is not set
# pollin_evalboard is not set
# pollin_funkevalboard is not set
# radig_web is not set
# thermy is not set
# USBrfm12stick is not set
# volkszaehler_so_server is not set
# CPU_SLEEP is not set
# SRAM_SUPPORT is not set
# SRAM_MEMTEST_ON_BOOT is not set
# BOOTLOADER_SUPPORT is not set
BOOTLOADER_START_ADDRESS=0xe000
# BOOTLOADER_JUMP is not set
# CRC_PAD_SUPPORT is not set
# TEENSY_SUPPORT is not set
SPI_TIMEOUT=y
# USART_SPI_SUPPORT is not set
# SOFT_SPI_SUPPORT is not set
# USE_GIT_VERSION is not set
VERSION_STRING_CHOICE=USE_RELEASE_VERSION
USE_RELEASE_VERSION=y
# USE_BUILDDATE_VERSION is not set
VERSION_GIT="d7fbac6"
# DEBUG_DISCARD_SOME is not set
# DEBUG is not set
DEBUG_BAUDRATE=115200
# DEBUG_USE_SYSLOG is not set
# SOFT_UART_SUPPORT is not set
# DEBUG_HOOK is not set
# DEBUG_RESET_REASON is not set
STATUSLEDS=y
# STATUSLED_POWER_SUPPORT is not set
STATUSLED_BOOTED_SUPPORT=y
# STATUSLED_NETLINK_SUPPORT is not set
# STATUSLED_TX_SUPPORT is not set
# STATUSLED_RFM12_TX_SUPPORT is not set
# STATUSLED_ZBUS_TX_SUPPORT is not set
# STATUSLED_IRMP_TX_SUPPORT is not set
STATUSLED_RX_SUPPORT=y
# STATUSLED_RFM12_RX_SUPPORT is not set
# STATUSLED_ZBUS_RX_SUPPORT is not set
# STATUSLED_IRMP_RX_SUPPORT is not set
# STATUSLED_HB_ACT_SUPPORT is not set
# STATUSLED_HEARTBEAT_SUPPORT is not set
# STATUSLED_RFM12_TX_ACT_SUPPORT is not set
# STATUSLED_RFM12_RX_ACT_SUPPORT is not set
# STATUSLED_ZBUS_TX_ACT_SUPPORT is not set
# STATUSLED_ZBUS_RX_ACT_SUPPORT is not set
# STATUSLED_ECMD_ACT_SUPPORT is not set
# CRYPTO_SUPPORT is not set
# CAST5_SUPPORT is not set
# MD5_SUPPORT is not set
# SHA1_SUPPORT is not set
VFS_SUPPORT=y
# VFS_DF_SUPPORT is not set
VFS_INLINE_SUPPORT=y
CONFIG_INLINE_SUPPORT=y
# VFS_CONFIG_INLINE_SUPPORT is not set
# MOTD_INLINE_SUPPORT is not set
RFM12_INLINE_SUPPORT=y
I2C_INLINE_SUPPORT=y
VFS_IO_INLINE_SUPPORT=y
# KTY_INLINE_SUPPORT is not set
ADC_INLINE_SUPPORT=y
ONEWIRE_INLINE_SUPPORT=y
# CAMERA_INLINE_SUPPORT is not set
# NAMED_PIN_INLINE_SUPPORT is not set
# STELLA_INLINE_SUPPORT is not set
# MOTORCURTAIN_INLINE_SUPPORT is not set
# MSR1_INLINE_SUPPORT is not set
# TO1_INLINE_SUPPORT is not set
# MCUF_INLINE_SUPPORT is not set
# GAME_INPUT_INLINE_SUPPORT is not set
# UPNP_INLINE_SUPPORT is not set
# LCD_INLINE_SUPPORT is not set
# NMEA_INLINE_SUPPORT is not set
# PWM_SERVO_INLINE_SUPPORT is not set
# CW_INLINE_SUPPORT is not set
# DMX_STORAGE_INLINE_SUPPORT is not set
VFS_INLINE_INLINESVG_SUPPORT=y
# VFS_INLINE_HTML5_RANGE_FF_SUPPORT is not set
VFS_INLINE_HTML_CLEAN_SUPPORT=y
# VFS_INLINE_OBSOLETE_BROWSER_SUPPORT is not set
# DEBUG_INLINE_DUMMY is not set
# DEBUG_INLINE_GZ is not set
# DEBUG_INLINE_DISABLE_GZ is not set
VFS_INLINE_INLINESVG_SUPPORT=y
# VFS_HOST_SUPPORT is not set
VFS_SD_SUPPORT=y
SD_READER_SUPPORT=y
SD_READ_TIMEOUT=y
# SD_PING_READ is not set
# VFS_EEPROM_SUPPORT is not set
# VFS_EEPROM_RAW_SUPPORT is not set
# VFS_DC3840_SUPPORT is not set
# DATAFLASH_SUPPORT is not set
# DEBUG_FS is not set
# DEBUG_FS_INODETABLE is not set
# DEBUG_FS_MARK is not set
# VFS_EEPROM_DEBUG_SUPPORT is not set
# DEBUG_SD_READER is not set
# PAM_SUPPORT is not set
# CONTROL6_SUPPORT is not set

#
# Network
#
CONF_HOSTNAME="Test"
NET_MAX_FRAME_LENGTH=500
ENC28J60_SUPPORT=y
CONF_ENC_MAC="ac:de:48:51:73:89"
# IPV6_STATIC_SUPPORT is not set
CONF_ENC_IP="192.168.0.90"
CONF_ENC_IP4_NETMASK="255.255.255.0"
# IEEE8021Q_SUPPORT is not set
# DEBUG_ENC28J60 is not set
# DEBUG_INTERRUPT is not set
# DEBUG_REV4_WORKAROUND is not set
ETHERNET_SUPPORT=y
# TAP_SUPPORT is not set
CONF_TAP_MAC="ac:de:48:fd:0f:d0"
# IPV6_STATIC_SUPPORT is not set
CONF_TAP_IP="192.168.23.244"
CONF_TAP_IP4_NETMASK="255.255.255.0"
CONF_TAP_LOCALIP="192.168.23.1"
# IEEE8021Q_SUPPORT is not set
RFM12_IP_SUPPORT=y
RFM12_IP_RFM12_0=y
# RFM12_IP_RFM12_1 is not set
# RFM12_IP_RFM12_2 is not set
RFM12_IP_USE_RFM12=0
CONF_RFM12_FREQ=RFM12_FREQ_433920
RFM12_FREQ_433920=y
# RFM12_FREQ_869775 is not set
# RFM12_FREQ_869800 is not set
# RFM12_FREQ_869825 is not set
# RFM12_FREQ_869850 is not set
# RFM12_FREQ_869875 is not set
# RFM12_FREQ_869900 is not set
# RFM12_FREQ_869925 is not set
# CONF_RFM12_SLOW_SPI is not set
# CONF_RFM12B_SUPPORT is not set
CONF_RFM12_BAUD=19200
CONF_RFM12_IP="192.168.5.1"
CONF_RFM12_IP4_NETMASK="255.255.255.0"
# RFM12_SOURCE_ROUTE_ALL is not set
# RFM12_PCKT_FWD is not set
# RFM12_ARP_PROXY is not set
# RFM12_RAW_SUPPORT is not set
# USB_SUPPORT is not set
# USB_KEYBOARD_SUPPORT is not set
# USB_HID_KEYBOARD_SEQUENCE_SUPPORT is not set
# USB_HID_KEYBOARD_STATIC_SUPPORT is not set
# USB_HID_KEYBOARD_ECMD_SUPPORT is not set
# USB_MOUSE_SUPPORT is not set
# USB_MOUSE_SEQUENCE_SUPPORT is not set
# USB_NET_SUPPORT is not set
# DEBUG_USB_HID_KEYBOARD is not set
# DEBUG_USB_HID_MOUSE is not set
# ZBUS_RAW_SUPPORT is not set
ROUTER_SUPPORT=y
UIP_SUPPORT=y
NET_SUPPORT=y
# IPV6_SUPPORT is not set
IPV4_SUPPORT=y
# IP_FORWARDING_SUPPORT is not set
# UIP_TIMEOUT_SUPPORT is not set
CONF_ETHERRAPE_GATEWAY="192.168.0.1"
UIP_MULTI_STACK=y
# IPCHAIR_SUPPORT is not set
# IPCHAIR_MASQ is not set
TCP_SUPPORT=y
# UDP_SUPPORT is not set
# BROADCAST_SUPPORT is not set
ICMP_SUPPORT=y
# DNS_SUPPORT is not set
CONF_DNS_SERVER="192.168.0.2"
# BOOTP_SUPPORT is not set
# BOOTP_TO_EEPROM_SUPPORT is not set
# DHCP_SUPPORT is not set
# OPENVPN_SUPPORT is not set
CONF_OPENVPN_KEY=00000000000000000000000000000000
CONF_OPENVPN_HMAC_KEY=00000000000000000000000000000000
CONF_OPENVPN_IP="0.0.0.0"
CONF_OPENVPN_IP4_NETMASK="255.255.255.0"
# OPENVPN_STATIC_REMOTE is not set
CONF_OPENVPN_PORT=1194
# DEBUG_NET is not set
# DEBUG_NET_CONFIG is not set
# DEBUG_NET_IP6 is not set
# DEBUG_OPENVPN is not set
# DEBUG_ROUTER is not set
# DEBUG_UIP is not set
# DEBUG_NTP is not set
# DEBUG_UNKNOWN_PACKETS is not set

#
# I/O
#
# CONFIG_IO_NONE is not set
PORTIO_SCHEME=PORTIO_SIMPLE
PORTIO_SIMPLE=y
# PORTIO_FULL_FEATURED is not set
PORTIO_SIMPLE_SUPPORT=y
# NAMED_PIN_SUPPORT is not set
# TTY_SUPPORT is not set
TTY_COLS=16
TTY_LINES=4
# TTY_LL_HD44780 is not set
# TTY_LL_S1D15G10 is not set
# TTY_LL_S1D13305 is not set
# TTY_LL_VT100_TELNET is not set
# DEBUG_TTY_LAYER is not set
# HC595_SUPPORT is not set
HC595_REGISTERS=5
# HC165_SUPPORT is not set
# HC165_INVERSE_OUTPUT is not set
HC165_REGISTERS=1
ADC_SUPPORT=y
CONFIG_ADC_AREF=y
# CONFIG_ADC_AVCC is not set
# CONFIG_ADC_1_1 is not set
# CONFIG_ADC_2_56 is not set
ADC_REF=ADC_AREF
# HR20_TEMP_SUPPORT is not set
# ADC_VOLTAGE_SUPPORT is not set
NEED_TEMP2TEXT=y
# SMS_SUPPORT is not set
SMS_USART_0=y
SMS_USE_USART=0
# DEBUG_SMS is not set
# KTY_SUPPORT is not set
# ADS7822_SUPPORT is not set
# DAC_SUPPORT is not set
# TLC5620_SUPPORT is not set
# LTC1257_SUPPORT is not set
CONF_LTC1257_NUM_DEVICES=4
# DEBUG_LTC1257_CORE is not set
# DEBUG_LTC1257_ECMD is not set

#
# LCD Displays
#
# HD44780_SUPPORT is not set
# HD44780_BACKLIGHT_INV is not set
# HR20_LCD_SUPPORT_FULL is not set
# S1D15G10_SUPPORT is not set
# ST7626_SUPPORT is not set
# S1D13305_SUPPORT is not set
# DEBUG_S1D13305 is not set
# LCD_SUPPORT is not set
# DEBUG_HD44780 is not set
# DEBUG_LCD_MENU is not set
I2C_MASTER_SUPPORT=y
CONF_I2C_BAUD=400
# I2C_DETECT_SUPPORT is not set
# I2C_GENERIC_SUPPORT is not set
# I2C_24CXX_SUPPORT is not set
# I2C_LM75_SUPPORT is not set
# I2C_DS1631_SUPPORT is not set
# I2C_DS13X7_SUPPORT is not set
# I2C_PCF8583_SUPPORT is not set
# I2C_TSL2550_SUPPORT is not set
# I2C_BMP085_SUPPORT is not set
# I2C_PCA9531_SUPPORT is not set
# I2C_PCA9685_SUPPORT is not set
I2C_PCF8574X_SUPPORT=y
# I2C_PCA9555_SUPPORT is not set
# I2C_MAX7311_SUPPORT is not set
# I2C_UDP_SUPPORT is not set
# DEBUG_I2C is not set
# CAMERA_SUPPORT is not set
# DC3840_SUPPORT is not set
# FS20_SUPPORT is not set
# FS20_SEND_SUPPORT is not set
# FHT_SEND_SUPPORT is not set
# FS20_RECEIVE_SUPPORT is not set
# FS20_RECEIVE_SENDER is not set
CONF_FS20_SERVICE="merkur"
CONF_FS20_PORT=2701
# FS20_RECEIVE_WS300_SUPPORT is not set
# DEBUG_FS20_REC is not set
# DEBUG_ECMD_FS20 is not set
# DEBUG_FS20_REC_QUEUE is not set
# DEBUG_FS20_REC_VERBOSE is not set
# DEBUG_FS20_SENDER is not set
# DEBUG_FS20_WS300 is not set
# DEBUG_FS20_WS300_VERBOSE is not set
IR_SUPPORT=y
# RC5_SUPPORT is not set
# RC5_SUPPORT is not set
# RC5_UDP_SUPPORT is not set
CONF_RC5_SERVER="192.168.100.3"
# DEBUG_RC5 is not set
IRMP_SUPPORT=y
# IRMP_RX_SUPPORT is not set
# IRMP_TX_SUPPORT is not set
# IRMP_EXTERNAL_MODULATOR is not set
IRMP_ECMD=y
# IRMP_SUPPORT_SIRCS_PROTOCOL is not set
IRMP_SUPPORT_NEC_PROTOCOL=y
# IRMP_SUPPORT_NEC16_PROTOCOL is not set
# IRMP_SUPPORT_NEC42_PROTOCOL is not set
# IRMP_SUPPORT_JVC_PROTOCOL is not set
# IRMP_SUPPORT_SAMSUNG_PROTOCOL is not set
# IRMP_SUPPORT_MATSUSHITA_PROTOCOL is not set
# IRMP_SUPPORT_KASEIKYO_PROTOCOL is not set
# IRMP_SUPPORT_DENON_PROTOCOL is not set
# IRMP_SUPPORT_RECS80_PROTOCOL is not set
# IRMP_SUPPORT_RECS80EXT_PROTOCOL is not set
IRMP_SUPPORT_RC5_PROTOCOL=y
# IRMP_SUPPORT_RC6_PROTOCOL is not set
# IRMP_SUPPORT_RC6A_PROTOCOL is not set
# IRMP_SUPPORT_NUBERT_PROTOCOL is not set
# IRMP_SUPPORT_BANG_OLUFSEN_PROTOCOL is not set
IRMP_SUPPORT_GRUNDIG_PROTOCOL=y
# IRMP_SUPPORT_NOKIA_PROTOCOL is not set
# IRMP_SUPPORT_SIEMENS_PROTOCOL is not set
# IRMP_SUPPORT_FDC_PROTOCOL is not set
# IRMP_SUPPORT_RCCAR_PROTOCOL is not set
# IRMP_SUPPORT_NIKON_PROTOCOL is not set
# IRMP_SUPPORT_RUWIDO_PROTOCOL is not set
# IRMP_SUPPORT_IR60_PROTOCOL is not set
# IRMP_SUPPORT_KATHREIN_PROTOCOL is not set
# IRMP_SUPPORT_NETBOX_PROTOCOL is not set
# IRMP_SUPPORT_LEGO_PROTOCOL is not set
# IRMP_SUPPORT_THOMSON_PROTOCOL is not set
# DEBUG_IRMP is not set
IRSND_SUPPORT_NEC_PROTOCOL=y
IRSND_SUPPORT_RC5_PROTOCOL=y
IRSND_SUPPORT_GRUNDIG_PROTOCOL=y
# PSB2186_SUPPORT is not set
# PWM_SUPPORT is not set
# PWM_GENERAL_SUPPORT is not set
# PWM_GENERAL_INVERT_SUPPORT is not set
# PWM_GENERAL_FADING_SUPPORT is not set
# CH_A_PWM_GENERAL_SUPPORT is not set
# CH_B_PWM_GENERAL_SUPPORT is not set
# CH_C_PWM_GENERAL_SUPPORT is not set
# PWM_WAV_SUPPORT is not set
# VFS_PWM_WAV_SUPPORT is not set
# PWM_MELODY_SUPPORT is not set
# ENTCHEN_PWM_MELODY_SUPPORT is not set
# TETRIS_PWM_MELODY_SUPPORT is not set
# PWM_SERVO_SUPPORT is not set
PWM_SERVOS=1
# PWM_SERVO_INVERT is not set
# PWM_SERVO_DEFAULT_ENABLED is not set
# PWM_FREQ_SUPPORT is not set
# PWM_DTMF_SUPPORT is not set
# DEBUG_PWM is not set
# DEBUG_PWM_SERVO is not set
ONEWIRE_SUPPORT=y
# ONEWIRE_DETECT_SUPPORT is not set
# ONEWIRE_DS2502_SUPPORT is not set
# ONEWIRE_DS2450_SUPPORT is not set
# ONEWIRE_DETECT_ECMD_SUPPORT is not set
# ONEWIRE_POLLING_SUPPORT is not set
# ONEWIRE_NAMING_SUPPORT is not set
# ONEWIRE_SNMP_SUPPORT is not set
# DEBUG_ECMD_OW_ROM is not set
# DEBUG_ECMD_OW_LIST is not set
# DEBUG_OW_DS2450_CORE is not set
# DEBUG_OW_DS2450_ECMD is not set
# DEBUG_OW_POLLING is not set
# HR20_INPUT_SUPPORT is not set
# PS2_SUPPORT is not set
# PS2_GERMAN_LAYOUT is not set
# DEBUG_PS2 is not set
# BUTTONS_INPUT_SUPPORT is not set
CONF_NUM_BUTTONS=
# GAME_INPUT_SUPPORT is not set
# JOYSTICK_DIGITAL_SUPPORT is not set
# DEBUG_JOYSTICK_DIGITAL is not set
# DEBUG_GAME_INPUT is not set
RFM12_ASK_SUPPORT=y
RFM12_ASK_433_SUPPORT=y
RFM12_ASK_433_RFM12_0=y
# RFM12_ASK_433_RFM12_1 is not set
# RFM12_ASK_433_RFM12_2 is not set
RFM12_ASK_433_USE_RFM12=0
RFM12_ASK_2272_SUPPORT=y
RFM12_ASK_1527_SUPPORT=y
RFM12_ASK_TEVION_SUPPORT=y
RFM12_ASK_INTERTECHNO_SUPPORT=y
# RFM12_ASK_EXTERNAL_FILTER_SUPPORT is not set
# RFM12_ASK_SENSING_SUPPORT is not set
# RFM12_ASK_868_SUPPORT is not set
# RFM12_ASK_FS20_SUPPORT is not set
# RFM12_ASK_FHT_SUPPORT is not set
# DEBUG_ASK_SENSE is not set
# SHT_SUPPORT is not set
# ZACWIRE_SUPPORT is not set
# ZACWIRE_RAW_SUPPORT is not set
# ZACWIRE_CONVERT306_SUPPORT is not set
# ZACWIRE_CONVERT506_SUPPORT is not set
# ULTRASONIC_SUPPORT is not set
# DEBUG_ULTRASONIC is not set
# HBRIDGE_SUPPORT is not set
# DEBUG_HBRIDGE is not set
# MCUF_SUPPORT is not set
# MCUF_SERIAL_SUPPORT is not set
# MCUF_OUTPUT_SUPPORT is not set
# BLP_SUPPORT is not set
# LEDRG_SUPPORT is not set
# MCUF_SERIAL_WORKAROUND_FOR_BAD_MCUF_UDP_PACKETS is not set
# MCUF_SCROLLTEXT_SUPPORT is not set
CONF_MCUF_SCROLLTEXT_STARTUP="Hi I am your ethersex ;-) "
CONF_MCUF_SCROLLTEXT_STARTUP_COLOR=240
CONF_MCUF_SCROLLTEXT_STARTUP_BG_COLOR=1
CONF_MCUF_SCROLLTEXT_STARTUP_SPEED=2
# MCUF_CLOCK_SUPPORT is not set
# MCUF_CLOCK_AUTOSTART_SUPPORT is not set
# MCUF_MODUL_SUPPORT is not set
# MCUF_MODUL_CRON_SUPPORT is not set
# MCUF_MODUL_DISPLAY_MODE_CRON_SEQUENCE is not set
MCUF_MODUL_DISPLAY_MODE_CRON=MCUF_MODUL_DISPLAY_MODE_CRON_RANDOM
MCUF_MODUL_DISPLAY_MODE_CRON_RANDOM=y
# MCUF_MODUL_DISPLAY_MODE_SUPPORT is not set
# MCUF_MODUL_DISPLAY_MODE_SEQUENCE is not set
MCUF_MODUL_DISPLAY_MODE=MCUF_MODUL_DISPLAY_MODE_RANDOM
MCUF_MODUL_DISPLAY_MODE_RANDOM=y
# MCUF_MODUL_DISPLAY_MODE_MANUAL is not set
# MCUF_TEST_GAME_INPUT is not set
# MCUF_CHESS_SUPPORT is not set
# MCUF_BOX_SUPPORT is not set
# MCUF_CLEAN_SUPPORT is not set
# MCUF_SPIRAL_SUPPORT is not set
# MCUF_IMAGE_SUPPORT is not set
# MCUF_MODUL_BORG16_SUPPORT is not set
# MCUF_MODUL_BORG16_XONI_STUDY_SUPPORT is not set
# MCUF_MODUL_BORG16_SNAKE_SUPPORT is not set
# MCUF_MODUL_BORG16_SNAKE_INTERACTIVE_SUPPORT is not set
# DEBUG_MCUF is not set
SD_NETIO_ADDON_WORKAROUND=y
# SER_RAM_SUPPORT is not set

#
# Protocols
#
# NET_MAX_FRAME_LENGTH_GT_571 is not set
# ARTNET_SUPPORT is not set
CONF_ARTNET_PORT=6454
CONF_ARTNET_INUNIVERSE=1
CONF_ARTNET_OUTUNIVERSE=0
# DEBUG_ARTNET is not set
# DALI_SUPPORT is not set
# DALI_RAW_SUPPORT is not set
# DALI_RECEIVE_SUPPORT is not set
# DMX_SUPPORT is not set
ECMD_PARSER_SUPPORT=y
# ECMD_REMOVE_BACKSPACE_SUPPORT is not set
# ALIASCMD_SUPPORT is not set
# ECMD_PAM_SUPPORT is not set
# ECMD_SCRIPT_SUPPORT is not set
ECMD_SERIAL_USART_SUPPORT=y
ECMD_SERIAL_USART_USART_0=y
ECMD_SERIAL_USART_USE_USART=0
# ECMD_SERIAL_USART_RS485_SUPPORT is not set
# ECMD_SERIAL_NO_ECHO is not set
ECMD_SERIAL_BAUDRATE=38400
ECMD_SERIAL_USART_BUFFER_LEN=50
ECMD_TCP_SUPPORT=y
ECMD_TCP_PORT=2701
# ECMD_UDP_SUPPORT is not set
# ECMD_SERIAL_I2C_SUPPORT is not set
# ECMD_USB_SUPPORT is not set
# ECMD_JABBER_SUPPORT is not set
# ECMD_IRC_SUPPORT is not set
# ECMD_SMS_SUPPORT is not set
# ECMD_EEPROM_SUPPORT is not set
# ECMD_SENDER_SUPPORT is not set
# UECMD_SENDER_SUPPORT is not set
# DISABLE_IPCONF_SUPPORT is not set
# DISABLE_REBOOT_SUPPORT is not set
# IPSTATS_SUPPORT is not set
# FREE_SUPPORT is not set
# ECMD_MIRROR_REQUEST is not set
# DEBUG_ECMD is not set
# DEBUG_ECMD_FS20 is not set
# DEBUG_ECMD_IP is not set
# DEBUG_ECMD_MAC is not set
# DEBUG_ECMD_NET is not set
# DEBUG_ECMD_OW_LIST is not set
# DEBUG_ECMD_OW_ROM is not set
# DEBUG_ECMD_PORTIO is not set
# DEBUG_ECMD_RC5 is not set
# DEBUG_ECMD_SCRIPT is not set
# FNORDLICHT_SUPPORT is not set
# HTTPLOG_SUPPORT is not set
CONF_HTTPLOG_SERVICE="volkszaehler.org"
CONF_HTTPLOG_PATH="/httplog/httplog.php"
# CONF_HTTPLOG_INCLUDE_TIMESTAMP is not set
# CONF_HTTPLOG_INCLUDE_UUID is not set
CONF_HTTPLOG_UUID="8edc0f5a-3ecc-8c5b-563d-8cbf90a21a9c"
HTTPLOG_BUFFER_LEN=140
# DEBUG_HTTPLOG is not set
# IRC_SUPPORT is not set
CONF_IRC_IP="192.168.23.254"
CONF_IRC_PORT=6667
CONF_IRC_CHANNEL="ethersex"
CONF_IRC_USERNAME="ethersex"
CONF_IRC_NICKNAME="ethersex"
CONF_IRC_REALNAME="Ethersex Wollmilchsau"
# IRC_GREET_SUPPORT is not set
# DEBUG_IRC is not set
# MDNS_SD_SUPPORT is not set
# MODBUS_SUPPORT is not set
# MYSQL_SUPPORT is not set
CONF_MYSQL_IP="192.168.23.254"
CONF_MYSQL_USERNAME="root"
CONF_MYSQL_PASSWORD="password"
CONF_MYSQL_SCHEMA="mavisdb"
# DEBUG_MYSQL is not set
# NETSTAT_SUPPORT is not set
CONF_NETSTAT_SERVICE_IP="188.40.33.175"
CONF_NETSTAT_SERVICE="ethersex.de"
CONF_NETSTAT_API="/~habo/stat/"
# DEBUG_NETSTAT is not set
# SOAP_SUPPORT is not set
# SNMP_SUPPORT is not set
# SENDMAIL_SUPPORT is not set
CONF_SENDMAIL_IP="78.47.210.246"
CONF_SENDMAIL_FROM="[email protected]"
CONF_SENDMAIL_TO="[email protected]"
# SENDMAIL_AUTH_SUPPORT is not set
# DEBUG_SENDMAIL is not set
# SMS77_SUPPORT is not set
CONF_SMS77_SERVICE="gateway.sms77.de"
CONF_SMS77_USER=""
CONF_SMS77_PASS=""
CONF_SMS77_TO=""
CONF_SMS77_TYPE_CHOICE=CONF_SMS77_TYPE_BASICPLUS
CONF_SMS77_TYPE_BASICPLUS=y
# CONF_SMS77_TYPE_STANDARD is not set
# CONF_SMS77_TYPE_QUALITY is not set
# CONF_SMS77_TYPE_FESTNETZ is not set
# CONF_SMS77_TYPE_FLASH is not set
CONF_SMS77_TYPE="basicplus"
# SMS77_EEPROM_SUPPORT is not set
# DEBUG_SMS77 is not set
# SYSLOG_SUPPORT is not set
CONF_SYSLOG_SERVER="192.168.23.73"
# TWITTER_SUPPORT is not set
CONF_TWITTER_SERVICE="identi.ca"
CONF_TWITTER_API="/api"
CONF_TWITTER_USERNAME="ethersex"
CONF_TWITTER_PASSWORD=""
CONF_TWITTER_AUTH="ZXRoZXJzZXg6"
# DEBUG_TWITTER is not set
# USTREAM_SUPPORT is not set
CONF_USTREAM_IP="205.188.234.7"
CONF_USTREAM_PORT=80
# DEBUG_USTREAM is not set
# YPORT_SUPPORT is not set
# MSR1_SUPPORT is not set
# TO1_SUPPORT is not set
# SERIAL_LINE_LOG_SUPPORT is not set
# NMEA_SUPPORT is not set
# STELLA_PROTOCOL_SUPPORT is not set
UDP_STELLA_PORT=2702
# IOUDP_PROTOCOL_SUPPORT is not set
UDP_IO_PORT=2703
# MOTORCURTAIN_PROTOCOL_SUPPORT is not set
UDP_MOTORCURTAIN_PORT=2704
# CW_SUPPORT is not set
CW_WPM=12
# CW_BOOT_SUPPORT is not set
# CW_BEACON_SUPPORT is not set
# CW_PIN_SUPPORT is not set
# CW_PWM_FREQ_SUPPORT is not set
# CW_RFM12_ASK_SUPPORT is not set
# DEBUG_CW is not set

#
# Applications
#
# APP_SAMPLE_SUPPORT is not set
# APP_SAMPLE_INIT_AUTOSTART_SUPPORT is not set
# APP_SAMPLE_PERIODIC_AUTOSTART_SUPPORT is not set
# DEBUG_APP_SAMPLE is not set
# BULBDIAL_SUPPORT is not set
# DEBUG_BULBDIAL is not set
CLOCK_SUPPORT=y
CLOCK_DATETIME_SUPPORT=y

#
# Timezone
#
TZ_OFFSET=60
DST_OFFSET=60
DST_BEGIN_MONTH=3
DST_BEGIN_WEEK=5
DST_BEGIN_DOW=0
DST_BEGIN_HOUR=2
DST_END_MONTH=10
DST_END_WEEK=5
DST_END_DOW=0
DST_END_HOUR=3
# CLOCK_CRYSTAL_SUPPORT is not set
# CLOCK_CPU_SUPPORT is not set
# CLOCK_NTP_ADJUST_SUPPORT is not set
# DCF77_SUPPORT is not set
# DEBUG_DCF77 is not set
# NTP_SUPPORT is not set
# NTPD_SUPPORT is not set
# WHM_SUPPORT is not set
# UPTIME_SUPPORT is not set
# DEBUG_NTP_ADJUST is not set
# CRON_SUPPORT is not set
# CRON_DEFAULT_UTC is not set
# CRON_SUPPORT_TEST is not set
# CRON_VFS_SUPPORT is not set
# CRON_EEPROM_SUPPORT is not set
# CRON_ANACRON_SUPPORT is not set
# DEBUG_CRON_DRYRUN is not set
# DEBUG_CRON is not set
# CRON_STATIC_SUPPORT is not set
# DYNDNS_SUPPORT is not set
# DMX_STORAGE_SUPPORT is not set
DMX_STORAGE_UNIVERSES=2
DMX_STORAGE_CHANNELS=64
DMX_STORAGE_SLOTS=5
# DMX_STORAGE_DEBUG is not set
# DMX_FXSLOT_SUPPORT is not set
DMX_FXSLOT_AMOUNT=4
# DMX_FXSLOT_AUTOSAVE_SUPPORT is not set
# DMX_FXSLOT_AUTORESTORE_SUPPORT is not set
# DMX_FX_RAINBOW is not set
# DMX_FX_RANDOM is not set
# DMX_FX_FIRE is not set
# DMX_FX_WATER is not set
# UDP_ECHO_NET_SUPPORT is not set
# WOL_SUPPORT is not set
# MOTD_SUPPORT is not set
CONF_MOTD_DEFAULT="empty"
CONF_MOTD_SIZE=50
HTTPD_SUPPORT=y
# HTTPD_SOAP_SUPPORT is not set
# HTTPD_AUTH_SUPPORT is not set
HTTP_SD_DIR_SUPPORT=y
# MIME_SUPPORT is not set
HTTPD_PORT=80
HTTPD_ALTERNATE_PORT=8000
# HTTP_FAVICON_SUPPORT is not set
# DEBUG_HTTPD is not set
# JABBER_SUPPORT is not set
CONF_JABBER_IP="78.47.210.246"
CONF_JABBER_HOSTNAME="jabber.zerties.org"
CONF_JABBER_USERNAME="esex"
CONF_JABBER_PASSWORD="password"
CONF_JABBER_RESOURCE="ethersex"
CONF_JABBER_BUDDY="[email protected]"
# JABBER_EEPROM_SUPPORT is not set
# JABBER_STARTUP_MESSAGE_SUPPORT is not set
# JABBER_LAST_SUPPORT is not set
# JABBER_VERSION_SUPPORT is not set
# DEBUG_JABBER is not set
# MOODLIGHT_SUPPORT is not set
MOODLIGHT_CHANGEGAP_INIT=120
# STELLA_SUPPORT is not set
# stella_vslow is not set
# stella_slow is not set
STELLA_FREQ=stella_normal
stella_normal=y
# stella_fast is not set
# STELLA_LOW_PRIORITY is not set
STELLA_START=stella_start_zero
stella_start_zero=y
# stella_start_all is not set
# stella_start_eeprom is not set
STELLA_FADE_STEP_INIT=10
STELLA_FADE_FUNCTION_INIT=stella_fade_func_0
stella_fade_func_0=y
# stella_fade_func_1 is not set
# DEBUG_STELLA is not set
# STARBURST_SUPPORT is not set
# STARBURST_PCA9685 is not set
# STARBURST_DEBUG is not set
# MOTORCURTAIN_SUPPORT is not set
# MOTORCURTAIN_INVERTED_MOTOR is not set
# MOTORCURTAIN_INVERTED_DIRECTION is not set
# MOTORCURTAIN_INVERTED_SENSORS is not set
# MOTORCURTAIN_INVERTED_SAFETYSWITCH is not set
# MOTORCURTAIN_PROGRESS_SUPPORT is not set
# TFTP_SUPPORT is not set
# TFTPOMATIC_SUPPORT is not set
# UPNP_SUPPORT is not set
CONF_UPNP_MULTICAST_IP="239.255.255.250"
CONF_UPNP_SCHEME_FILENAME="/ih.xml"
# DEBUG_UPNP is not set
# WATCHCAT_SUPPORT is not set
# VNC_SUPPORT is not set
VNC_PORT=5900
# GUI_SUPPORT is not set
# DEBUG_VNC is not set
# WATCHASYNC_SUPPORT is not set
CONF_WATCHASYNC_SERVER="volkszaehler.org"
WATCHASYNC_SERVER_IP="78.46.142.232"
CONF_WATCHASYNC_PORT=80
CONF_WATCHASYNC_METHOD="GET"
CONF_WATCHASYNC_PATH="/httplog/httplog.php"
CONF_WATCHASYNC_END_PATH=""
# CONF_WATCHASYNC_TIMESTAMP is not set
# CONF_WATCHASYNC_SUMMARIZE is not set
CONF_WATCHASYNC_BUFFERSIZE=64
# CONF_WATCHASYNC_EDGDETECTVIAPOLLING is not set

#
# Pin Configuration
#

#
# Port A
#
# CONF_WATCHASYNC_PA0 is not set
# CONF_WATCHASYNC_PA1 is not set
# CONF_WATCHASYNC_PA2 is not set
# CONF_WATCHASYNC_PA3 is not set
# CONF_WATCHASYNC_PA4 is not set
# CONF_WATCHASYNC_PA5 is not set
# CONF_WATCHASYNC_PA6 is not set
# CONF_WATCHASYNC_PA7 is not set

#
# Port B
#
# CONF_WATCHASYNC_PB0 is not set
# CONF_WATCHASYNC_PB1 is not set
# CONF_WATCHASYNC_PB2 is not set
# CONF_WATCHASYNC_PB3 is not set
# CONF_WATCHASYNC_PB4 is not set
# CONF_WATCHASYNC_PB5 is not set
# CONF_WATCHASYNC_PB6 is not set
# CONF_WATCHASYNC_PB7 is not set

#
# Port C
#
# CONF_WATCHASYNC_PC0 is not set
# CONF_WATCHASYNC_PC1 is not set
# CONF_WATCHASYNC_PC2 is not set
# CONF_WATCHASYNC_PC3 is not set
# CONF_WATCHASYNC_PC4 is not set
# CONF_WATCHASYNC_PC5 is not set
# CONF_WATCHASYNC_PC6 is not set
# CONF_WATCHASYNC_PC7 is not set

#
# Port D
#
# CONF_WATCHASYNC_PD0 is not set
# CONF_WATCHASYNC_PD1 is not set
# CONF_WATCHASYNC_PD2 is not set
# CONF_WATCHASYNC_PD3 is not set
# CONF_WATCHASYNC_PD4 is not set
# CONF_WATCHASYNC_PD5 is not set
# CONF_WATCHASYNC_PD6 is not set
# CONF_WATCHASYNC_PD7 is not set
# DEBUG_WATCHASYNC is not set
# GLCD_MENU_SUPPORT is not set
# GLCDMENU_UMLAUTS is not set
# GLCDMENU_MOUSE_SUPPORT is not set
# GLCDMENU_S1D13305 is not set
# DEBUG_GLCD_MENU is not set
# LOME6_SUPPORT is not set
# LOME6_LCD_SUPPORT is not set
# LOME6_ONEWIRE_SUPPORT is not set
CONF_SENSOR_PSU="1015ccf501080065"
CONF_SENSOR_AIR="10567cf501080006"
CONF_SENSOR_RAM="10cba7f5010800d3"
CONF_LOME6_POD=0
CONF_TIME2PRESS_RESET=40
CONF_TIME2PRESS_POWER=40
CONF_TIME2PRESS_POWERL=3
# PROJECTOR_SANYO_Z700_SUPPORT is not set
# FREQCOUNT_SUPPORT is not set
FREQCOUNT_CHANNELS=1
# FREQCOUNT_BOOT_ON is not set
FREQCOUNT_AVERAGE=8
# FREQCOUNT_NOSLOW_SUPPORT is not set
# FREQCOUNT_DUTY_SUPPORT is not set
# FREQCOUNT_MOVING_AVERAGE_SUPPORT is not set
# FREQCOUNT_DEBUGGING is not set
# TANKLEVEL_SUPPORT is not set
TANKLEVEL_ADC_CHANNEL=0
# TANKLEVEL_STARTUP is not set
# TANKLEVEL_CRON_SUPPORT is not set
# TANKLEVEL_PUMP_ACTIVE_LOW is not set
# TANKLEVEL_LOCK_SUPPORT is not set
# TANKLEVEL_INLINE_SUPPORT is not set
TANKLEVEL_SENSOR_OFFSET=0
TANKLEVEL_MED_DENSITY=840
TANKLEVEL_LTR_PER_M=3409
TANKLEVEL_LTR_FULL=10000
TANKLEVEL_RAISE_TIME=50
TANKLEVEL_HOLD_TIME=20
RFM12_SUPPORT=y
IPV4_SUPPORT=y

Reduce number of required timers

The number of timers in ATmega MCUs are typically limited to 3. This limits the number of Ethersex modules run simultaneously and that exclusively occupy a timer.

Solution:
Use TIMER1 not only for the periodic tick and clock. A timer queue management for medium to low resolution timing purposes would be a good way to reduce the number of used timers. On UNIXoid system this is called "callout table".

There is a similar approach for AVR based micro-controller systems
http://www.sax.de/~joerg/avr-timer/

Menuconfig system doesn't work with dash

make menuconfig within set-conf-string doesn't work as expected with dash. dash is the default shell (/bin/sh is a symlink) on Debian (since Squeeze) and Ubuntu (since 6.10).

The most apparent bug is that make menuconfig detects and apparently loads the old .config but doesn't set the values accordingly, which results in default values produces by the various config.in files.

Affected files:

https://github.com/ethersex/ethersex/blob/master/scripts/set-conf-string

Known fixes:

  • Delete the symlink /bin/sh => /bin/dash and link to bash ln -s /bin/bash /bin/sh
  • Change /bin/sh to /bin/bash in set-conf-string

Windows peers are creating a 200 ms delay between TCP transmissions

The Windows TCP/IP stack uses Nagle's algorithm to improve efficiency.
However it has a fixed timeout of 200 ms rather than dynamic one.
Since uip/ethersex only supports sending a packet once the ACK has been received, each TCP packet will be delayed by 200 ms.
This only happens of course when the TCP stream consists of more than one (data) packet. (long ecmd outputs and most HTTP requests)

Example: help via telnet

Since each newline leads to a new tcp packet, we get a delay of COMMANDS_AVAILABLE*(0.2s+AVG_TRANSMISSION_TIME)

Example:
20 Commands, 20 ms Transmission Time (roundtrip)
20*0.22s=4.4s Delay for one command

This also happens when using the HTTP ECMD interface.
=> one ajax request takes up to several seconds!

We have some options here:

  • use uip-split where each outgoing TCP packet will be split into two smaller ones and forcing the Windows peer to transmit one ACK immediately.
  • transmit each TCP packet twice
  • ignore that Windows users exist (and force them to manually set TCP_NODELAY)

References:

Review and merge PR #127

Please review and merge PR #127, as I don't have the time for doing this and you are involved in the OW code anyway.

Wrong bitmasks used in various hackery_*.m4 for timer prescaler

Various copy'n'paste errors in TCn_PRESCALER_xy in several files, e.g.

hackery_atmega16.m4:#define TC1_PRESCALER_64 {TCCR1&=(_BV(CS12));TCCR1|=_BV(CS11)|_BV(CS12);
hackery_atmega32.m4:#define TC1_PRESCALER_64 {TCCR1B&=
(_BV(CS12));TCCR1B|=_BV(CS11)|_BV(CS12);}
hackery_atmega64.m4:#define TC1_PRESCALER_64 {TCCR1&=~(_BV(CS12));TCCR1|=_BV(CS11)|_BV(CS12);}

hackery_atmega644.m4:#define TC2_PRESCALER_32 {TCCR2B&=(_BV(CS22));TCCR2B|=_BV(CS21)|_BV(CS22);
hackery_atmega1284p.m4:#define TC2_PRESCALER_32 {TCCR2B&=
(_BV(CS22));TCCR2B|=_BV(CS21)|_BV(CS22);}

Build with DHCP, but without ECMD makes undefined references in dhcp.c

My HEAD is 5a3dff7. If I make menuconfig, load the default config for Etherrape or AVR-NETIO, choose Network ---> UDP, UDP broadcast and DHCP support, and also disable Protocols ---> ECMD support, I get the following error in make:

[...]
avr-gcc -mmcu=atmega644 -Wl,--gc-sections,--relax -o ethersex ethersex.o core/eeprom.o core/util/fixedpoint.o core/util/string_parsing.o core/util/byte2hex.o core/util/app_crc.o network.o core/periodic.o core/spi.o core/vfs/vfs.o core/vfs/vfs-util.o core/vfs/vfs_inline.o hardware/avr/dump_ecmd.o hardware/avr/fuse_ecmd.o hardware/avr/hostname_ecmd.o hardware/avr/reset_ecmd.o hardware/ethernet/ethernet_config.o hardware/ethernet/enc28j60.o hardware/ethernet/enc28j60_process.o hardware/ethernet/enc28j60_transmit.o hardware/storage/dataflash/df.o hardware/storage/dataflash/fs.o hardware/storage/dataflash/vfs_df.o protocols/dhcp/dhcp.o protocols/uip/uip.o protocols/uip/uip_multi.o protocols/uip/uip_router.o protocols/uip/parse.o protocols/uip/uip_arp.o protocols/uip/check_cache.o services/clock/clock.o services/clock/clock_lib.o services/httpd/handle_400.o services/httpd/handle_401.o services/httpd/handle_404.o services/httpd/headers.o services/httpd/httpd.o services/httpd/base64_mit.o services/httpd/handle_vfs.o services/ntp/ntp.o meta.o  -lm -lc # Pixie Dust!!! (Bug in avr-binutils)
protocols/dhcp/dhcp.o: In function `dhcp_net_init':
/home/rohieb/Projects/doorbell-ethersex.git/protocols/dhcp/dhcp.c:335: undefined reference to `set_CONF_ENC_IP'
/home/rohieb/Projects/doorbell-ethersex.git/protocols/dhcp/dhcp.c:337: undefined reference to `set_CONF_ENC_IP4_NETMASK'
collect2: error: ld returned 1 exit status
make: *** [ethersex] Error 1

If I re-enable ECMD or disable DHCP, everything is fine, so it seems I cannot build DHCP without ECMD?

One wire temperature naming/debug support doesnt work well

if "Onewire naming support" or OW-ROM is enabled the return temperature value misses the first number

  1. if DEBUG_ECMD_OW_ROM=y the return value misses the first character.
    i.e.: 9.3 degrees instead of 29.3

  2. when ONEWIRE_NAMING_SUPPORT=y sensors are not showing up in the list and i get "D: OW-POLL: number of sensors exceeds list size of 10" when only connecting one sensor.

  3. seems that DEBUG_ECMD_OW_ROM and DEBUG_ECMD_OW_LIST exist twice in .config

OW-ROM Debug enabled

grep 'OW\|ONEWIRE' .config
# STATUSLED_POWER_SUPPORT is not set
# ONEWIRE_INLINE_SUPPORT is not set
# VFS_INLINE_OBSOLETE_BROWSER_SUPPORT is not set
# CONF_RFM12_SLOW_SPI is not set
# DEBUG_UNKNOWN_PACKETS is not set
ONEWIRE_SUPPORT=y
ONEWIRE_DETECT_SUPPORT=y
# ONEWIRE_DS2502_SUPPORT is not set
# ONEWIRE_DS2450_SUPPORT is not set
ONEWIRE_DETECT_ECMD_SUPPORT=y
ONEWIRE_POLLING_SUPPORT=y
OW_DISCOVER_INTERVAL=180
OW_POLLING_INTERVAL=30
# ONEWIRE_HOOK_SUPPORT is not set
ONEWIRE_ECMD_LIST_VALUES_SUPPORT=y
ONEWIRE_ECMD_LIST_POWER_SUPPORT=y
# ONEWIRE_NAMING_SUPPORT is not set
OW_SENSORS_COUNT=10
# ONEWIRE_SNMP_SUPPORT is not set
DEBUG_ECMD_OW_ROM=y
DEBUG_ECMD_OW_LIST=y
# DEBUG_OW_DS2450_CORE is not set
# DEBUG_OW_DS2450_ECMD is not set
DEBUG_OW_POLLING=y
DEBUG_ECMD_OW_LIST=y
DEBUG_ECMD_OW_ROM=y
DST_BEGIN_DOW=0
DST_END_DOW=0
# DMX_FX_RAINBOW is not set
# STELLA_LOW_PRIORITY is not set
# LOME6_ONEWIRE_SUPPORT is not set
CONF_TIME2PRESS_POWER=40
CONF_TIME2PRESS_POWERL=3
# FREQCOUNT_NOSLOW_SUPPORT is not set
# TANKLEVEL_PUMP_ACTIVE_LOW is not set

D: Ethersex 0.2 (7240a8f) (Debug mode)
D: disabling watchdog
help
d
fuse
hostname
reset
wdreset
io
1w list
1w get
1w convert
help
version
eeprom reinit
1w list
281efeeb020000c0        29.3    1
OK
1w get 281efeeb020000c0
D: called onewire_get with: "281efeeb020000c0"
29.3
D: Ethersex 0.2 (7240a8f) (Debug mode)
D: disabling watchdog
D: OW-POLL: starting discovery
D: OW-POLL: discovered device 281efeeb020000c0
D: OW-POLL: stored new sensor in pos 0
D: OW-POLL: start conversion on all sensors
D: OW-POLL: temperature: 29.3ðC on device 281efeeb020000c0 1
1w list
281efeeb020000c0        29.3    1
OK
1w get 281efeeb020000c0
D: called onewire_get with: "281efeeb020000c0"
D: OW-ROM: called parse_ow_rom with string '281efeeb020000c0'
D: OW-ROM: scanf returned 8
D: OW-ROM: read rom 28 1e fe eb 02 00 00 c0
9.3
D: OW-POLL: start conversion on all sensors
D: OW-POLL: temperature: 29.3ðC on device 281efeeb020000c0 1
D: OW-POLL: start conversion on all sensors
D: OW-POLL: temperature: 29.3ðC on device 281efeeb020000c0 1
D: OW-POLL: start conversion on all sensors
D: OW-POLL: temperature: 29.3ðC on device 281efeeb020000c0 1
1w convert 281efeeb020000c0
parse error
1w convert 281efeeb020000c0
OK
D: OW-POLL: start conversion on all sensors
D: OW-POLL: temperature: 29.3ðC on device 281efeeb020000c0 1

OW-ROM Debug disabled

grep 'OW\|ONEWIRE' .config
# STATUSLED_POWER_SUPPORT is not set
# ONEWIRE_INLINE_SUPPORT is not set
# VFS_INLINE_OBSOLETE_BROWSER_SUPPORT is not set
# CONF_RFM12_SLOW_SPI is not set
# DEBUG_UNKNOWN_PACKETS is not set
ONEWIRE_SUPPORT=y
ONEWIRE_DETECT_SUPPORT=y
# ONEWIRE_DS2502_SUPPORT is not set
# ONEWIRE_DS2450_SUPPORT is not set
ONEWIRE_DETECT_ECMD_SUPPORT=y
ONEWIRE_POLLING_SUPPORT=y
OW_DISCOVER_INTERVAL=180
OW_POLLING_INTERVAL=30
# ONEWIRE_HOOK_SUPPORT is not set
ONEWIRE_ECMD_LIST_VALUES_SUPPORT=y
ONEWIRE_ECMD_LIST_POWER_SUPPORT=y
# ONEWIRE_NAMING_SUPPORT is not set
OW_SENSORS_COUNT=10
# ONEWIRE_SNMP_SUPPORT is not set
# DEBUG_ECMD_OW_ROM is not set
DEBUG_ECMD_OW_LIST=y
# DEBUG_OW_DS2450_CORE is not set
# DEBUG_OW_DS2450_ECMD is not set
DEBUG_OW_POLLING=y
DEBUG_ECMD_OW_LIST=y
# DEBUG_ECMD_OW_ROM is not set
DST_BEGIN_DOW=0
DST_END_DOW=0
# DMX_FX_RAINBOW is not set
# STELLA_LOW_PRIORITY is not set
# LOME6_ONEWIRE_SUPPORT is not set
CONF_TIME2PRESS_POWER=40
CONF_TIME2PRESS_POWERL=3
# FREQCOUNT_NOSLOW_SUPPORT is not set
# TANKLEVEL_PUMP_ACTIVE_LOW is not set

D: Ethersex 0.2 (7240a8f) (Debug mode)
D: disabling watchdog
D: OW-POLL: starting discovery
D: OW-POLL: discovered device 281efeeb020000c0
D: OW-POLL: stored new sensor in pos 0
D: OW-POLL: start conversion on all sensors
helD: OW-POLL: temperature: 29.3ðC on device 281efeeb020000c0 1
p
d
fuse
hostname
reset
wdreset
io
1w list
1w get
1w convert
help
version
eeprom reinit
1w list
281efeeb020000c0        29.3    1
OK
1w get 2818feeb020000c0
D: called onewire_get with: "281efeeb020000c0"
29.3
1w convert 281efeee020000c0
OK

ONEWIRE_NAMING_SUPPORT=y

grep 'OW\|ONEWIRE' .config
# STATUSLED_POWER_SUPPORT is not set
# ONEWIRE_INLINE_SUPPORT is not set
# VFS_INLINE_OBSOLETE_BROWSER_SUPPORT is not set
# CONF_RFM12_SLOW_SPI is not set
# DEBUG_UNKNOWN_PACKETS is not set
ONEWIRE_SUPPORT=y
ONEWIRE_DETECT_SUPPORT=y
# ONEWIRE_DS2502_SUPPORT is not set
# ONEWIRE_DS2450_SUPPORT is not set
ONEWIRE_DETECT_ECMD_SUPPORT=y
ONEWIRE_POLLING_SUPPORT=y
OW_DISCOVER_INTERVAL=180
OW_POLLING_INTERVAL=30
# ONEWIRE_HOOK_SUPPORT is not set
ONEWIRE_ECMD_LIST_VALUES_SUPPORT=y
ONEWIRE_ECMD_LIST_POWER_SUPPORT=y
ONEWIRE_NAMING_SUPPORT=y
OW_SENSORS_COUNT=10
# ONEWIRE_SNMP_SUPPORT is not set
DEBUG_ECMD_OW_ROM=y
DEBUG_ECMD_OW_LIST=y
# DEBUG_OW_DS2450_CORE is not set
# DEBUG_OW_DS2450_ECMD is not set
DEBUG_OW_POLLING=y
DEBUG_ECMD_OW_LIST=y
DEBUG_ECMD_OW_ROM=y
DST_BEGIN_DOW=0
DST_END_DOW=0
# DMX_FX_RAINBOW is not set
# STELLA_LOW_PRIORITY is not set
# LOME6_ONEWIRE_SUPPORT is not set
CONF_TIME2PRESS_POWER=40
CONF_TIME2PRESS_POWERL=3
# FREQCOUNT_NOSLOW_SUPPORT is not set
# TANKLEVEL_PUMP_ACTIVE_LOW is not set

D: Ethersex 0.2 (7240a8f) (Debug mode)
Â: disabling watchdog
D: OW-POLL: discovered device 281efeeb020000c0
D: OW-POLL: number of sensors exceeds list size of 10
D: OW-POLL: start conversion on all sensors
help
d
fuse
hostname
reset
wdreset
io
1w list
1w get
1w convert
1w name set
1w name clear
1w name list
1w name save
help
version
eeprom reinit
1w list
ffffffffffffffff        ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0.0¿Ã¿Ã¿0¿Ã¿Ã¿Ã¿
ffffffffffffffff        ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0.0¿Ã¿Ã¿0¿Ã¿Ã¿Ã¿
ffffffffffffffff        ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0.0¿Ã¿Ã¿0¿Ã¿Ã¿Ã¿
ffffffffffffffff        ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0.0¿Ã¿Ã¿0¿Ã¿Ã¿Ã¿
ffffffffffffffff        ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0.0¿Ã¿Ã¿0¿Ã¿Ã¿Ã¿
ffffffffffffffff        ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0.0¿Ã¿Ã¿0¿Ã¿Ã¿Ã¿
ffffffffffffffff        ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0.0¿Ã¿Ã¿0¿Ã¿Ã¿Ã¿
ffffffffffffffff        ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0.0¿Ã¿Ã¿0¿Ã¿Ã¿Ã¿
ffffffffffffffff        ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0.0¿Ã¿Ã¿0¿Ã¿Ã¿Ã¿
ffffffffffffffff        ÿÿÿÿÿÿÿÿÿÿÿÿ0.0¿Ã¿Ã¿0
OK

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.