All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.mapsmessaging.devices.i2c.devices.rtc.ds3231.register.Alarm2ModeRegister Maven / Gradle / Ivy

package io.mapsmessaging.devices.i2c.devices.rtc.ds3231.register;

import io.mapsmessaging.devices.deviceinterfaces.RegisterData;
import io.mapsmessaging.devices.i2c.I2CDevice;
import io.mapsmessaging.devices.i2c.devices.Register;
import io.mapsmessaging.devices.i2c.devices.rtc.ds3231.data.Alarm2SettingsData;
import io.mapsmessaging.devices.i2c.devices.rtc.ds3231.values.Alarm2Settings;

import java.io.IOException;

public class Alarm2ModeRegister extends Register {

  private final MinutesRegister minutesRegister;
  private final HourRegister hourRegister;
  private final AlarmDayRegister dayRegister;

  public Alarm2ModeRegister(
      I2CDevice sensor,
      MinutesRegister minutesRegister,
      HourRegister hourRegister,
      AlarmDayRegister dayRegister) {
    super(sensor, 0x81, "");
    this.minutesRegister = minutesRegister;
    this.hourRegister = hourRegister;
    this.dayRegister = dayRegister;
  }

  public Alarm2Settings getAlarmSettings() throws IOException {
    int mode = 0;
    boolean setDay = !dayRegister.isDate();
    if (minutesRegister.isTopSet()) {
      mode = mode | 0b001;
    }
    if (hourRegister.isTopSet()) {
      mode = mode | 0b010;
    }
    if (dayRegister.isTopSet()) {
      mode = mode | 0b100;
    }
    return Alarm2Settings.find(mode, setDay);
  }

  public void setAlarmSettings(Alarm2Settings settings) throws IOException {
    int mode = settings.getMask();
    boolean setDay = settings.isDay();
    minutesRegister.setTop((mode & 0b001) != 0);
    hourRegister.setTop((mode & 0b010) != 0);
    dayRegister.setTop((mode & 0b100) != 0);
    dayRegister.setDate(!setDay);
  }

  @Override
  public boolean fromData(RegisterData input) throws IOException {
    if (input instanceof Alarm2SettingsData) {
      Alarm2SettingsData data = (Alarm2SettingsData) input;
      setAlarmSettings(data.getAlarmSettings());
      return true;
    }
    return false;
  }

  @Override
  public RegisterData toData() throws IOException {
    return new Alarm2SettingsData(getAlarmSettings());
  }


  @Override
  protected void reload() throws IOException {
  }

  @Override
  protected void setControlRegister(int mask, int value) throws IOException {

  }

  @Override
  public String toString(int maxLength) {
    return "";
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy