Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
OWN(9)			 BSD Kernel Developer's	Manual			OWN(9)

NAME
     own, own_send_command, own_commmand_wait, own_self_command,
     own_acquire_bus, own crc, own_release_bus,	OWN_ACQUIRE_BUS, OWN_CRC,
     OWN_RELEASE_BUS, OWN_SEND_COMMAND -- Dallas Semiconductor 1-Wire Network
     and Transport Interface

SYNOPSIS
     #include <sys/bus.h>
     #include <dev/ow/own.h>

     int
     own_send_command(device_t pdev, struct ow_cmd *cmd);

     int
     own_command_wait(device_t pdev, struct ow_cmd *cmd);

     int
     own_self_command(device_t pdev, struct ow_cmd *cmd, uint8_t xpt_cmd);

     int
     own_acquire_bus(device_t pdev, int	how);

     int
     own_release_bus(device_t pdev);

     int
     own_crc(device_t pdev, uint8_t *buffer, size_t len);

     int
     OWN_SEND_COMMAND(device_t ndev, device_t pdev, struct ow_cmd *cmd);

     int
     OWN_ACQUIRE_BUS(device_t ndev, device_t pdev, int how);

     void
     OWN_RELEASE_BUS(device_t ndev, device_t pdev);

     uint8_t
     OWN_CRC(device_t ndev, device_t pdev, uint8_t *buffer, size_t len);

DESCRIPTION
     The own interface defines three sets of functions for interacting with
     1-Wire devices: sending commands, reserving the bus, and ensuring data
     integrity.	 Wrappers are provided for the raw OWN kobj(9) interfaces and
     should be used for	improved safety	over the kobj(9) ones.

   Bus Commands
     The 1-Wire	bus defines different layers of	access to the devices on the
     bus.  The own functions provide access to the network and transport lay-
     ers.  The network layer designates	the next command as being either for
     all devices on the	bus, or	for a specific device.	The network layer also
     specifies the speed used by the link layer.

     struct ow_cmd encapsulates	network	access,	speed, and timing information.
     It	specifies the commands to send and whether or not to read data.	 Its
     members are:

     flags
	   Flags controlling the interpretation	of the structure.  These flags
	   are defined in <dev/ow/ow.h>:

	   OW_FLAG_OVERDRIVE
		   Send	xpt_cmd	bytes and read xpt_read	bytes at overdrive
		   speed.

	   OW_FLAG_READ_BIT
		   Interpret xpt_read_len to be	in bits	to be read after
		   xpt_cmd rather than bytes.

     rom_cmd
	   ROM command bytes to	send.

     rom_len
	   Number of ROM command bytes to send.

     rom_read_len
	   Number of bytes to read after sending the ROM command.

     rom_read
	   Buffer for bytes read after the ROM command.

     xpt_cmd
	   Transport command to	send.

     xpt_len
	   Length of the transport command bytes to send.  Specify 0 for no
	   transport command.

     xpt_read_len
	   Number of bytes to read after xpt_cmd bytes are sent.  If the
	   OW_FLAG_READ_BIT bit	is set in flags, then it is the	number of bits
	   to read.  Bits read are packed into bytes.

     xpt_read
	   Buffer for data read.

     own_command_wait()	acquires the 1-Wire bus, waiting if necessary, sends
     the command, and then releases the	bus.  own_send_command() sends the
     command without bus reservation.  pdev is the client device (the presen-
     tation layer device) sending the command.	The cmd	argument describes the
     transaction to send to the	1-Wire bus.

     own_self_command()	fills in cmd with a MATCH_ROM ROM command, the ROM ad-
     dress of pdev and the xpt_cmd as a	convenient way to create directed com-
     mands.

   Bus Reservation
     The 1-Wire	system includes	an advisory lock for the bus that presentation
     layer devices can use to coordinate access.  Locking is purely advisory
     at	this time.

     own_acquire_bus() reserves	the bus.  It waits indefinitely	if the how ar-
     gument is OWN_WAIT	and returns the	error EWOULDBLOCK if passed
     OWN_DONTWAIT when the bus is owned	by another client.

     own_release_bus() releases	the bus.

   Data	Integrity
     own_crc() computes	the 1-Wire standard CRC	function over the data passed
     in	buffer and len and returns the result.

   Notes
     The 1-Wire	standard (Maxim	AN937) defines layers that are akin to ISO
     networking	layers.	 The lowest relevant layer, the	link layer, defines
     the polling windows and the timing	of the signaling of different modes.
     The network layer is built	on top of the link layer and is	used to	ad-
     dress devices in a	unicast	or multicast manner.  The transport layer de-
     fines commands and	responses from the devices.  The presentation layer is
     composed of the device specific commands and actions used to control the
     specific 1-Wire devices on	bus.

     These interfaces are implemented by the ow(4) device.  Presentation layer
     devices (children of the newbus ow(4) device) should only call the	func-
     tions described here.  The	functionality provided by the owc(4) device
     (specifically the owll(9) interface) should only be called	by the ow(4)
     driver.

SEE ALSO
     ow(4), owc(4), owll(9)
     https://pdfserv.maximintegrated.com/en/an/AN937.pdf

LEGAL
     1-Wire is a registered trademark of Maxim Integrated Products, Inc.

HISTORY
     The own driver first appeared in FreeBSD 11.0.

AUTHORS
     The own device driver and this manual page	were written by	Warner Losh.

BSD				 July 20, 2015				   BSD

NAME | SYNOPSIS | DESCRIPTION | SEE ALSO | LEGAL | HISTORY | AUTHORS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=own&sektion=9&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help