Syntax fixes

This commit is contained in:
@CarlWachter 2024-01-02 21:04:10 +01:00
parent 72395bd0c1
commit 090d325b10
2 changed files with 56 additions and 52 deletions

View File

@ -3,8 +3,7 @@
#include <sta/config.hpp> #include <sta/config.hpp>
//TODO UNCOMMENT THIS #ifdef STA_RTOS_CAN_BUS_ENABLE
//#ifdef STA_RTOS_CAN_BUS_ENABLE
#include <sta/tacos/thread.hpp> #include <sta/tacos/thread.hpp>
#include <sta/rtos/queue.hpp> #include <sta/rtos/queue.hpp>
@ -29,6 +28,9 @@ namespace sta
class CanBus : public TacosThread class CanBus : public TacosThread
{ {
public: public:
CanBus(CAN_HandleTypeDef * controller);
/** /**
* @brief Getter function for the singleton instance. * @brief Getter function for the singleton instance.
*/ */
@ -45,40 +47,42 @@ namespace sta
return _instance; return _instance;
} }
/** /**
* @brief Place data message in CAN driver TX queue. * @brief Place data message in CAN driver TX queue.
* *
* @param msg Message to transmit * @param msg Message to transmit
* @param timeout Timeout for placing message (0 = no wait, osWaitForever = blocking) * @param timeout Timeout for placing message (0 = no wait, osWaitForever = blocking)
* @return True if message was queued successfully * @return True if message was queued successfully
*/ */
bool queueCanBusMsg(const CanDataMsg & msg, uint32_t timeout); bool queueCanBusMsg(const CanDataMsg & msg, uint32_t timeout);
/** /**
* @brief Place system message in CAN driver TX queue. * @brief Place system message in CAN driver TX queue.
* *
* @param msg Message to transmit * @param msg Message to transmit
* @param timeout Timeout for placing message (0 = no wait, osWaitForever = blocking) * @param timeout Timeout for placing message (0 = no wait, osWaitForever = blocking)
* @return True if message was queued successfully * @return True if message was queued successfully
*/ */
bool queueCanBusMsg(const CanSysMsg & msg, uint32_t timeout); bool queueCanBusMsg(const CanSysMsg & msg, uint32_t timeout);
/** /**
* @brief Retrieve data message from CAN driver TX queue. * @brief Retrieve data message from CAN driver TX queue.
* *
* @param[out] msg Output address for retrieved message * @param[out] msg Output address for retrieved message
* @param timeout Timeout for retrieving message (0 = no wait, osWaitForever = blocking) * @param timeout Timeout for retrieving message (0 = no wait, osWaitForever = blocking)
* @return True if message was retrieved successfully * @return True if message was retrieved successfully
*/ */
bool getCanBusMsg(CanDataMsg * msg, uint32_t timeout); bool getCanBusMsg(CanDataMsg * msg, uint32_t timeout);
/** /**
* @brief Retrieve system message from CAN driver TX queue. * @brief Retrieve system message from CAN driver TX queue.
* *
* @param[out] msg Destination for retrieved message * @param[out] msg Destination for retrieved message
* @param timeout Timeout for retrieving message (0 = no wait, osWaitForever = blocking) * @param timeout Timeout for retrieving message (0 = no wait, osWaitForever = blocking)
* @return True if message was retrieved successfully * @return True if message was retrieved successfully
*/ */
bool getCanBusMsg(CanSysMsg * msg, uint32_t timeout); bool getCanBusMsg(CanSysMsg * msg, uint32_t timeout);
void init() override;
void func() override;
private: private:
static CanBus * _instance; static CanBus * _instance;
@ -100,17 +104,17 @@ namespace sta
RtosQueue<CanDataMsg> canBusDataQueue_; RtosQueue<CanDataMsg> canBusDataQueue_;
RtosQueue<CanDataMsg> canBusSysQueue_; RtosQueue<CanDataMsg> canBusSysQueue_;
CanDataMsg canBusDataQueueBuffer_[queueLength]; CanDataMsg canBusDataQueueBuffer_[STA_RTOS_CAN_BUS_QUEUE_LENGTH];
CanSysMsg canBusSysQueueBuffer_[queueLength]; CanSysMsg canBusSysQueueBuffer_[STA_RTOS_CAN_BUS_QUEUE_LENGTH];
uint32_t canBusStack[256]; uint32_t canBusStack[256];
sta::STM32CanController * canBusController_; sta::STM32CanController * canBusController_;
AlpakaCanBus canBus_; AlpakaCanBus canBus_;
} };
} /* namespace tacos */ } /* namespace tacos */
} /* namespace sta */ } /* namespace sta */
#endif /* STA_RTOS_CAN_BUS_ENABLE */ #endif /* STA_RTOS_CAN_BUS_ENABLE */
#endif /* INCLUDE_TACOS_CAN_BUS_HPP_ */ #endif /* INCLUDE_TACOS_CAN_BUS_HPP_ */

View File

@ -6,10 +6,10 @@ namespace sta
{ {
namespace tacos namespace tacos
{ {
CanBus::CanBus(STM32CanController * controller) CanBus::CanBus(CAN_HandleTypeDef * controller)
: TacosThread{"Can Bus", STA_TACOS_CAN_BUS_PRIORITY}, : TacosThread{"Can Bus", STA_TACOS_CAN_BUS_PRIORITY},
canBusController_{controller}, canBusController_(controller),
canSysDataQueue_{STA_RTOS_CAN_BUS_QUEUE_LENGTH}, canBusSysQueue_{STA_RTOS_CAN_BUS_QUEUE_LENGTH},
canBusDataQueue_{STA_RTOS_CAN_BUS_QUEUE_LENGTH}, canBusDataQueue_{STA_RTOS_CAN_BUS_QUEUE_LENGTH},
canBus_{&canBusController_, HAL_GetTick, dummy::handleSysMessage, dummy::handleDataMessage} canBus_{&canBusController_, HAL_GetTick, dummy::handleSysMessage, dummy::handleDataMessage}
{ {
@ -17,7 +17,7 @@ namespace sta
void CanBus::init() void CanBus::init()
{ {
canBusController_.start(); canBusController_->start();
} }
void CanBus::func() void CanBus::func()
@ -32,7 +32,7 @@ namespace sta
{ {
// Take messages from queue until empty // Take messages from queue until empty
CanSysMsg msg; CanSysMsg msg;
while (rtos::getCanBusMsg(&msg, 0)) while (CanBus::_instance->getCanBusMsg(&msg, 0))
{ {
canBus_.send(msg); canBus_.send(msg);
} }
@ -42,7 +42,7 @@ namespace sta
{ {
// Take messages from queue until empty // Take messages from queue until empty
CanDataMsg msg; CanDataMsg msg;
while (rtos::getCanBusMsg(&msg, 0)) while (CanBus::_instance->getCanBusMsg(&msg, 0))
{ {
canBus_.send(msg); canBus_.send(msg);
} }
@ -62,15 +62,15 @@ namespace sta
} }
// Process ISOTP transmissions // Process ISOTP transmissions
canBus.processTx(); canBus_.processTx();
} }
bool CanBus::queueCanBusMsg(const CanDataMsg & msg, uint32_t timeout) bool CanBus::queueCanBusMsg(const CanDataMsg& msg, uint32_t timeout)
{ {
STA_ASSERT((msg.header.sid & STA_CAN_SID_SYS_BITS) == 0); STA_ASSERT((msg.header.sid & STA_CAN_SID_SYS_BITS) == 0);
STA_ASSERT(msg.header.payloadLength <= sizeof(msg.payload)); STA_ASSERT(msg.header.payloadLength <= sizeof(msg.payload));
if (canBusDataQueue_.put(&msg, timeout)) if (canBusDataQueue_.put(msg, timeout))
{ {
// Signal thread // Signal thread
notify(STA_RTOS_CAN_FLAG_DATA_QUEUED); notify(STA_RTOS_CAN_FLAG_DATA_QUEUED);
@ -82,11 +82,11 @@ namespace sta
} }
} }
bool CanBus::queueCanBusMsg(const CanSysMsg & msg, uint32_t timeout) bool CanBus::queueCanBusMsg(const CanSysMsg& msg, uint32_t timeout)
{ {
STA_ASSERT((msg.header.sid & ~STA_CAN_SID_SYS_BITS) == 0); STA_ASSERT((msg.header.sid & ~STA_CAN_SID_SYS_BITS) == 0);
if (canBusSysQueue_.put(&msg, timeout)) if (canBusSysQueue_.put(msg, timeout))
{ {
// Signal thread // Signal thread
notify(STA_RTOS_CAN_FLAG_SYS_QUEUED); notify(STA_RTOS_CAN_FLAG_SYS_QUEUED);
@ -101,13 +101,13 @@ namespace sta
bool CanBus::getCanBusMsg(CanDataMsg * msg, uint32_t timeout) bool CanBus::getCanBusMsg(CanDataMsg * msg, uint32_t timeout)
{ {
return (canBusDataQueueBuffer_.get(msg, timeout)); return (canBusDataQueue_.get(msg, timeout));
} }
bool CanBus::getCanBusMsg(CanSysMsg * msg, uint32_t timeout) bool CanBus::getCanBusMsg(CanSysMsg * msg, uint32_t timeout)
{ {
return (canBusSysQueueBuffer_.get(msg, timeout)); return (canBusSysQueue_.get(msg, timeout));
} }
} /* namespace tacos */ } /* namespace tacos */
} /* namespace sta */ } /* namespace sta */