mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-21 01:01:43 +00:00
The HAL will remain untouched in order to maintain C-style compatibility. A few places in wpilibc were left as C-style strings, especially if special formatting (eg, elaborate uses of snprintf or sscanf) was being used. In general, const char* was changed to std::string. character buffers used for formatting were either untouched, changed to std::stringstream, or changed to std::string, depending on what was done with the buffer. Change-Id: I5e431ddf1cc4d9a6d534e1f21b16ea23be26e7f1
26 lines
873 B
C++
26 lines
873 B
C++
#include "HAL/HAL.hpp"
|
|
#include <atomic>
|
|
|
|
/**
|
|
* Create and launch a task.
|
|
* @param name The name of the task. "FRC_" will be prepended to the task name.
|
|
* @param function The address of the function to run as the new task.
|
|
* @param args A parameter pack of arguments to pass to the function.
|
|
* @param priority The VxWorks priority for the task.
|
|
* @param stackSize The size of the stack for the task
|
|
*/
|
|
template <class Function, class... Args>
|
|
Task::Task(const std::string& name, Function&& function, Args&&... args) {
|
|
m_taskName = "FRC_";
|
|
m_taskName += name;
|
|
|
|
std::cout << "[HAL] Starting task " << m_taskName << "..." << std::endl;
|
|
|
|
m_thread = std::thread(function, args...);
|
|
SetPriority(kDefaultPriority);
|
|
|
|
static std::atomic<int32_t> instances{0};
|
|
instances++;
|
|
HALReport(HALUsageReporting::kResourceType_Task, instances, 0, m_taskName.c_str());
|
|
}
|