Official support library for using mbed as a programmable coprocessor in the Innomatix DAP-III+ telematics platform

InnomatixCanAPI/inc/InnomatixCanAPI.h

Committer:
Innomatix
Date:
2016-04-15
Revision:
0:b9e1003fbee7

File content as of revision 0:b9e1003fbee7:

/*******************************************************************
 *
 *  File: InnomatixCanAPI.h
 *
 *  Description: Simple CAN API for Innomatix Coprocessor applications 
 *
 *  Copyright 2015 Innomatix, LLC., All Rights Reserved
 *
 *  THIS DOCUMENT AND ITS CONTENTS ARE INTELLECTUAL PROPERTY
 *  OF INNOMATIX, LLC.  ANY DUPLICATION IN PART OR WHOLE
 *  WITHOUT PRIOR WRITTEN CONSENT IS STRICTLY PROHIBITED.
 *
 *******************************************************************/

#ifndef _INNOMATIX_CAN_API_H
#define _INNOMATIX_CAN_API_H

#ifdef __cplusplus
extern "C"
{
#endif
/*************************************************/

typedef enum
{
    canSuccess,				// 0
    canInvalidChannel,		// 1
    canInvalidSpeed,		// 2
    canInvalidIdentifier,	// 3
    canInvalidLength,		// 4
    canNoData,				// 5
    canNotInitialized,		// 6
    canGeneralError			// N
}CanResults_e;

typedef enum
{
    canChDAP3,	        // CAN 3 interface on the DAP connector or wiring harness
    canChDAP4	        // CAN 4 interface on the DAP connector or wiring harness
}CanChannel_e;
static const char *CanChannelName[] = {"CanChDAP3", "CanChDAP4"};


typedef enum
{
    canFormatStandard,     //	A standard, 11-bit identifier
    canFormatExtended,     //	An extended, 29-bit identifier
}CanFormat_e;

typedef struct
{
    int TxMessageCount;
    int RxMessageCount;

	// Increments when the internal message receive buffer is full and another message is received
    int OverflowCount;		
}StatisticsStruct_t, *StatisticsStruct_p;
  
  
typedef struct
{
    int Id;
    int DataLen;
	int Timestamp;
    CanFormat_e Format;
    unsigned char Data[ 8 ];
}CanMessage_t, *CanMessage_p;  

/**
 * This function initializes the API and the designated CAN interface.  
 * Return Values:
 * 	    Success � the API was initialized and the channel is ready to use.
 * 	    InvalidChannel � the specified channel is not supported
 * 	    InvalidSpeed � the specified network speed is not supported
 * 	    GeneralError � an unknown or unspecified error has occurred
 *************************************************************************/ 
CanResults_e CanInit( CanChannel_e Channel, int Speed ); 


/**
 * This function disables the designated CAN interface. 
 *************************************************************************/ 
void CanClose( CanChannel_e Channel );


/**
 * Allow the client to send a message on the CAN bus.  
 * Return Values:
 * 	    Success � the message was sent
 * 	    InvalidChannel � the specified channel is not supported
 * 	    InvalidIdentifier � the provided message id is not a valid for the specified format 
 * 	    InvalidLength � more than 8 bytes of data were indicated
 *  	GeneralError � an unknown or unspecified error has occurred
 *************************************************************************/ 
CanResults_e CanSend( CanChannel_e Channel, unsigned long Id, CanFormat_e Format, const unsigned char *Data, char DLen );


/**
 * Allow the client to get a message from the CAN bus.  
 * Return Values:
 * 	    Success � a message was retrieved, the parameters hold the message values.
 * 	    InvalidChannel � the specified channel is not supported
 * 	    NoData � no message is available on the requested channel
 * 	    GeneralError � an unknown or unspecified error has occurred
 *************************************************************************/ 
CanResults_e CanReceive( CanChannel_e Channel, unsigned long *Timestamp, unsigned long *Id, CanFormat_e *Format, unsigned char *Data, char *DLen );


/**
 * Allow the client to retrieve statistics about the CAN interface.
 * 
 * Return Values:
 * 	    Success � statistics were retrieved
 * 	    InvalidChannel � the specified channel is not supported
 *  	GeneralError � an unknown or unspecified error has occurred
 *************************************************************************/ 
CanResults_e CanStatistics( CanChannel_e Channel, StatisticsStruct_t *Stats );


/**
 * Flush the Rx buffer - all messages are discarded, Rx and Overflow stats are cleared
 * 
 * Return Values:
 * 	    Success � statistics were retrieved
 * 	    InvalidChannel � the specified channel is not supported
 *  	GeneralError � an unknown or unspecified error has occurred
 *************************************************************************/ 
CanResults_e CanFlush( CanChannel_e Channel );


/*************************************************/
#ifdef __cplusplus
}
#endif

#endif /* _INNOMATIX_CAN_API_H */