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

io.mapsmessaging.devices.i2c.devices.sensors.lps35.Lps35Controller Maven / Gradle / Ivy

package io.mapsmessaging.devices.i2c.devices.sensors.lps35;

import io.mapsmessaging.devices.i2c.I2CDevice;
import io.mapsmessaging.devices.i2c.I2CDeviceController;
import io.mapsmessaging.devices.impl.AddressableDevice;
import io.mapsmessaging.schemas.config.SchemaConfig;
import io.mapsmessaging.schemas.config.impl.JsonSchemaConfig;
import lombok.Getter;

import java.io.IOException;

public class Lps35Controller extends I2CDeviceController {

  private final Lps35Sensor sensor;

  @Getter
  private final String name = "LPS35";
  @Getter
  private final String description = "Pressure and Temperature sensor";


  public Lps35Controller() {
    sensor = null;
  }

  public Lps35Controller(AddressableDevice device) throws IOException {
    super(device);
    sensor = new Lps35Sensor(device);
  }

  public I2CDevice getDevice() {
    return sensor;
  }

  @Override
  public boolean canDetect() {
    return true;
  }

  @Override
  public boolean detect(AddressableDevice i2cDevice) {
    return (Lps35Sensor.getId(i2cDevice) == 0b10110001);
  }

  public I2CDeviceController mount(AddressableDevice device) throws IOException {
    return new Lps35Controller(device);
  }

  public SchemaConfig getSchema() {
    JsonSchemaConfig config = new JsonSchemaConfig();
    config.setComments("i2c device LPS35 pressure sensor: 260-1260 hPa");
    config.setSource("I2C bus address : 0x5d");
    config.setVersion("1.0");
    config.setResourceType("sensor");
    config.setInterfaceDescription("Returns JSON object containing pressure and temperature");
    return config;
  }

  @Override
  public int[] getAddressRange() {
    int i2cAddr = 0x5D;
    return new int[]{i2cAddr};
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy