/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ch.unizh.ini.jaer.chip.retina;

/**
 * Specifies tweaks that can be done to the parameters of a DVS sensor, for use
 * in defining user interfaces to control the biases.
 *
 * @author tobi
 */
public interface DVSTweaks {

    /**
     * PropertyChangeEvents that can be fired by implementations. The "new"
     * value is the new tweak value.
     */
    public static final String BANDWIDTH = "bandwidth", MAX_FIRING_RATE = "maxFiringRate", THRESHOLD = "threshold", ON_OFF_BALANCE = "onOffBalance";

    public void setBandwidthTweak(float val);

    public float getBandwidthTweak();

    public void setMaxFiringRateTweak(float val);

    public float getMaxFiringRateTweak();

    public void setThresholdTweak(float val);

    public float getThresholdTweak();

    public void setOnOffBalanceTweak(float val);

    public float getOnOffBalanceTweak();

    /**
     * Returns estimated ON event threshold in log base e units.
     * <p>
     * Theory is based on paper
     * <a href="https://ieeexplore.ieee.org/document/7962235">Temperature and
     * Parasitic Photocurrent Effects in Dynamic Vision Sensors, Y Nozaki, T
     * Delbruck. IEEE Trans. on Electron Devices, 2018</a>.
     *
     * @return ON threshold (positive value)
     */
    public float getOnThresholdLogE();

    /**
     * Returns estimated OFF event threshold in log base e units
     * <p>
     * Theory is based on paper
     * <a href="https://ieeexplore.ieee.org/document/7962235">Temperature and
     * Parasitic Photocurrent Effects in Dynamic Vision Sensors, Y Nozaki, T
     * Delbruck. IEEE Trans. on Electron Devices, 2018</a>.
     *
     * @return OFF threshold (negative value)
     */
    public float getOffThresholdLogE();

}

@@ -631,280 +631,773 @@
     
-public void setBandwidthTweak(float val);%0D%0A%0D%0A    public float getBandwidthTweak();%0D%0A%0D%0A    public void setMaxFiringRateTweak(float val);%0D%0A%0D%0A    public float getMaxFiringRateTweak();%0D%0A%0D%0A    public void setThresholdTweak(float val);%0D%0A%0D%0A    public float getThresholdTweak();%0D%0A
+/**%0D%0A     * Tweaks front end bandwidth, larger is higher bandwidth.%0D%0A     *%0D%0A     * @param val -1 to 1 range%0D%0A     */%0D%0A    public void setBandwidthTweak(float val);%0D%0A%0D%0A    public float getBandwidthTweak();%0D%0A%0D%0A    /**%0D%0A     * Tweaks max firing rate (refractory period), larger is higher firing rate.%0D%0A     *%0D%0A     * @param val -1 to 1 range%0D%0A     */%0D%0A    public void setMaxFiringRateTweak(float val);%0D%0A%0D%0A    public float getMaxFiringRateTweak();%0D%0A%0D%0A    /**%0D%0A     * Tweaks threshold, larger is higher threshold.%0D%0A     *%0D%0A     * @param val -1 to 1 range%0D%0A     */%0D%0A    public void setThresholdTweak(float val);%0D%0A%0D%0A    public float getThresholdTweak();%0D%0A%0D%0A    /**%0D%0A     * Tweaks on off balance, larger is more ON events.%0D%0A     *%0D%0A     * @param val -1 to 1 range%0D%0A     */
 %0D%0A  

add javadoc for interface