Table of Contents
owcapi - easy C-language 1-wire interface
libowcapi
library to link with your program
ssize_t OW_init( device
name or full parameter string )
ssize_t OW_init_args( int argc, char ** args )
The full set of initialization
options is extensive. They correspond roughly to the command line options
of owfs (1)
owhttpd (1)
and owftpd (1)
int OW_present( const char
* path )
int OW_get( const char * path, char ** buffer, size_t * buffer_length )
ssize_t OW_lread( const char * path, unsigned char * buffer, const size_t
size, const off_t offset )
ssize_t OW_put( const char * path, const
char * buffer, size_t * buffer_length )
ssize_t OW_lwrite( const char * path, const unsigned char * buffer, const
size_t size, const off_t offset )
void OW_set_error_level( const char
*param )
void OW_set_error_print( const char *param )
void OW_finish( void
)
OW_init_string offers the full flexibility of the owfs
(1)
and owhttpd (1)
command line.
- Arguments
- Can be as simple as jus the
device name, a full parameter specification. One or more device names (includes
tcp, serial, usb...) and command line switches. See owfs (1)
for full syntax.
- Returns
- 0 for success. -1 on error and errno will be set. OW_finish does not
need to be called if OW_init fails.
- Sequence
- One of the init functions must
be called before accessing the 1-wire bus. OW_finish is optional.
OW_init_args
offers the full flexibility of the owfs (1)
and owhttpd (1)
command line.
- Arguments
- One or more device names (includes tcp, serial, usb...) and command
line switches. See owfs (1)
for full syntax. Unlike OW_init_string the arguments
are in argv/argc format.
- Returns
- 0 for success. -1 on error and errno will
be set. OW_finish does not need to be called if OW_init fails.
- Sequence
- One
of the init functions must be called before accessing the 1-wire bus. OW_finish
is optional.
OW_present is used to check presence of a 1-wire device.
- Arguments
- path is the path to the directory or file (property).
- Returns
- 0 on success. -1 on error (and errno is set).
- Sequence
- One of the init functions
must be called before accessing the 1-wire bus. OW_finish is optional.
OW_get
is used to get directory listings and file contents. The results are put
in a dynamically allocated buffer.
- Arguments
- path is the path to the directory
or file (property). *buffer returns a pointer to a buffer containing the
directory (comma separated) or value. buffer_length returns the length of
the value/string in buffer
- Returns
- number of bytes on success. -1 on error
(and errno is set).
- Sequence
- One of the init functions must be called before
accessing the 1-wire bus. OW_finish is optional.
- Important note
- buffer is
allocated ( with malloc ) by OW_get but must be freed in your program. See
malloc (3)
and free (3)
OW_lread is used to read 1-wire memory chips.
Think of it as a combination of lseek and read It allows random-access to
the memory, specifying location and length. Unlike OW_get directories cannot
be obtained and the buffer must be pre-allocated rather than allocated by
the routine. buffer must be at least size length.
- Arguments
- path is the path
to the file (property). buffer is the (pre-allocated) memory area where the
value will be placed. size is the length of bytes requested. offset is the
position in file to start reading.
- Returns
- number of bytes on success. -1
on error (and errno is set).
- Sequence
- One of the init functions must be
called before accessing the 1-wire bus. OW_finish is optional.
OW_put
is an easy way to write to 1-wire chips.
- Arguments
- path is the path to the
file (property). buffer is the value to be written. buffer_length is the
length of the value buffer. Returns number of bytes on success. -1 on error
(and errno is set).
- Sequence
- One of the init functions must be called before
accessing the 1-wire bus. OW_finish is optional.
OW_lwrite is the
companion of OW_lread. It allows writing to arbitrary positions in 1-wire
memory. Think of it as a combination of lseek and write. buffer must be at
least size length.
- Arguments
- path is the path to the file (property). buffer
is the data to be written. size is the length of bytes to be written. offset
is the position in file to start writing.
- Returns
- number of bytes on success.
-1 on error (and errno is set).
- Sequence
- One of the init functions must be
called before accessing the 1-wire bus. OW_finish is optional.
OW_set_error_level
sets the debug output to a certain level. 0 is default, and higher value
gives more output.
(0=default, 1=err_connect, 2=err_call, 3=err_data, 4=err_detail, 5=err_debug,
6=err_beyond)
- Arguments
- params is the level. Should be an integer.
- Returns
- None
- Sequence
- One of the init functions must be called before setting the
level, since init defaults to level 0.
OW_set_error_print
sets where the debug output should be directed. 0=mixed output, 1=syslog,
2=console.
- Arguments
- params is the level. Should be an integer between 0
and 2.
- Returns
- None
- Sequence
- One of the init functions must be called before
setting the level, since init defaults to 0 (mixed output).
OW_finish
cleans up the OWFS 1-wire routines, releases devices and memory.
- Arguments
- None.
- Returns
- None
- Sequence
- OW_finish is optional since cleanup is automatic
on program exit.
1-wire is a wiring protocol and
series of devices designed and manufactured by Dallas Semiconductor, Inc.
The bus is a low-power low-speed low-connector scheme where the data line
can also provide power.
Each device is uniquely and unalterably numbered
during manufacture. There are a wide variety of devices, including memory,
sensors (humidity, temperature, voltage, contact, current), switches, timers
and data loggers. More complex devices (like thermocouple sensors) can be
built with these basic devices. There are also 1-wire devices that have encryption
included.
The 1-wire scheme uses a single bus master and multiple slaves
on the same wire. The bus master initiates all communication. The slaves
can be individually discovered and addressed using their unique ID.
Bus
masters come in a variety of configurations including serial, parallel,
i2c, network or USB adapters.
OWFS is a suite of programs that
designed to make the 1-wire bus and its devices easily accessible. The underlying
priciple is to create a virtual filesystem, with the unique ID being the
directory, and the individual properties of the device are represented
as simple files that can be read and written.
Details of the individual
slave or master design are hidden behind a consistent interface. The goal
is to provide an easy set of tools for a software designer to create monitoring
or control applications. There are some performance enhancements in the
implementation, including data caching, parallel access to bus masters,
and aggregation of device communication. Still the fundemental goal has
been ease of use, flexibility and correctness rather than speed.
libowcapi
(1)
is an encapsulation of the full libow library for C programs.
libowcapi
(1)
allows a C program to use OWFS principles (consistent naming scheme,
multiple adapters, devices, and compatibility) directly from a C program.
There are analogous modules for other programming languages:
- C
- libowcapi
- perl
- owperl
- php
- owphp
- python
- owpython
- tcl
- owtcl
/* Simple directory
listing -- no error checking */
#include <owcapi.h>
unsigned char * buf;
size_t s ;
OW_init("/dev/ttyS0");
OW_set_error_print("2");
OW_set_error_level("6");
OW_get("/",&buf,&s) ;
printf("Directory %s0,buf);
free(buf);
OW_finish() ;
owfs (1)
owhttpd (1)
owftpd (1)
owserver
(1)
owdir (1)
owread (1)
owwrite (1)
owpresent (1)
owtap (1)
owfs (5)
owtap (1)
owmon (1)
owtcl (3)
owperl
(3)
owcapi (3)
DS1427 (3)
DS1904(3)
DS1994 (3)
DS2404 (3)
DS2404S
(3)
DS2415 (3)
DS2417 (3)
DS2401 (3)
DS2411 (3)
DS1990A (3)
DS1982
(3)
DS1985 (3)
DS1986 (3)
DS1991 (3)
DS1992 (3)
DS1993 (3)
DS1995 (3)
DS1996
(3)
DS2430A (3)
DS2431 (3)
DS2433 (3)
DS2502 (3)
DS2506 (3)
DS28E04 (3)
DS28EC20 (3)
DS2405 (3)
DS2406 (3)
DS2408 (3)
DS2409 (3)
DS2413
(3)
DS28EA00 (3)
DS1822 (3)
DS1825 (3)
DS1820 (3)
DS18B20 (3)
DS18S20 (3)
DS1920 (3)
DS1921 (3)
DS1821 (3)
DS28EA00 (3)
DS28E04 (3)
DS1922
(3)
DS2450 (3)
DS2890 (3)
DS2436 (3)
DS2437 (3)
DS2438 (3)
DS2751 (3)
DS2755 (3)
DS2756
(3)
DS2760 (3)
DS2770 (3)
DS2780 (3)
DS2781 (3)
DS2788 (3)
DS2784 (3)
DS2423
(3)
LCD (3)
DS2408 (3)
DS1977 (3)
DS2406 (3)
-- TAI8570
http://www.owfs.org
Paul Alfille (paul.alfille@gmail.com)
Table of Contents