| /*----------------------------------------------------------------------------*/ |
| /* Copyright (c) FIRST 2011. 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. */ |
| /*----------------------------------------------------------------------------*/ |
| |
| #include "SmartDashboard/SmartDashboard.h" |
| |
| #include "NetworkCommunication/UsageReporting.h" |
| #include "NamedSendable.h" |
| #include "WPIErrors.h" |
| #include "networktables/NetworkTable.h" |
| |
| ITable* SmartDashboard::m_table = NULL; |
| std::map<ITable *, Sendable *> SmartDashboard::m_tablesToData; |
| |
| void SmartDashboard::init(){ |
| m_table = NetworkTable::GetTable("SmartDashboard"); |
| } |
| |
| //TODO usage reporting |
| |
| /** |
| * Maps the specified key to the specified value in this table. |
| * The key can not be NULL. |
| * The value can be retrieved by calling the get method with a key that is equal to the original key. |
| * @param keyName the key |
| * @param value the value |
| */ |
| void SmartDashboard::PutData(std::string key, Sendable *data) |
| { |
| if (data == NULL) |
| { |
| //TODO wpi_setWPIErrorWithContext(NullParameter, "value"); |
| return; |
| } |
| ITable* dataTable = m_table->GetSubTable(key); |
| dataTable->PutString("~TYPE~", data->GetSmartDashboardType()); |
| data->InitTable(dataTable); |
| m_tablesToData[dataTable] = data; |
| } |
| |
| /** |
| * Maps the specified key (where the key is the name of the {@link SmartDashboardNamedData} |
| * to the specified value in this table. |
| * The value can be retrieved by calling the get method with a key that is equal to the original key. |
| * @param value the value |
| */ |
| void SmartDashboard::PutData(NamedSendable *value) |
| { |
| if (value == NULL) |
| { |
| //TODO wpi_setWPIErrorWithContext(NullParameter, "value"); |
| return; |
| } |
| PutData(value->GetName(), value); |
| } |
| |
| /** |
| * Returns the value at the specified key. |
| * @param keyName the key |
| * @return the value |
| */ |
| //TODO Sendable *SmartDashboard::GetData(std::string key) |
| /*{ |
| ITable* subtable = m_table->GetSubTable(keyName); |
| Sendable *data = m_tablesToData[subtable]; |
| if (data == NULL) |
| { |
| wpi_setWPIErrorWithContext(SmartDashboardMissingKey, keyName); |
| return NULL; |
| } |
| return data; |
| }*/ |
| |
| /** |
| * Maps the specified key to the specified complex value (such as an array) in this table. |
| * The key can not be NULL. |
| * The value can be retrieved by calling the RetrieveValue method with a key that is equal to the original key. |
| * @param keyName the key |
| * @param value the value |
| */ |
| void SmartDashboard::PutValue(std::string keyName, ComplexData& value) |
| { |
| m_table->PutValue(keyName, value); |
| } |
| |
| /** |
| * Retrieves the complex value (such as an array) in this table into the complex data object |
| * The key can not be NULL. |
| * @param keyName the key |
| * @param value the object to retrieve the value into |
| */ |
| void SmartDashboard::RetrieveValue(std::string keyName, ComplexData& value) |
| { |
| m_table->RetrieveValue(keyName, value); |
| } |
| |
| /** |
| * Maps the specified key to the specified value in this table. |
| * The key can not be NULL. |
| * The value can be retrieved by calling the get method with a key that is equal to the original key. |
| * @param keyName the key |
| * @param value the value |
| */ |
| void SmartDashboard::PutBoolean(std::string keyName, bool value) |
| { |
| m_table->PutBoolean(keyName, value); |
| } |
| |
| /** |
| * Returns the value at the specified key. |
| * @param keyName the key |
| * @return the value |
| */ |
| bool SmartDashboard::GetBoolean(std::string keyName) |
| { |
| return m_table->GetBoolean(keyName); |
| } |
| |
| /** |
| * Maps the specified key to the specified value in this table. |
| * The key can not be NULL. |
| * The value can be retrieved by calling the get method with a key that is equal to the original key. |
| * @param keyName the key |
| * @param value the value |
| */ |
| void SmartDashboard::PutNumber(std::string keyName, double value){ |
| m_table->PutNumber(keyName, value); |
| } |
| |
| /** |
| * Returns the value at the specified key. |
| * @param keyName the key |
| * @return the value |
| */ |
| double SmartDashboard::GetNumber(std::string keyName) |
| { |
| return m_table->GetNumber(keyName); |
| } |
| |
| /** |
| * Maps the specified key to the specified value in this table. |
| * Neither the key nor the value can be NULL. |
| * The value can be retrieved by calling the get method with a key that is equal to the original key. |
| * @param keyName the key |
| * @param value the value |
| */ |
| void SmartDashboard::PutString(std::string keyName, std::string value) |
| { |
| m_table->PutString(keyName, value); |
| } |
| |
| /** |
| * Returns the value at the specified key. |
| * @param keyName the key |
| * @param value the buffer to fill with the value |
| * @param valueLen the size of the buffer pointed to by value |
| * @return the length of the string |
| */ |
| int SmartDashboard::GetString(std::string keyName, char *outBuffer, unsigned int bufferLen){ |
| std::string value = m_table->GetString(keyName); |
| unsigned int i; |
| for(i = 0; i<bufferLen-1&&i<value.length(); ++i) |
| outBuffer[i] = (char)value.at(i); |
| outBuffer[i] = '\0'; |
| return i; |
| } |
| |
| |
| /** |
| * Returns the value at the specified key. |
| * @param keyName the key |
| * @return the value |
| */ |
| std::string SmartDashboard::GetString(std::string keyName) |
| { |
| return m_table->GetString(keyName); |
| } |