#ifndef __ONE_WIRE_H #define __ONE_WIRE_H #include typedef enum { OW_OK, OW_ERROR } onewire_ret_t; typedef struct { onewire_ret_t (*delay_usec)(void *handle, uint32_t usec); onewire_ret_t (*drive_dq)(void *handle, uint8_t value); uint8_t (*read_dq)(void *handle); } onewire_cb_t; typedef struct { uint8_t rom_num[8]; } onewire_rom_num_t; typedef struct { int LastDiscrepancy; int LastFamilyDiscrepancy; int LastDeviceFlag; uint8_t crc8; onewire_rom_num_t rom_num; } onewire_search_t; typedef struct { void *user_data; onewire_cb_t cb; onewire_search_t _search_state; } onewire_t; uint8_t onewire_bus_reset(onewire_t *ow); onewire_ret_t onrwire_bus_write_bit(onewire_t *ow, uint8_t bit); uint8_t onewire_bus_read_bit(onewire_t *ow); onewire_ret_t onewire_bus_write_byte(onewire_t *ow, uint8_t byte); uint8_t onewire_bus_read_byte(onewire_t *ow); onewire_ret_t onewire_bus_search_init(onewire_t *ow); onewire_ret_t onewire_bus_search_nextdev(onewire_t *ow, onewire_rom_num_t *rom); #endif