text: #ifndef ONEWIRE_H_
  #define ONEWIRE_H_
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  #include <stdint.h>
  
  /*******************************************/
  /* Hardware connection                     */
  /*******************************************/
  
  /* Define OW_ONE_BUS if only one 1-Wire-Bus is used
     in the application -> shorter code.
     If not defined make sure to call ow_set_bus() before using 
     a bus. Runtime bus-select increases code size by around 300 
     bytes so use OW_ONE_BUS if possible */
  #define OW_ONE_BUS
  
  #ifdef OW_ONE_BUS
  
  #define OW_PIN  PC0
  #define OW_IN   PINC
  #define OW_OUT  PORTC
  #define OW_DDR  DDRC
  #define OW_CONF_DELAYOFFSET 0
  
  #else 
  #if ( F_CPU < 1843200 )
  #warning | Experimental multi-bus-mode is not tested for 
  #warning | frequencies below 1,84MHz. Use OW_ONE_WIRE or
  #warning | faster clock-source (i.e. internal 2MHz R/C-Osc.).
  #endif
  #define OW_CONF_CYCLESPERACCESS 13
  #define OW_CONF_DELAYOFFSET ( (uint16_t)( ((OW_CONF_CYCLESPERACCESS) * 1000000L) / F_CPU ) )
  #endif
  
  // Recovery time (T_Rec) minimum 1usec - increase for long lines 
  // 5 usecs is a value give in some Maxim AppNotes
  // 30u secs seem to be reliable for longer lines
  //#define OW_RECOVERY_TIME        5  /* usec */
  //#define OW_RECOVERY_TIME      300 /* usec */
  #define OW_RECOVERY_TIME         10 /* usec */
  
  // Use AVR's internal pull-up resistor instead of external 4,7k resistor.
  // Based on information from Sascha Schade. Experimental but worked in tests
  // with one DS18B20 and one DS18S20 on a rather short bus (60cm), where both 
  // sensores have been parasite-powered.
  #define OW_USE_INTERNAL_PULLUP     1  /* 0=external, 1=internal */
  
  /*******************************************/
  
  
  #define OW_MATCH_ROM    0x55
  #define OW_SKIP_ROM     0xCC
  #define OW_SEARCH_ROM   0xF0
  
  #define OW_SEARCH_FIRST 0xFF        // start new search
  #define OW_PRESENCE_ERR 0xFF
  #define OW_DATA_ERR     0xFE
  #define OW_LAST_DEVICE  0x00        // last device found
  
  // rom-code size including CRC
  #define OW_ROMCODE_SIZE 8
  
  extern uint8_t ow_reset(void);
  
  extern uint8_t ow_bit_io( uint8_t b );
  extern uint8_t ow_byte_wr( uint8_t b );
  extern uint8_t ow_byte_rd( void );
  
  extern uint8_t ow_rom_search( uint8_t diff, uint8_t *id );
  
  extern void ow_command( uint8_t command, uint8_t *id );
  extern void ow_command_with_parasite_enable( uint8_t command, uint8_t *id );
  
  extern void ow_parasite_enable( void );
  extern void ow_parasite_disable( void );
  extern uint8_t ow_input_pin_state( void );
  
  #ifndef OW_ONE_BUS
  extern void ow_set_bus( volatile uint8_t* in,
  	volatile uint8_t* out,
  	volatile uint8_t* ddr,
  	uint8_t pin );
  #endif
  
  #ifdef __cplusplus
  }
  #endif
  
  #endif
  