示例#1
0
def test_invalid_time_source():
    import rv3028
    device = rv3028.RV3028(i2c_dev=MockSMBus(1))
    with pytest.raises(TypeError):
        device.set_alarm_time(None)
    with pytest.raises(TypeError):
        device.set_alarm_time(None, weekday=1)
示例#2
0
def test_alarm_hours_24():
    import rv3028
    device = rv3028.RV3028(i2c_dev=MockSMBus(1, default_registers={
        0x08: 0b00100001,  # 21 hours
    }))

    assert device.get_alarm_time().hour == 21
示例#3
0
def test_unix_time_lsb():
    import rv3028
    device = rv3028.RV3028(i2c_dev=MockSMBus(1, default_registers={
        0x1b: 0xff  # Bits 0-7 of UNIX_TIME
    }))

    assert device.get_unix_time() == 0xff
示例#4
0
def test_timer_value():
    import rv3028
    device = rv3028.RV3028(i2c_dev=MockSMBus(
        1,
        default_registers={
            0x0a: 0xff,  # Bits 0-7 of TIMER_VALUE,
            0x0b: 0x0f  # Bits 11-8 of TIMER_VVALUE
        }))

    assert device.get_periodic_timer_countdown_value() == 0xfff
示例#5
0
def test_timer_status():
    import rv3028
    device = rv3028.RV3028(i2c_dev=MockSMBus(
        1,
        default_registers={
            0x0c: 0xff,  # Bits 0-7 of TIMER_STATUS,
            0x0d: 0x0f  # Bits 11-8 of TIMER_STATUS
        }))

    assert device.get_periodic_timer_countdown_status() == 0xfff
示例#6
0
def test_time_and_date():
    t = datetime.time(12, 39, 7)
    d = datetime.date(2020, 2, 29)
    smbus = MockSMBus(1)
    import rv3028
    device = rv3028.RV3028(i2c_dev=smbus)
    device.set_time(t)
    device.set_date(d)
    assert device.get_time() == t
    assert device.get_date() == d

    assert smbus.regs[0x02] == 0b00010010
    assert smbus.regs[0x05] == 0b00000010
    assert smbus.regs[
        0x06] == 0b00100000  # 2020, but we have a year offset of +2000 internally so the BCD value is just 20
示例#7
0
def test_setup():
    sys.modules['smbus'] = mock.Mock()
    sys.modules['smbus'].SMBus = MockSMBus
    import rv3028
    device = rv3028.RV3028()
    device.reset()
    device.get_id()
    device.set_time_and_date((2001, 1, 1, 1, 1, 1))
    current = device.get_time_and_date()
    device.set_time_and_date(current)
    device.set_unix_time(0xFF)
    unix_time = device.get_unix_time()
    device.set_unix_time(unix_time)
    device.set_alarm_time((1, 1, 1, 1), 1)
    device.get_alarm_time()
    device.set_alarm_setting('disabled_monthly')
    device.get_alarm_setting()
    device.get_alarm_interrupt()
    device.clear_alarm_interrupt()
    for settings in device.alarm_frequency:
        device.set_alarm_setting(settings)
        device.get_alarm_setting()
    device.set_battery_switchover('level_switching_mode')
    device.get_battery_switchover()
    device.clear_all_interrupts()
    device.get_all_interrupts()
    device.stop_periodic_timer()
    device.set_periodic_timer_frequency('1Hz')
    device.get_periodic_timer_frequency()
    device.set_periodic_timer_countdown_value(0xFFFF)
    device.get_periodic_timer_countdown_value()
    device.get_periodic_timer_countdown_status()
    device.start_periodic_timer()
    device.clear_periodic_countdown_timer_interrupt()
    device.get_periodic_countdown_timer_interrupt()

    del device
示例#8
0
#!/usr/bin/env python

import rv3028
import time

print(
    """set-countdown-timer.py - Set the periodic countdown timer to 5 x 1 second ticks and waits for alarm to be triggered.

Press Ctrl+C to exit.

""")

# Create RV3028 instance
rtc = rv3028.RV3028()

countdown_time = 5

try:
    rtc.stop_periodic_timer()
    rtc.set_periodic_timer_frequency(
        '1Hz'
    )  # Frequency of each timer tick can take '4036Hz', '63Hz','1Hz', '0.016Hz' (1Hz == 1 second)
    rtc.set_periodic_timer_countdown_value(
        countdown_time
    )  # Set number of timer ticks before countdown alarm is triggered
    rtc.clear_periodic_countdown_timer_interrupt()
    rtc.start_periodic_timer()  # Start timer running
    print('Countdown timer set for {} seconds\n'.format(countdown_time))
    while not rtc.get_periodic_countdown_timer_interrupt():
        print('Countdown is {}'.format(rtc.get_periodic_timer_countdown_status(
        )))  # Show how many ticks are left of the countdown
示例#9
0
def test_invalid_datetime_source():
    import rv3028
    device = rv3028.RV3028(i2c_dev=MockSMBus(1))
    with pytest.raises(TypeError):
        device.set_time_and_date(None)
示例#10
0
def test_set_alarm_time():
    import rv3028
    device = rv3028.RV3028(i2c_dev=MockSMBus(1))
    device.set_alarm_time(datetime.datetime(2020, 2, 29, 12, 44))
    device.set_alarm_time(datetime.datetime(2020, 2, 29, 12, 44), weekday=1)
示例#11
0
def test_set_alarm_time_tuple():
    import rv3028
    device = rv3028.RV3028(i2c_dev=MockSMBus(1))
    device.set_alarm_time((1, 12, 44))
    device.set_alarm_time((12, 44), weekday=1)