mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
This is the changes made by Patrick Plenefisch converting the native code to use CMake and the CMake Maven Plugin, as opposed to the native Maven plugin. This is to allow for compatibility with newer versions of the GCC toolchain. All the cpp sources were moved from maven style directories to cpp style directories for CMake. Change-Id: I67f5e3608948f37c83b0990d232105a3784f8593
57 lines
2.0 KiB
C++
57 lines
2.0 KiB
C++
/*----------------------------------------------------------------------------*/
|
|
/* Copyright (c) FIRST 2008. All Rights Reserved. */
|
|
/* Open Source Software - may be modified and shared by FRC teams. The code */
|
|
/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
#ifndef RELAY_H_
|
|
#define RELAY_H_
|
|
|
|
#include "SensorBase.h"
|
|
#include "tables/ITableListener.h"
|
|
#include "LiveWindow/LiveWindowSendable.h"
|
|
#include "tables/ITable.h"
|
|
|
|
class DigitalModule;
|
|
|
|
/**
|
|
* Class for Spike style relay outputs.
|
|
* Relays are intended to be connected to spikes or similar relays. The relay channels controls
|
|
* a pair of pins that are either both off, one on, the other on, or both on. This translates into
|
|
* two spike outputs at 0v, one at 12v and one at 0v, one at 0v and the other at 12v, or two
|
|
* spike outputs at 12V. This allows off, full forward, or full reverse control of motors without
|
|
* variable speed. It also allows the two channels (forward and reverse) to be used independently
|
|
* for something that does not care about voltage polatiry (like a solenoid).
|
|
*/
|
|
class Relay : public SensorBase, public ITableListener, public LiveWindowSendable {
|
|
public:
|
|
typedef enum {kOff, kOn, kForward, kReverse} Value;
|
|
typedef enum {kBothDirections, kForwardOnly, kReverseOnly} Direction;
|
|
|
|
Relay(uint32_t channel, Direction direction = kBothDirections);
|
|
Relay(uint8_t moduleNumber, uint32_t channel, Direction direction = kBothDirections);
|
|
virtual ~Relay();
|
|
|
|
void Set(Value value);
|
|
Value Get();
|
|
|
|
void ValueChanged(ITable* source, const std::string& key, EntryValue value, bool isNew);
|
|
void UpdateTable();
|
|
void StartLiveWindowMode();
|
|
void StopLiveWindowMode();
|
|
std::string GetSmartDashboardType();
|
|
void InitTable(ITable *subTable);
|
|
ITable * GetTable();
|
|
|
|
ITable *m_table;
|
|
|
|
private:
|
|
void InitRelay(uint8_t moduleNumber);
|
|
|
|
uint32_t m_channel;
|
|
Direction m_direction;
|
|
DigitalModule *m_module;
|
|
};
|
|
|
|
#endif
|