001// Copyright (c) FIRST and other WPILib contributors. 002// Open Source Software; you can modify and/or share it under the terms of 003// the WPILib BSD license file in the root directory of this project. 004 005package edu.wpi.first.hal; 006 007/** 008 * DutyCycle HAL JNI functions. 009 * 010 * @see "DutyCycle.h" 011 */ 012public class DutyCycleJNI extends JNIWrapper { 013 /** 014 * Initialize a DutyCycle input. 015 * 016 * @param digitalSourceHandle the digital source to use (either a Digital Handle or a 017 * AnalogTrigger Handle) 018 * @param analogTriggerType the analog trigger type of the source if it is an analog trigger 019 * @return the created duty cycle handle 020 * @see "HAL_InitializeDutyCycle" 021 */ 022 public static native int initialize(int digitalSourceHandle, int analogTriggerType); 023 024 /** 025 * Free a DutyCycle. 026 * 027 * @param handle the duty cycle handle 028 * @see "HAL_FreeDutyCycle" 029 */ 030 public static native void free(int handle); 031 032 /** 033 * Get the frequency of the duty cycle signal. 034 * 035 * @param handle the duty cycle handle 036 * @return frequency in Hertz 037 * @see "HAL_GetDutyCycleFrequency" 038 */ 039 public static native int getFrequency(int handle); 040 041 /** 042 * Get the output ratio of the duty cycle signal. 043 * 044 * <p>0 means always low, 1 means always high. 045 * 046 * @param handle the duty cycle handle 047 * @return output ratio between 0 and 1 048 * @see "HAL_GetDutyCycleOutput" 049 */ 050 public static native double getOutput(int handle); 051 052 /** 053 * Get the raw high time of the duty cycle signal. 054 * 055 * @param handle the duty cycle handle 056 * @return high time of last pulse in nanoseconds 057 * @see "HAL_GetDutyCycleHighTime" 058 */ 059 public static native int getHighTime(int handle); 060 061 /** 062 * Get the scale factor of the output. 063 * 064 * <p>An output equal to this value is always high, and then linearly scales down to 0. Divide a 065 * raw result by this in order to get the percentage between 0 and 1. Used by DMA. 066 * 067 * @param handle the duty cycle handle 068 * @return the output scale factor 069 * @see "HAL_GetDutyCycleOutputScaleFactor" 070 */ 071 public static native int getOutputScaleFactor(int handle); 072 073 /** 074 * Get the FPGA index for the DutyCycle. 075 * 076 * @param handle the duty cycle handle 077 * @return the FPGA index 078 * @see "HAL_GetDutyCycleFPGAIndex" 079 */ 080 public static native int getFPGAIndex(int handle); 081 082 /** Utility class. */ 083 private DutyCycleJNI() {} 084}