This is the latest WPILib src, VisionSample2013, cRIO image, ... pulled down from firstforge.wpi.edu.
There might be risks in using the top of tree rather than an official release, but the commit messages do mention fixes for some deadlocks and race conditions.
git-svn-id: https://robotics.mvla.net/svn/frc971/2013/trunk/src@4066 f308d9b7-e957-4cde-b6ac-9a88185e7312
diff --git a/azaleasource/WPILibCProgramming/trunk/WPILib/DriverStationLCD.h b/azaleasource/WPILibCProgramming/trunk/WPILib/DriverStationLCD.h
new file mode 100644
index 0000000..d7f9ee9
--- /dev/null
+++ b/azaleasource/WPILibCProgramming/trunk/WPILib/DriverStationLCD.h
@@ -0,0 +1,52 @@
+/*----------------------------------------------------------------------------*/
+/* 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 __DRIVER_STATION_LCD_H__
+#define __DRIVER_STATION_LCD_H__
+
+#include "SensorBase.h"
+
+/**
+ * Provide access to "LCD" on the Driver Station.
+ * This is the Messages box on the DS Operation tab.
+ *
+ * Buffer the printed data locally and then send it
+ * when UpdateLCD is called.
+ */
+class DriverStationLCD : public SensorBase
+{
+public:
+ static const UINT32 kSyncTimeout_ms = 20;
+ static const UINT16 kFullDisplayTextCommand = 0x9FFF;
+ static const INT32 kLineLength = 21;
+ static const INT32 kNumLines = 6;
+ enum Line {kMain_Line6=0, kUser_Line1=0, kUser_Line2=1, kUser_Line3=2, kUser_Line4=3, kUser_Line5=4, kUser_Line6=5};
+
+ virtual ~DriverStationLCD();
+ static DriverStationLCD *GetInstance();
+
+ void UpdateLCD();
+ void Printf(Line line, INT32 startingColumn, const char *writeFmt, ...);
+ void VPrintf(Line line, INT32 startingColumn, const char *writeFmt, va_list args);
+ void PrintfLine(Line line, const char *writeFmt, ...);
+ void VPrintfLine(Line line, const char *writeFmt, va_list args);
+
+ void Clear();
+
+protected:
+ DriverStationLCD();
+
+private:
+ static void InitTask(DriverStationLCD *ds);
+ static DriverStationLCD *m_instance;
+ DISALLOW_COPY_AND_ASSIGN(DriverStationLCD);
+
+ char *m_textBuffer;
+ SEM_ID m_textBufferSemaphore;
+};
+
+#endif
+