blob: c86ca8e15ecc90f7e09fd9f559c3a534908bee14 [file] [log] [blame]
Brian Silvermanf7f267a2017-02-04 16:16:08 -08001/*----------------------------------------------------------------------------*/
2/* Copyright (c) FIRST 2016-2017. All Rights Reserved. */
3/* Open Source Software - may be modified and shared by FRC teams. The code */
4/* must be accompanied by the FIRST BSD license file in the root directory of */
5/* the project. */
6/*----------------------------------------------------------------------------*/
7
8#pragma once
9
10#include <stdint.h>
11
12#include "HAL/AnalogTrigger.h"
13#include "HAL/Types.h"
14
15enum HAL_EncoderIndexingType : int32_t {
16 HAL_kResetWhileHigh,
17 HAL_kResetWhileLow,
18 HAL_kResetOnFallingEdge,
19 HAL_kResetOnRisingEdge
20};
21enum HAL_EncoderEncodingType : int32_t {
22 HAL_Encoder_k1X,
23 HAL_Encoder_k2X,
24 HAL_Encoder_k4X
25};
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30HAL_EncoderHandle HAL_InitializeEncoder(
31 HAL_Handle digitalSourceHandleA, HAL_AnalogTriggerType analogTriggerTypeA,
32 HAL_Handle digitalSourceHandleB, HAL_AnalogTriggerType analogTriggerTypeB,
33 HAL_Bool reverseDirection, HAL_EncoderEncodingType encodingType,
34 int32_t* status);
35void HAL_FreeEncoder(HAL_EncoderHandle encoderHandle, int32_t* status);
36int32_t HAL_GetEncoder(HAL_EncoderHandle encoderHandle, int32_t* status);
37int32_t HAL_GetEncoderRaw(HAL_EncoderHandle encoderHandle, int32_t* status);
38int32_t HAL_GetEncoderEncodingScale(HAL_EncoderHandle encoderHandle,
39 int32_t* status);
40void HAL_ResetEncoder(HAL_EncoderHandle encoderHandle, int32_t* status);
41double HAL_GetEncoderPeriod(HAL_EncoderHandle encoderHandle, int32_t* status);
42void HAL_SetEncoderMaxPeriod(HAL_EncoderHandle encoderHandle, double maxPeriod,
43 int32_t* status);
44HAL_Bool HAL_GetEncoderStopped(HAL_EncoderHandle encoderHandle,
45 int32_t* status);
46HAL_Bool HAL_GetEncoderDirection(HAL_EncoderHandle encoderHandle,
47 int32_t* status);
48double HAL_GetEncoderDistance(HAL_EncoderHandle encoderHandle, int32_t* status);
49double HAL_GetEncoderRate(HAL_EncoderHandle encoderHandle, int32_t* status);
50void HAL_SetEncoderMinRate(HAL_EncoderHandle encoderHandle, double minRate,
51 int32_t* status);
52void HAL_SetEncoderDistancePerPulse(HAL_EncoderHandle encoderHandle,
53 double distancePerPulse, int32_t* status);
54void HAL_SetEncoderReverseDirection(HAL_EncoderHandle encoderHandle,
55 HAL_Bool reverseDirection, int32_t* status);
56void HAL_SetEncoderSamplesToAverage(HAL_EncoderHandle encoderHandle,
57 int32_t samplesToAverage, int32_t* status);
58int32_t HAL_GetEncoderSamplesToAverage(HAL_EncoderHandle encoderHandle,
59 int32_t* status);
60
61void HAL_SetEncoderIndexSource(HAL_EncoderHandle encoderHandle,
62 HAL_Handle digitalSourceHandle,
63 HAL_AnalogTriggerType analogTriggerType,
64 HAL_EncoderIndexingType type, int32_t* status);
65
66int32_t HAL_GetEncoderFPGAIndex(HAL_EncoderHandle encoderHandle,
67 int32_t* status);
68
69double HAL_GetEncoderDecodingScaleFactor(HAL_EncoderHandle encoderHandle,
70 int32_t* status);
71
72double HAL_GetEncoderDistancePerPulse(HAL_EncoderHandle encoderHandle,
73 int32_t* status);
74
75HAL_EncoderEncodingType HAL_GetEncoderEncodingType(
76 HAL_EncoderHandle encoderHandle, int32_t* status);
77#ifdef __cplusplus
78}
79#endif