/*
 * File: ir_decoder.h
 * Date: 12.01.2013
 * Denis Zheleznyakov aka ZiB @ http://ziblog.ru
 */

#ifndef IR_DECODER_H_
#define IR_DECODER_H_

enum ir_decoder_settings
{
	// кол-во пропускаемых импульсов вначале посылки
	IR_DECODER_NUMBER_OF_MISSING_INTERVAL = 3UL,

	// максимальная длительность информационного импульса (мс)
	IR_DECODER_PULSE_MAXIMUM = 10UL,

	// время удержания клавиши в импульсе автоповтора (мс)
	IR_DECODER_AUTOREPEAT_TIME_DOWN = 10UL,

	// процентное отклонение для эталонного импульса (в процентах)
	IR_DECODER_INTERVAL_REFERENCE_PERCENT = 20UL,

	// длительность одиного тика таймера (мкс)
	IR_DECODER_TIMER_TICK = 8UL,

	// максимальная длина посылки (бит) [используется для работы 32 бита]
	IR_DECODER_COMMAND_LENGHT_MAXIMUM = 64UL
};

struct ir_decoder_type
{
	volatile uint16_t hash_code_received;
	volatile _Bool is_received;
};

extern struct ir_decoder_type ir_decoder;

void ir_decoder_refresh(void);
void ir_decoder_refresh_timeout(void);

#endif /* IR_DECODER_H_ */
