Resurgence (PY2022)
Codebase for the Husky Robotics 2021-2022 rover Resurgence
Loading...
Searching...
No Matches
CAN.h
1#pragma once
2
3#include "../utils/scheduler.h"
4#include "../world_interface/data.h"
5#include "CANUtils.h"
6
7#include <functional>
8#include <optional>
9
10extern "C" {
11#include <HindsightCAN/CANPacket.h>
12}
13
18namespace can {
19
26
34void initCAN();
35
44void sendCANPacket(const CANPacket& packet);
45
58
69
82
92
99
113callbackid_t addDeviceTelemetryCallback(
114 deviceid_t id, telemtype_t telemType,
116 callback);
117
126
127} // namespace can
duration< int64_t, milli > milliseconds
Represents data measured using a sensor at a given time.
Definition data.h:136
Utilities for interacting with CAN devices.
Definition CAN.cpp:43
void unscheduleTelemetryPull(deviceid_t id, telemtype_t telemType)
Stop pulling the latest telemetry data from the given device.
Definition CAN.cpp:340
robot::types::DataPoint< telemetry_t > getDeviceTelemetry(deviceid_t id, telemtype_t telemType)
Get the latest telemetry from a CAN device.
Definition CAN.cpp:288
void sendCANPacket(const CANPacket &packet)
Send a CAN packet.
Definition CAN.cpp:266
void scheduleTelemetryPull(deviceid_t id, telemtype_t telemType, std::chrono::milliseconds period)
Periodically pull the latest telemetry data from the specified CAN device asychronously.
Definition CAN.cpp:318
void pullDeviceTelemetry(deviceid_t id, telemtype_t telemType)
Ping the given CAN device to send the given telemetry data.
Definition CAN.cpp:309
void unscheduleAllTelemetryPulls()
Stop pulling the latest telemetry data from all currently scheduled devices.
Definition CAN.cpp:354
void removeDeviceTelemetryCallback(callbackid_t id)
Remove a previously registered telemetry callback.
Definition CAN.cpp:380
std::tuple< deviceid_t, telemtype_t, uint32_t > callbackid_t
An ID for a telemetry callback.
Definition CAN.h:25
void initCAN()
Initialize the CAN interface.
Definition CAN.cpp:254
std::pair< devicegroup_t, deviceserial_t > deviceid_t
A unique identifier for a CAN device.
Definition CANUtils.h:74
telemtype_t
The type of telemetries that devices can report.
Definition CANUtils.h:36