#include "timer.h"
#include "io.h"
#include "serial.h"
#include "logger.h"

// Глобальный счетчик тиков системы
uint32_t system_ticks = 0;

void timer_init(uint32_t frequency) {
    log_info(LOG_NORMAL, "Initializing PIT Timer...");

    // Вычисляем делитель частоты
    uint32_t divisor = 1193182 / frequency;

    // Шлем команду: Канал 0, Режим 3 (генератор меандра), доступ по очереди Младший/Старший байт
    outb(0x43, 0x36);

    // Раскалываем 16-битный делитель на два байта и шлем в порт данных Канала 0 (0x40)
    outb(0x40, (uint8_t)(divisor & 0xFF));
    outb(0x40, (uint8_t)((divisor >> 8) & 0xFF));

    log_info(LOG_NORMAL, "Timer registered");
}

void timer_handler(void) {
    system_ticks++;
}
