STM32F103CBT6_Thermograph/Core/Inc/one_wire.h

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