/* ----------------------------------------------------------------------------
 *         SAM Software Package License
 * ----------------------------------------------------------------------------
 * Copyright (c) 2011, Atmel Corporation
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * - Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the disclaimer below.
 *
 * Atmel's name may not be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * ----------------------------------------------------------------------------
 */

/**
 *  \file
 *
 *  \section Purpose
 *
 *  Interface for configuring and using Timer Counter (TC) peripherals.
 *
 *  \section Usage
 *  -# Optionally, use TC_FindMckDivisor() to let the program find the best
 *     TCCLKS field value automatically.
 *  -# Configure a Timer Counter in the desired mode using TC_Configure().
 *  -# Start or stop the timer clock using TC_Start() and TC_Stop().
 */

#ifndef _MCAN_
#define _MCAN_

/*------------------------------------------------------------------------------
 *         Headers
 *------------------------------------------------------------------------------*/

#include "chip.h"

#include <stdint.h>

/*------------------------------------------------------------------------------
 *         Global functions
 *------------------------------------------------------------------------------*/

#ifdef __cplusplus
 extern "C" {
#endif

typedef enum
{
	CAN_STD_ID = 0,
	CAN_EXT_ID = 1
} MCan_IdType;
   
typedef enum
{
	CAN_DLC_0 = 0,
	CAN_DLC_1 = 1,
	CAN_DLC_2 = 2,
	CAN_DLC_3 = 3,
	CAN_DLC_4 = 4,
	CAN_DLC_5 = 5,
	CAN_DLC_6 = 6,
	CAN_DLC_7 = 7,
	CAN_DLC_8 = 8,
	CAN_DLC_12 = 9,
	CAN_DLC_16 = 10,
	CAN_DLC_20 = 11,
	CAN_DLC_24 = 12,
	CAN_DLC_32 = 13,
	CAN_DLC_48 = 14,
	CAN_DLC_64 = 15
} MCan_DlcType;

typedef enum
{
	CAN_FIFO_0 = 0,
	CAN_FIFO_1 = 1
} MCan_FifoType;

typedef enum
{
	CAN_INTR_LINE_0 = 0,
	CAN_INTR_LINE_1 = 1
} MCan_IntrLineType;

typedef struct MailboxInfoTag
{
	uint32_t   id;
	uint32_t   length;
	uint32_t   timestamp;
} MailboxInfoType;


typedef struct MailBox8Tag
{
	MailboxInfoType info;
	uint8_t         data[8];
} Mailbox8Type;

typedef struct MailBox12Tag
{
	MailboxInfoType info;
	uint8_t         data[12];
} Mailbox12Type;

typedef struct MailBox16Tag
{
	MailboxInfoType info;
	uint8_t         data[16];
} Mailbox16Type;

typedef struct MailBox20Tag
{
	MailboxInfoType info;
	uint8_t         data[20];
} Mailbox20Type;

typedef struct MailBox24Tag
{
	MailboxInfoType info;
	uint8_t         data[24];
} Mailbox24Type;

typedef struct MailBox32Tag
{
	MailboxInfoType info;
	uint8_t         data[32];
} Mailbox32ype;

typedef struct MailBox48Tag
{
	MailboxInfoType info;
	uint8_t         data[48];
} Mailbox48Type;

typedef struct MailBox64Tag
{
	MailboxInfoType info;
	uint8_t         data[64];
} Mailbox64Type;



typedef struct MCan_MsgRamPntrsTag
{
	uint32_t * pStdFilts;
	uint32_t * pExtFilts;
	uint32_t * pRxFifo0;
	uint32_t * pRxFifo1;
	uint32_t * pRxDedBuf;
	uint32_t * pTxEvtFifo;
	uint32_t * pTxDedBuf;
	uint32_t * pTxFifoQ;
} MCan_MsgRamPntrs;

typedef struct MCan_ConfigTag
{
	Mcan            * pMCan;
	uint32_t          bitTiming;
	uint32_t          fastBitTiming;
	uint32_t          nmbrStdFilts;
	uint32_t          nmbrExtFilts;  
	uint32_t          nmbrFifo0Elmts;
	uint32_t          nmbrFifo1Elmts;
	uint32_t          nmbrRxDedBufElmts;
	uint32_t          nmbrTxEvtFifoElmts;
	uint32_t          nmbrTxDedBufElmts;
	uint32_t          nmbrTxFifoQElmts;  
	uint32_t          rxFifo0ElmtSize;
	uint32_t          rxFifo1ElmtSize;
	uint32_t          rxBufElmtSize;   
	// Element sizes and data sizes (encoded element size)  
	uint32_t          txBufElmtSize;    
	// Element size and data size (encoded element size)
	MCan_MsgRamPntrs  msgRam;
} MCan_ConfigType;   

extern const MCan_ConfigType mcan0Config;
extern const MCan_ConfigType mcan1Config;

__STATIC_INLINE uint32_t MCAN_IsTxComplete( 
	const MCan_ConfigType * mcanConfig )
{
	Mcan * mcan = mcanConfig->pMCan;
	return ( mcan->MCAN_IR & MCAN_IR_TC );
}

__STATIC_INLINE void MCAN_ClearTxComplete( 
	const MCan_ConfigType * mcanConfig )
{
	Mcan * mcan = mcanConfig->pMCan;
	mcan->MCAN_IR = MCAN_IR_TC;
}

__STATIC_INLINE uint32_t MCAN_IsMessageStoredToRxDedBuffer( 
	const MCan_ConfigType * mcanConfig )
{
  Mcan * mcan = mcanConfig->pMCan;

  return ( mcan->MCAN_IR & MCAN_IR_DRX );  
}

__STATIC_INLINE void MCAN_ClearMessageStoredToRxBuffer( 
	const MCan_ConfigType * mcanConfig )
{
	Mcan * mcan = mcanConfig->pMCan;
	mcan->MCAN_IR = MCAN_IR_DRX;
}

__STATIC_INLINE uint32_t MCAN_IsMessageStoredToRxFifo0( 
	const MCan_ConfigType * mcanConfig )
{
	Mcan * mcan = mcanConfig->pMCan;
	return ( mcan->MCAN_IR & MCAN_IR_RF0N );  
}

__STATIC_INLINE void MCAN_ClearMessageStoredToRxFifo0( 
	const MCan_ConfigType * mcanConfig )
{
	Mcan * mcan = mcanConfig->pMCan;
	mcan->MCAN_IR = MCAN_IR_RF0N;
}

__STATIC_INLINE uint32_t MCAN_IsMessageStoredToRxFifo1( 
	const MCan_ConfigType * mcanConfig )
{
	Mcan * mcan = mcanConfig->pMCan;
	return ( mcan->MCAN_IR & MCAN_IR_RF1N );  
}

__STATIC_INLINE void MCAN_ClearMessageStoredToRxFifo1( 
	const MCan_ConfigType * mcanConfig )
{
	Mcan * mcan = mcanConfig->pMCan;
	mcan->MCAN_IR = MCAN_IR_RF1N;
}

void MCAN_Init( 
	const MCan_ConfigType * mcanConfig );

void MCAN_InitFdEnable( 
	const MCan_ConfigType * mcanConfig );

void MCAN_InitFdBitRateSwitchEnable( 
	const MCan_ConfigType * mcanConfig );

void MCAN_InitTxQueue( 
	const MCan_ConfigType * mcanConfig );

void MCAN_InitLoopback( 
	const MCan_ConfigType * mcanConfig );

void MCAN_Enable( 
	const MCan_ConfigType * mcanConfig );

void MCAN_RequestIso11898_1( 
	const MCan_ConfigType * mcanConfig );

void MCAN_RequestFd( 
	const MCan_ConfigType * mcanConfig );

void MCAN_RequestFdBitRateSwitch( 
	const MCan_ConfigType * mcanConfig );

void MCAN_LoopbackOn( 
	const MCan_ConfigType * mcanConfig );

void MCAN_LoopbackOff( 
	const MCan_ConfigType * mcanConfig );

void MCAN_IEnableMessageStoredToRxDedBuffer( 
	const MCan_ConfigType * mcanConfig, 
	MCan_IntrLineType line );

uint8_t  * MCAN_ConfigTxDedBuffer( 
	const MCan_ConfigType * mcanConfig, 
	uint8_t buffer, 
	uint32_t id, 
	MCan_IdType idType, 
	MCan_DlcType dlc );

void MCAN_SendTxDedBuffer( 
	const MCan_ConfigType * mcanConfig, 
	uint8_t buffer );

uint32_t MCAN_AddToTxFifoQ( 
	const MCan_ConfigType * mcanConfig, 
	uint32_t id, MCan_IdType idType, 
	MCan_DlcType dlc, uint8_t * data );

uint8_t MCAN_IsBufferTxd( 
	const MCan_ConfigType * mcanConfig, 
	uint8_t buffer );

void MCAN_ConfigRxBufferFilter( 
	const MCan_ConfigType * mcanConfig, 
	uint32_t buffer, 
	uint32_t filter, 
	uint32_t id, 
	MCan_IdType idType);

void MCAN_ConfigRxClassicFilter( 
	const MCan_ConfigType * mcanConfig,
	MCan_FifoType fifo, 
	uint8_t filter, 
	uint32_t id, 
	MCan_IdType idType, 
	uint32_t mask );

uint8_t MCAN_IsNewDataInRxDedBuffer( 
	const MCan_ConfigType * mcanConfig, 
	uint8_t buffer );

void MCAN_GetRxDedBuffer( 
	const MCan_ConfigType * mcanConfig, 
	uint8_t buffer, 
	Mailbox64Type * pRxMailbox );

uint32_t MCAN_GetRxFifoBuffer( 
	const MCan_ConfigType * mcanConfig, 
	MCan_FifoType fifo, 
	Mailbox64Type * pRxMailbox );

#ifdef __cplusplus
}
#endif

#endif /* #ifndef _MCAN_ */

