2.17. owi — One-Wire Interface

Source code: src/drivers/owi.h, src/drivers/owi.c

Test code: tst/drivers/owi/main.c


Defines

OWI_SEARCH_ROM
OWI_READ_ROM
OWI_MATCH_ROM
OWI_SKIP_ROM

Functions

int owi_init(struct owi_driver_t *self_p, struct pin_device_t *dev_p, struct owi_device_t *devices_p, size_t nmemb)

Initialize driver object.

Return
zero(0) or negative error code.
Parameters
  • self_p -

    Driver object to be initialized.

  • dev_p -

    Pin device to use.

  • devices_p -

    Storage for devices found when searching.

  • nmemb -

    Number of members in devices.

int owi_reset(struct owi_driver_t *self_p)

Send reset on one wire bus.

Return
true(1) if one or more devices are connected to the bus, false(0) if no devices were found, otherwise negative error code.
Parameters
  • self_p -

    Driver object.

int owi_search(struct owi_driver_t *self_p)

Search network for devices.

Return
Number of devices found or negative error code.
Parameters
  • self_p -

    Driver object.

ssize_t owi_read(struct owi_driver_t *self_p, void *buf_p, size_t size)

Read into buffer from one wire bus.

Return
Number of bits read or negative error code.
Parameters
  • self_p -

    Driver object.

  • buf_p -

    Buffer to read into.

  • size -

    Number of bits to read.

ssize_t owi_write(struct owi_driver_t *self_p, const void *buf_p, size_t size)

Write buffer to given one wire bus.

Return
Number of bits written or negative error code.
Parameters
  • self_p -

    Driver object.

  • buf_p -

    Buffer to write.

  • size -

    Number of bits to write.

struct owi_device_t

Public Members

uint8_t id[8]
struct owi_driver_t

Public Members

struct pin_driver_t pin
struct owi_device_t *devices_p
size_t nmemb
size_t len