/*
 * File:   max31329.h
 * Author: thebears
 *
 * Created on December 18, 2024, 1:24 PM
 */

#include "defines.h"
#include "i2c.h"
#include "rfm69.h"
#include "st25dv.h"
#include "uart.h"

#ifndef MAX31329_H
#define MAX31329_H

#ifdef __cplusplus
extern "C" {
#endif

#define I2C_ADDR 0x68

#define DEC2BCD(n) ((n) + (6 * ((n) / 10)))
#define BCD2DEC(n) ((n) - (6 * ((n) >> 4)))

// time_struct.Year is years since 2000, which is exactly what the RTC's 2-digit
// year register holds -- no offset. (The old +/-30 round-tripped but stored the
// wrong year in the RTC and overflowed BCD above 2069.)
#define tmYearToY2k(Y) (Y)
#define y2kYearToTm(Y) (Y)

uint8_t rtc_enable_interrupts(void);
uint8_t rtc_set_per_minute_alarm(void);
uint8_t rtc_read_time_array(uint8_t* data);
time_struct rtc_read_time(void);
uint8_t rtc_write_time(time_struct tm);
uint8_t rtc_set_alarm_config(void);
uint8_t rtc_read_status_register(void);
uint8_t rtc_read_interrupt_register(void);
uint8_t rtc_read_register(uint8_t addr);
void uart_print_rtc_time(time_struct td);
RTC_RFM69_STATUS set_time_from_rfm69(identifier_results id_data);

#ifdef __cplusplus
}
#endif

#endif /* MAX31329_H */
