📄 dashboard.h
字号:
/*----------------------------------------------------------------------------*/
/* 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 __DASHBOARD_H__
#define __DASHBOARD_H__
#include "ErrorBase.h"
#include "NetworkCommunication/FRCComm.h"
#include <VxWorks.h>
#include <stack>
#include <vector>
/**
* Pack data into the "user data" field that gets sent to the dashboard laptop
* via the driver station.
*/
class Dashboard : public ErrorBase
{
// Can only be constructed by the DriverStation class.
friend class DriverStation;
friend class DashboardTest;
public:
enum Type {kI8, kI16, kI32, kU8, kU16, kU32, kFloat, kDouble, kBoolean, kString, kOther};
enum ComplexType {kArray, kCluster};
void AddI8(INT8 value);
void AddI16(INT16 value);
void AddI32(INT32 value);
void AddU8(UINT8 value);
void AddU16(UINT16 value);
void AddU32(UINT32 value);
void AddFloat(float value);
void AddDouble(double value);
void AddBoolean(bool value);
void AddString(char* value);
void AddString(char* value, INT32 length);
void AddArray(void);
void FinalizeArray(void);
void AddCluster(void);
void FinalizeCluster(void);
void Printf(const char *writeFmt, ...);
INT32 Finalize(void);
private:
Dashboard(char **userStatus);
virtual ~Dashboard();
static const INT32 kMaxDashboardDataSize = USER_STATUS_DATA_SIZE - sizeof(UINT32) * 3 - sizeof(UINT8); // 13 bytes needed for 3 size parameters and the sequence number
// Usage Guidelines...
DISALLOW_COPY_AND_ASSIGN(Dashboard);
bool ValidateAdd(INT32 size);
void AddedElement(Type type);
bool IsArrayRoot(void);
char **m_userStatus;
char *m_localBuffer;
char *m_localPrintBuffer;
char *m_packPtr;
std::vector<Type> m_expectedArrayElementType;
std::vector<INT32> m_arrayElementCount;
std::vector<INT32*> m_arraySizePtr;
std::stack<ComplexType> m_complexTypeStack;
SEM_ID m_printSemaphore;
UINT8 m_sequence;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -