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

com.yoctopuce.YoctoAPI.YLongitude Maven / Gradle / Ivy

There is a newer version: 2.0.61813
Show newest version
/*
 *
 *  $Id: YLongitude.java 39658 2020-03-12 15:36:29Z seb $
 *
 *  Implements FindLongitude(), the high-level API for Longitude functions
 *
 *  - - - - - - - - - License information: - - - - - - - - -
 *
 *  Copyright (C) 2011 and beyond by Yoctopuce Sarl, Switzerland.
 *
 *  Yoctopuce Sarl (hereafter Licensor) grants to you a perpetual
 *  non-exclusive license to use, modify, copy and integrate this
 *  file into your software for the sole purpose of interfacing
 *  with Yoctopuce products.
 *
 *  You may reproduce and distribute copies of this file in
 *  source or object form, as long as the sole purpose of this
 *  code is to interface with Yoctopuce products. You must retain
 *  this notice in the distributed source file.
 *
 *  You should refer to Yoctopuce General Terms and Conditions
 *  for additional information regarding your rights and
 *  obligations.
 *
 *  THE SOFTWARE AND DOCUMENTATION ARE PROVIDED 'AS IS' WITHOUT
 *  WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
 *  WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS
 *  FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO
 *  EVENT SHALL LICENSOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
 *  INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA,
 *  COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
 *  SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
 *  LIMITED TO ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR
 *  CONTRIBUTION, OR OTHER SIMILAR COSTS, WHETHER ASSERTED ON THE
 *  BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE), BREACH OF
 *  WARRANTY, OR OTHERWISE.
 *
 */

package com.yoctopuce.YoctoAPI;

//--- (YLongitude return codes)
//--- (end of YLongitude return codes)
//--- (YLongitude yapiwrapper)
//--- (end of YLongitude yapiwrapper)
//--- (YLongitude class start)
/**
 * YLongitude Class: longitude sensor control interface, available for instance in the Yocto-GPS-V2
 *
 * The YLongitude class allows you to read and configure Yoctopuce longitude sensors.
 * It inherits from YSensor class the core functions to read measurements,
 * to register callback functions, and to access the autonomous datalogger.
 */
@SuppressWarnings({"UnusedDeclaration", "UnusedAssignment"})
public class YLongitude extends YSensor
{
//--- (end of YLongitude class start)
//--- (YLongitude definitions)
    protected UpdateCallback _valueCallbackLongitude = null;
    protected TimedReportCallback _timedReportCallbackLongitude = null;

    /**
     * Deprecated UpdateCallback for Longitude
     */
    public interface UpdateCallback
    {
        /**
         *
         * @param function      : the function object of which the value has changed
         * @param functionValue : the character string describing the new advertised value
         */
        void yNewValue(YLongitude function, String functionValue);
    }

    /**
     * TimedReportCallback for Longitude
     */
    public interface TimedReportCallback
    {
        /**
         *
         * @param function : the function object of which the value has changed
         * @param measure  : measure
         */
        void timedReportCallback(YLongitude  function, YMeasure measure);
    }
    //--- (end of YLongitude definitions)


    /**
     *
     * @param func : functionid
     */
    protected YLongitude(YAPIContext ctx, String func)
    {
        super(ctx, func);
        _className = "Longitude";
        //--- (YLongitude attributes initialization)
        //--- (end of YLongitude attributes initialization)
    }

    /**
     *
     * @param func : functionid
     */
    protected YLongitude(String func)
    {
        this(YAPI.GetYCtx(true), func);
    }

    //--- (YLongitude implementation)
    @SuppressWarnings("EmptyMethod")
    @Override
    protected void  _parseAttr(YJSONObject json_val) throws Exception
    {
        super._parseAttr(json_val);
    }

    /**
     * Retrieves a longitude sensor for a given identifier.
     * The identifier can be specified using several formats:
     * 
    *
  • FunctionLogicalName
  • *
  • ModuleSerialNumber.FunctionIdentifier
  • *
  • ModuleSerialNumber.FunctionLogicalName
  • *
  • ModuleLogicalName.FunctionIdentifier
  • *
  • ModuleLogicalName.FunctionLogicalName
  • *
* * This function does not require that the longitude sensor is online at the time * it is invoked. The returned object is nevertheless valid. * Use the method YLongitude.isOnline() to test if the longitude sensor is * indeed online at a given time. In case of ambiguity when looking for * a longitude sensor by logical name, no error is notified: the first instance * found is returned. The search is performed first by hardware name, * then by logical name. * * If a call to this object's is_online() method returns FALSE although * you are certain that the matching device is plugged, make sure that you did * call registerHub() at application initialization time. * * @param func : a string that uniquely characterizes the longitude sensor, for instance * YGNSSMK2.longitude. * * @return a YLongitude object allowing you to drive the longitude sensor. */ public static YLongitude FindLongitude(String func) { YLongitude obj; YAPIContext ctx = YAPI.GetYCtx(true); synchronized (ctx._functionCacheLock) { obj = (YLongitude) YFunction._FindFromCache("Longitude", func); if (obj == null) { obj = new YLongitude(func); YFunction._AddToCache("Longitude", func, obj); } } return obj; } /** * Retrieves a longitude sensor for a given identifier in a YAPI context. * The identifier can be specified using several formats: *
    *
  • FunctionLogicalName
  • *
  • ModuleSerialNumber.FunctionIdentifier
  • *
  • ModuleSerialNumber.FunctionLogicalName
  • *
  • ModuleLogicalName.FunctionIdentifier
  • *
  • ModuleLogicalName.FunctionLogicalName
  • *
* * This function does not require that the longitude sensor is online at the time * it is invoked. The returned object is nevertheless valid. * Use the method YLongitude.isOnline() to test if the longitude sensor is * indeed online at a given time. In case of ambiguity when looking for * a longitude sensor by logical name, no error is notified: the first instance * found is returned. The search is performed first by hardware name, * then by logical name. * * @param yctx : a YAPI context * @param func : a string that uniquely characterizes the longitude sensor, for instance * YGNSSMK2.longitude. * * @return a YLongitude object allowing you to drive the longitude sensor. */ public static YLongitude FindLongitudeInContext(YAPIContext yctx,String func) { YLongitude obj; synchronized (yctx._functionCacheLock) { obj = (YLongitude) YFunction._FindFromCacheInContext(yctx, "Longitude", func); if (obj == null) { obj = new YLongitude(yctx, func); YFunction._AddToCache("Longitude", func, obj); } } return obj; } /** * Registers the callback function that is invoked on every change of advertised value. * The callback is invoked only during the execution of ySleep or yHandleEvents. * This provides control over the time when the callback is triggered. For good responsiveness, remember to call * one of these two functions periodically. To unregister a callback, pass a null pointer as argument. * * @param callback : the callback function to call, or a null pointer. The callback function should take two * arguments: the function object of which the value has changed, and the character string describing * the new advertised value. * */ public int registerValueCallback(UpdateCallback callback) { String val; if (callback != null) { YFunction._UpdateValueCallbackList(this, true); } else { YFunction._UpdateValueCallbackList(this, false); } _valueCallbackLongitude = callback; // Immediately invoke value callback with current value if (callback != null && isOnline()) { val = _advertisedValue; if (!(val.equals(""))) { _invokeValueCallback(val); } } return 0; } @Override public int _invokeValueCallback(String value) { if (_valueCallbackLongitude != null) { _valueCallbackLongitude.yNewValue(this, value); } else { super._invokeValueCallback(value); } return 0; } /** * Registers the callback function that is invoked on every periodic timed notification. * The callback is invoked only during the execution of ySleep or yHandleEvents. * This provides control over the time when the callback is triggered. For good responsiveness, remember to call * one of these two functions periodically. To unregister a callback, pass a null pointer as argument. * * @param callback : the callback function to call, or a null pointer. The callback function should take two * arguments: the function object of which the value has changed, and an YMeasure object describing * the new advertised value. * */ public int registerTimedReportCallback(TimedReportCallback callback) { YSensor sensor; sensor = this; if (callback != null) { YFunction._UpdateTimedReportCallbackList(sensor, true); } else { YFunction._UpdateTimedReportCallbackList(sensor, false); } _timedReportCallbackLongitude = callback; return 0; } @Override public int _invokeTimedReportCallback(YMeasure value) { if (_timedReportCallbackLongitude != null) { _timedReportCallbackLongitude.timedReportCallback(this, value); } else { super._invokeTimedReportCallback(value); } return 0; } /** * Continues the enumeration of longitude sensors started using yFirstLongitude(). * Caution: You can't make any assumption about the returned longitude sensors order. * If you want to find a specific a longitude sensor, use Longitude.findLongitude() * and a hardwareID or a logical name. * * @return a pointer to a YLongitude object, corresponding to * a longitude sensor currently online, or a null pointer * if there are no more longitude sensors to enumerate. */ public YLongitude nextLongitude() { String next_hwid; try { String hwid = _yapi._yHash.resolveHwID(_className, _func); next_hwid = _yapi._yHash.getNextHardwareId(_className, hwid); } catch (YAPI_Exception ignored) { next_hwid = null; } if(next_hwid == null) return null; return FindLongitudeInContext(_yapi, next_hwid); } /** * Starts the enumeration of longitude sensors currently accessible. * Use the method YLongitude.nextLongitude() to iterate on * next longitude sensors. * * @return a pointer to a YLongitude object, corresponding to * the first longitude sensor currently online, or a null pointer * if there are none. */ public static YLongitude FirstLongitude() { YAPIContext yctx = YAPI.GetYCtx(false); if (yctx == null) return null; String next_hwid = yctx._yHash.getFirstHardwareId("Longitude"); if (next_hwid == null) return null; return FindLongitudeInContext(yctx, next_hwid); } /** * Starts the enumeration of longitude sensors currently accessible. * Use the method YLongitude.nextLongitude() to iterate on * next longitude sensors. * * @param yctx : a YAPI context. * * @return a pointer to a YLongitude object, corresponding to * the first longitude sensor currently online, or a null pointer * if there are none. */ public static YLongitude FirstLongitudeInContext(YAPIContext yctx) { String next_hwid = yctx._yHash.getFirstHardwareId("Longitude"); if (next_hwid == null) return null; return FindLongitudeInContext(yctx, next_hwid); } //--- (end of YLongitude implementation) }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy