46 lines
1.0 KiB
C
46 lines
1.0 KiB
C
#ifndef __ONE_WIRE_H
|
|
#define __ONE_WIRE_H
|
|
|
|
#include <stdint.h>
|
|
|
|
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
|