MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/peripheral/ICan.hpp

69 lines
2.4 KiB
C++
Raw Normal View History

/*
* ICan.hpp
*
* Created on: 12 May 2022
* Author: malyarenko
*/
#ifndef UMLIBRARY_PERIPHERAL_ICAN_HPP_
#define UMLIBRARY_PERIPHERAL_ICAN_HPP_
#include <stdint.h>
#include <cstddef>
namespace peripheral {
struct ICan {
public:
struct MessageObject {
enum Type {
Tx = 0x0, /** Transmit object */
TxRtr = 0x1, /** Transmit object with remote response */
Rx = 0x2, /** Receive object */
};
uint32_t id : 29;
uint32_t xtd : 1;
uint32_t type : 2;
uint32_t mask;
uint16_t size;
};
typedef uint16_t MailboxId;
typedef uint32_t CanFrameId;
typedef void (*RxCallback) (MailboxId mb_id,
CanFrameId can_id,
char * data,
uint16_t data_bytes,
void * param);
typedef void (*TxCallback) (MailboxId mb_id,
CanFrameId can_id,
void * param);
virtual void reset() = 0; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>?
virtual void disable() = 0; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
virtual void enable() = 0; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
virtual MailboxId allocMailbox( const MessageObject & msg_object, bool async ) = 0; /** @return Mailbox index [1:32], 0 on error*/
virtual void freeMailbox( MailboxId mb_id ) = 0;//!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
virtual bool isTxDone( MailboxId mb_id ) = 0; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
virtual bool isRxPending( MailboxId mb_id ) = 0; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
virtual bool transmit( MailboxId mb_id, const char * data, uint16_t data_bits ) = 0;
virtual bool transmit( MailboxId mb_id ) = 0; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
virtual bool write( MailboxId mb_id, const char * data, uint16_t data_bits ) = 0;
virtual bool read( MailboxId mb_id, char * buffer, std::size_t size, uint16_t * data_bits ) = 0;
virtual void setRxCallback( RxCallback usr_rx_callback, void * param ) = 0;
virtual void setTxCallback( TxCallback usr_tx_callback, void * param ) = 0;
};
} /* namespace peripheral */
#endif /* UMLIBRARY_PERIPHERAL_ICAN_HPP_ */