blob: 62626b3e25bbd26e093c712d051f1f39bacebc72 (
plain) (
tree)
|
|
// license:BSD-3-Clause
// copyright-holders:Aaron Giles,smf
/***************************************************************************
timehelp.h
Assorted shared functionality between timekeeping chips and RTCs.
***************************************************************************/
#pragma once
#ifndef SRC_DEVICES_MACHINE_TIMEHELP_H
#define SRC_DEVICES_MACHINE_TIMEHELP_H
class time_helper
{
public:
static inline uint8_t make_bcd(uint8_t data)
{
return (((data / 10) % 10) << 4) + (data % 10);
}
static inline uint8_t from_bcd(uint8_t data)
{
return (((data >> 4) & 15) * 10) + (data & 15);
}
static int inc_bcd(uint8_t *data, int mask, int min, int max)
{
int bcd = (*data + 1) & mask;
int carry = 0;
if ((bcd & 0x0f) > 9)
{
bcd &= 0xf0;
bcd += 0x10;
if (bcd > max)
{
bcd = min;
carry = 1;
}
}
*data = (*data & ~mask) | (bcd & mask);
return carry;
}
};
#endif // SRC_DEVICES_MACHINE_TIMEHELP_H
|