mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-07-05 03:21:42 +00:00
Initial checkin of unified hierarchy of WPILib 2015
This commit is contained in:
83
wpilibc/src/main/include/RobotBase.h
Normal file
83
wpilibc/src/main/include/RobotBase.h
Normal file
@@ -0,0 +1,83 @@
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* 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 ROBOT_H_
|
||||
#define ROBOT_H_
|
||||
|
||||
#include "Base.h"
|
||||
#include "Task.h"
|
||||
#include "Watchdog.h"
|
||||
|
||||
class DriverStation;
|
||||
|
||||
#ifdef __vxworks
|
||||
#define START_ROBOT_CLASS(_ClassName_) \
|
||||
RobotBase *FRC_userClassFactory() \
|
||||
{ \
|
||||
cout << "Instantiating " #_ClassName_ "...\n";\
|
||||
RobotBase* rb= new _ClassName_();\
|
||||
cout << "...Instantiated " #_ClassName_ "\n";\
|
||||
return rb;\
|
||||
} \
|
||||
extern "C" { \
|
||||
int32_t FRC_UserProgram_StartupLibraryInit() \
|
||||
{ \
|
||||
RobotBase::startRobotTask((FUNCPTR)FRC_userClassFactory); \
|
||||
return 0; \
|
||||
} \
|
||||
}
|
||||
#else
|
||||
#define START_ROBOT_CLASS(_ClassName_) \
|
||||
int main() \
|
||||
{ \
|
||||
FRC_NetworkCommunication_Reserve(); \
|
||||
RobotBase* robot = new _ClassName_(); \
|
||||
robot->StartCompetition(); \
|
||||
return 0; \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Implement a Robot Program framework.
|
||||
* The RobotBase class is intended to be subclassed by a user creating a robot program.
|
||||
* Overridden Autonomous() and OperatorControl() methods are called at the appropriate time
|
||||
* as the match proceeds. In the current implementation, the Autonomous code will run to
|
||||
* completion before the OperatorControl code could start. In the future the Autonomous code
|
||||
* might be spawned as a task, then killed at the end of the Autonomous period.
|
||||
*/
|
||||
class RobotBase {
|
||||
friend class RobotDeleter;
|
||||
public:
|
||||
static RobotBase &getInstance();
|
||||
static void setInstance(RobotBase* robot);
|
||||
|
||||
bool IsEnabled();
|
||||
bool IsDisabled();
|
||||
bool IsAutonomous();
|
||||
bool IsOperatorControl();
|
||||
bool IsTest();
|
||||
bool IsSystemActive();
|
||||
bool IsNewDataAvailable();
|
||||
Watchdog &GetWatchdog();
|
||||
static void startRobotTask(FUNCPTR factory);
|
||||
static void robotTask(FUNCPTR factory, Task *task);
|
||||
virtual void StartCompetition() = 0;
|
||||
|
||||
protected:
|
||||
virtual ~RobotBase();
|
||||
RobotBase();
|
||||
|
||||
Task *m_task;
|
||||
Watchdog m_watchdog;
|
||||
DriverStation *m_ds;
|
||||
|
||||
private:
|
||||
static RobotBase *m_instance;
|
||||
DISALLOW_COPY_AND_ASSIGN(RobotBase);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user