Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
added wrapper for other CANInterface functions
  • Loading branch information
upadhyaydhruv committed Feb 14, 2022
commit a0d658b097df214ab50e7c404375c809acef9718
1 change: 1 addition & 0 deletions rover-apps/arm_2021/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ target_link_libraries(arm_2021
CurrentSensor
#common-modules
WatchdogModule
CANDriverModule
#Other
uwrt-mars-rover-hw-bridge
Logger
Expand Down
4 changes: 4 additions & 0 deletions rover-apps/arm_2021/include/AppConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@

#include "Module.h"
#include "WatchdogModule.h"
#include "CANDriverModule.h"
#include "CANConfig.h"
#include "hw_bridge.h"
#include "CANInterface.h"

WatchdogModule arm_watchdog;

Expand Down
1 change: 1 addition & 0 deletions rover-apps/common/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ target_include_directories(CANDriverModule PUBLIC include)
target_link_libraries(CANDriverModule
PRIVATE
CANInterface
CANMsg
mbed-os
)

21 changes: 21 additions & 0 deletions rover-apps/common/include/CANDriverModule.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,27 @@ class CANDriverModule final : public Module {
void periodic_100ms(void) override;
void periodic_10ms(void) override;
void periodic_1ms(void) override;
void rxPostman(void);
bool sendOneShotMessage(CANMsg &msg, Kernel::Clock::duration_u32 timeout);

// Update a TX CAN signal
bool setTXSignalValue(HWBRIDGE::CANID msgID, HWBRIDGE::CANSIGNAL signalName, HWBRIDGE::CANSignalValue_t signalValue);

// Read a RX CAN signal
bool getRXSignalValue(HWBRIDGE::CANID msgID, HWBRIDGE::CANSIGNAL signalName, HWBRIDGE::CANSignalValue_t &signalValue);

// Set CAN bus hw filter
bool setFilter(HWBRIDGE::CANFILTER filter, CANFormat format = CANStandard,
uint16_t mask = HWBRIDGE::ROVER_CANID_FILTER_MASK, int handle = 0);

// For diagnostic purposes
uint32_t getNumStreamedMsgsReceived(void);
uint32_t getNumOneShotMsgsReceived(void);
uint32_t getNumStreamedMsgsSent(void);
uint32_t getNumOneShotMsgsSent(void);

uint16_t getNumCANRXFaults(void);
uint16_t getNumCANTXFaults(void);

private:
CANInterface interface;
Expand Down
50 changes: 49 additions & 1 deletion rover-apps/common/src/CANDriverModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,52 @@ void CANDriverModule::periodic_10ms(void) {

// These functions need to be called every 100 Hz (10ms)
interface.txProcessorPeriodic();
}
}

void CANDriverModule::rxPostman(void) {
interface.rxPostman();
}

bool CANDriverModule::sendOneShotMessage(CANMsg &msg, Kernel::Clock::duration_u32 timeout) {
return interface.sendOneShotMessage(msg, timeout);
}

bool CANDriverModule::setTXSignalValue(HWBRIDGE::CANID msgID, HWBRIDGE::CANSIGNAL signalName,
HWBRIDGE::CANSignalValue_t signalValue) {
return interface.setTXSignalValue(msgID, signalName, signalValue);
}

bool CANDriverModule::getRXSignalValue(HWBRIDGE::CANID msgID, HWBRIDGE::CANSIGNAL signalName, HWBRIDGE::CANSignalValue_t &signalValue) {
return interface.getRXSignalValue(msgID, signalName, signalValue);
}

bool CANDriverModule::setFilter(HWBRIDGE::CANFILTER filter, CANFormat format = CANStandard,
uint16_t mask = HWBRIDGE::ROVER_CANID_FILTER_MASK, int handle = 0) {
return interface.setFilter(filter, format, mask, handle);
}

uint32_t CANDriverModule::getNumStreamedMsgsReceived(void) {
return interface.getNumStreamedMsgsReceived();
}

uint32_t CANDriverModule::getNumOneShotMsgsReceived(void) {
return interface.getNumOneShotMsgsReceived();
}

uint32_t CANDriverModule::getNumStreamedMsgsSent(void) {
return interface.getNumStreamedMsgsSent();
}

uint32_t CANDriverModule::getNumOneShotMsgsSent(void) {
return interface.getNumOneShotMsgsSent();
}

uint16_t CANDriverModule::getNumCANRXFaults(void) {
return interface.getNumCANRXFaults();
}

uint16_t CANDriverModule::getNumCANTXFaults(void) {
return interface.getNumCANTXFaults();
}