mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-07-02 02:51:42 +00:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
02336fc478 | ||
|
|
c00848c060 | ||
|
|
738a1c015c |
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include <array>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@@ -40,7 +41,7 @@ class IndexedClassedHandleResource : public HandleBase {
|
|||||||
friend class IndexedClassedHandleResourceTest;
|
friend class IndexedClassedHandleResourceTest;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
IndexedClassedHandleResource();
|
IndexedClassedHandleResource() = default;
|
||||||
IndexedClassedHandleResource(const IndexedClassedHandleResource&) = delete;
|
IndexedClassedHandleResource(const IndexedClassedHandleResource&) = delete;
|
||||||
IndexedClassedHandleResource& operator=(const IndexedClassedHandleResource&) =
|
IndexedClassedHandleResource& operator=(const IndexedClassedHandleResource&) =
|
||||||
delete;
|
delete;
|
||||||
@@ -49,20 +50,13 @@ class IndexedClassedHandleResource : public HandleBase {
|
|||||||
int32_t* status);
|
int32_t* status);
|
||||||
std::shared_ptr<TStruct> Get(THandle handle);
|
std::shared_ptr<TStruct> Get(THandle handle);
|
||||||
void Free(THandle handle);
|
void Free(THandle handle);
|
||||||
|
void ResetHandles();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::array<std::shared_ptr<TStruct>[], size> m_structures;
|
std::array<std::shared_ptr<TStruct>, size> m_structures;
|
||||||
std::array<wpi::mutex[], size> m_handleMutexes;
|
std::array<wpi::mutex, size> m_handleMutexes;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename THandle, typename TStruct, int16_t size,
|
|
||||||
HAL_HandleEnum enumValue>
|
|
||||||
IndexedClassedHandleResource<THandle, TStruct, size,
|
|
||||||
enumValue>::IndexedClassedHandleResource() {
|
|
||||||
m_structures = std::make_unique<std::shared_ptr<TStruct>[]>(size);
|
|
||||||
m_handleMutexes = std::make_unique<wpi::mutex[]>(size);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename THandle, typename TStruct, int16_t size,
|
template <typename THandle, typename TStruct, int16_t size,
|
||||||
HAL_HandleEnum enumValue>
|
HAL_HandleEnum enumValue>
|
||||||
THandle
|
THandle
|
||||||
|
|||||||
28
hal/src/test/native/cpp/handles/HandleTests.cpp
Normal file
28
hal/src/test/native/cpp/handles/HandleTests.cpp
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/* Copyright (c) 2018 FIRST. 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 the root directory of */
|
||||||
|
/* the project. */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "HAL/HAL.h"
|
||||||
|
#include "HAL/handles/IndexedClassedHandleResource.h"
|
||||||
|
#include "gtest/gtest.h"
|
||||||
|
|
||||||
|
#define HAL_TestHandle HAL_Handle
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
class MyTestClass {};
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
namespace hal {
|
||||||
|
TEST(HandleTests, ClassedHandleTest) {
|
||||||
|
hal::IndexedClassedHandleResource<HAL_TestHandle, MyTestClass, 8,
|
||||||
|
HAL_HandleEnum::Vendor>
|
||||||
|
testClass;
|
||||||
|
int32_t status = 0;
|
||||||
|
testClass.Allocate(0, std::make_unique<MyTestClass>(), &status);
|
||||||
|
EXPECT_EQ(0, status);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace hal
|
||||||
@@ -556,7 +556,7 @@ public class PIDController extends SendableBase implements PIDInterface, Sendabl
|
|||||||
* @param continuous Set to true turns on continuous, false turns off continuous
|
* @param continuous Set to true turns on continuous, false turns off continuous
|
||||||
*/
|
*/
|
||||||
public void setContinuous(boolean continuous) {
|
public void setContinuous(boolean continuous) {
|
||||||
if (m_inputRange <= 0) {
|
if (continuous && m_inputRange <= 0) {
|
||||||
throw new RuntimeException("No input range set when calling setContinuous().");
|
throw new RuntimeException("No input range set when calling setContinuous().");
|
||||||
}
|
}
|
||||||
m_thisMutex.lock();
|
m_thisMutex.lock();
|
||||||
|
|||||||
@@ -15,13 +15,13 @@ public class MatchInfoData {
|
|||||||
* Stores the event name.
|
* Stores the event name.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("MemberName")
|
@SuppressWarnings("MemberName")
|
||||||
public String eventName;
|
public String eventName = "";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stores the game specific message.
|
* Stores the game specific message.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("MemberName")
|
@SuppressWarnings("MemberName")
|
||||||
public String gameSpecificMessage;
|
public String gameSpecificMessage = "";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stores the match number.
|
* Stores the match number.
|
||||||
|
|||||||
Reference in New Issue
Block a user