#ifndef HEADER_H
#define HEADER_H

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

#include "utils.h"
#include "bitmanip.h"
#include "interrupt.h"
#include "timer.h"
#include "usart.h"
#include "adc.h"

//
// GLOBAL
//
extern volatile uint8_t adc_channel;

//
// PROTOTYPES
//
// main.c
// timer.c
void timer_1B_init();
// math.c
void int_to_hex_string(uint64_t value, char *out, uint8_t num_digits);
void uint16_to_string(uint16_t value, char *out);
// adc.c
void adc_init(uint8_t prescaler_value);
uint16_t calibrate_temperature(uint16_t value, uint8_t speed);
void adc_print_dec(uint16_t value);
// uart.c
void uart_init();
void uart_tx(char c);
void uart_printstr(const char* str);
void uart_printstr_endl(const char* str);

//
// MACROS
//
#define ADC_POTENTIOMETER	0
#define ADC_PHOTORESISTOR	1
#define ADC_THERMISTOR		2

#endif // HEADER_H