File MM2.h |
||
- | ||
CONTENTS
TECHNOLOGY
|
/************************************************************************** MODULE: MM2 CONTAINS: MicroMessaging Layer 2 Driver Interface Definitions COPYRIGHT: Embedded Systems Academy, Inc. 2003 See www.MicroMessaging.com This software was written in accordance to the guidelines at www.esacademy.com/software/softwarestyleguide.pdf DISCLAIM: Read and understand our disclaimer before using this code! www.esacademy.com/disclaim.htm LICENSE: General Public License as specified by GNU VERSION: 0.75, Pf 23-SEP-03 --------------------------------------------------------------------------- HISTORY: 0.75, Pf 23-SEP-03, First Published Version ***************************************************************************/ /************************************************************************** DEFINES TO CONTROL THE OPERATION OF THE DRIVER **************************************************************************/ // This defines the number of bits a message identifier has. // Possible values are 6 (LIN), 8 (default) or 11 (CANopen) #define NR_OF_MESSAGE_ID_BITS 8 // The following definition controls the network media arbitration // method used. // 1: Multi-Master (as available in CAN and I2C), nodes can access the // network at any time. // 2: Master-Polling, nodes are individually polled with a poll message // containing the node ID of the node currently polled. // POLL_MSG_ID defines the message ID of the poll message used. #define NET_ARBITRATION 1 #define POLL_MSG_ID 0x20 // The number of transmit and receive data channels is selectable in order // to be able to optimize the code #define NR_OF_TX_CHANNELS 2 #define NR_OF_RX_CHANNELS 2 // Defined Service Responses (CANopen SDO responses) #define DEVICETYPE 0x00030191L // [1000,00] #define VENDORID 0x01455341L // [1018,01] #define PRODUCTID 0x00020012L // [1018,02] #define REVISION 0x00010005L // [1018,03] /************************************************************************** GLOBAL TYPE DEFINITIONS **************************************************************************/ // Standard data types #define BIT bit #define BYTE unsigned char #define WORD unsigned int #define DWORD unsigned long // Boolean expressions #define BOOLEAN unsigned char #define TRUE 0xFF #define FALSE 0 /************************************************************************** GLOBAL FUNCTIONS **************************************************************************/ /************************************************************************** DOES: Initializes the driver with the desired bit rate. For a complete initialization, MM2_SetMessageFilter must be called for every message ID that should be received by the driver. RETURNS: TRUE, if initialization executed OK. FALSE, if initialization failed. **************************************************************************/ BYTE MM2_Init ( WORD BitRate // Bitrate in multiple of 100bps ); /************************************************************************** DOES: Sets a single receive filter. The driver only accepts messages from the network for which a filter was set. RETURNS: TRUE, if message ID filter was set successfully. FALSE, if message ID filter could not be set. **************************************************************************/ BYTE MM2_SetMessageFilter ( BYTE MessageID ); /************************************************************************** DOES: Pushes the next message into the transmit queue. RETURNS: TRUE, if transmit queue accepted the message. FALSE, if transmit queue is full. **************************************************************************/ BYTE MM2_PushMessage ( BYTE pMM2TxMsg[] // Pointer to MicroMessage // 1: address byte // 2: number of data bytes (max of 8) // 3-10: data bytes ); /************************************************************************** DOES: Pulls a message from the receive queue. RETURNS: TRUE, if message was received. FALSE, if receive queue is empty. **************************************************************************/ BYTE MM2_PullMessage ( BYTE pMM2RxMsg[] // Pointer to MicroMessage // Caller must provide a buffer of 10 bytes!!! // 1: address byte // 2: number of data bytes (max of 8) // 3-10: data bytes ); /************************************************************************** DOES: This function reads a 1 millisecond timer tick. The timer tick must be a WORD and must be incremented once per millisecond. RETURNS: 1 millisecond timer tick NOTES: Data consistency must be insured by the driver. (On 8-bit systems, disable the timer interrupt incrementing the timer tick while executing this function) Systems that cannot provide a 1ms tick may consider incrementing the timer tick only once every "x" ms, if the increment is by "x". **************************************************************************/ WORD MM2_GetTime ( void ); |