blob: 2aa5e43edead3a5a1a4171bcbdb56b835ae64ce0 [file] [log] [blame]
Brian Silverman26e4e522015-12-17 01:56:40 -05001#pragma once
2
3#include <stdint.h>
4
5enum AnalogTriggerType
6{
7 kInWindow = 0,
8 kState = 1,
9 kRisingPulse = 2,
10 kFallingPulse = 3
11};
12
13extern "C"
14{
15 // Analog output functions
16 void* initializeAnalogOutputPort(void* port_pointer, int32_t *status);
17 void freeAnalogOutputPort(void* analog_port_pointer);
18 void setAnalogOutput(void* analog_port_pointer, double voltage, int32_t *status);
19 double getAnalogOutput(void* analog_port_pointer, int32_t *status);
20 bool checkAnalogOutputChannel(uint32_t pin);
21
22 // Analog input functions
23 void* initializeAnalogInputPort(void* port_pointer, int32_t *status);
24 void freeAnalogInputPort(void* analog_port_pointer);
25 bool checkAnalogModule(uint8_t module);
26 bool checkAnalogInputChannel(uint32_t pin);
27
28 void setAnalogSampleRate(double samplesPerSecond, int32_t *status);
29 float getAnalogSampleRate(int32_t *status);
30 void setAnalogAverageBits(void* analog_port_pointer, uint32_t bits, int32_t *status);
31 uint32_t getAnalogAverageBits(void* analog_port_pointer, int32_t *status);
32 void setAnalogOversampleBits(void* analog_port_pointer, uint32_t bits, int32_t *status);
33 uint32_t getAnalogOversampleBits(void* analog_port_pointer, int32_t *status);
34 int16_t getAnalogValue(void* analog_port_pointer, int32_t *status);
35 int32_t getAnalogAverageValue(void* analog_port_pointer, int32_t *status);
36 int32_t getAnalogVoltsToValue(void* analog_port_pointer, double voltage, int32_t *status);
37 float getAnalogVoltage(void* analog_port_pointer, int32_t *status);
38 float getAnalogAverageVoltage(void* analog_port_pointer, int32_t *status);
39 uint32_t getAnalogLSBWeight(void* analog_port_pointer, int32_t *status);
40 int32_t getAnalogOffset(void* analog_port_pointer, int32_t *status);
41
42 bool isAccumulatorChannel(void* analog_port_pointer, int32_t *status);
43 void initAccumulator(void* analog_port_pointer, int32_t *status);
44 void resetAccumulator(void* analog_port_pointer, int32_t *status);
45 void setAccumulatorCenter(void* analog_port_pointer, int32_t center, int32_t *status);
46 void setAccumulatorDeadband(void* analog_port_pointer, int32_t deadband, int32_t *status);
47 int64_t getAccumulatorValue(void* analog_port_pointer, int32_t *status);
48 uint32_t getAccumulatorCount(void* analog_port_pointer, int32_t *status);
49 void getAccumulatorOutput(void* analog_port_pointer, int64_t *value, uint32_t *count,
50 int32_t *status);
51
52 void* initializeAnalogTrigger(void* port_pointer, uint32_t *index, int32_t *status);
53 void cleanAnalogTrigger(void* analog_trigger_pointer, int32_t *status);
54 void setAnalogTriggerLimitsRaw(void* analog_trigger_pointer, int32_t lower, int32_t upper,
55 int32_t *status);
56 void setAnalogTriggerLimitsVoltage(void* analog_trigger_pointer, double lower, double upper,
57 int32_t *status);
58 void setAnalogTriggerAveraged(void* analog_trigger_pointer, bool useAveragedValue,
59 int32_t *status);
60 void setAnalogTriggerFiltered(void* analog_trigger_pointer, bool useFilteredValue,
61 int32_t *status);
62 bool getAnalogTriggerInWindow(void* analog_trigger_pointer, int32_t *status);
63 bool getAnalogTriggerTriggerState(void* analog_trigger_pointer, int32_t *status);
64 bool getAnalogTriggerOutput(void* analog_trigger_pointer, AnalogTriggerType type,
65 int32_t *status);
66
67 //// Float JNA Hack
68 // Float
69 int getAnalogSampleRateIntHack(int32_t *status);
70 int getAnalogVoltageIntHack(void* analog_port_pointer, int32_t *status);
71 int getAnalogAverageVoltageIntHack(void* analog_port_pointer, int32_t *status);
72
73 // Doubles
74 void setAnalogSampleRateIntHack(int samplesPerSecond, int32_t *status);
75 int32_t getAnalogVoltsToValueIntHack(void* analog_port_pointer, int voltage, int32_t *status);
76 void setAnalogTriggerLimitsVoltageIntHack(void* analog_trigger_pointer, int lower, int upper,
77 int32_t *status);
78}