Merged in acassis/nuttx_acassis/canbus (pull request #378)

Canbus

Approved-by: Gregory Nutt <gnutt@nuttx.org>
This commit is contained in:
Alan Carvalho
2017-05-23 22:59:46 +00:00
committed by Gregory Nutt
2 changed files with 23 additions and 7 deletions
@@ -194,6 +194,18 @@ int stm32_qencoder_initialize(FAR const char *devpath, int timer);
int stm32_rgbled_setup(void);
#endif
/************************************************************************************
* Name: stm32_mcp2515initialize
*
* Description:
* Initialize and register the MCP2515 CAN driver.
*
************************************************************************************/
#ifdef CONFIG_CAN_MCP2515
int stm32_mcp2515initialize(FAR const char *devpath);
#endif
/************************************************************************************
* Name: stm32_usbinitialize
*
+11 -7
View File
@@ -1298,6 +1298,7 @@ static void mcp2515_rxint(FAR struct can_dev_s *dev, bool enable)
DEBUGASSERT(config);
caninfo("CAN%d enable: %d\n", config->devid, enable);
UNUSED(config);
/* Enable/disable the receive interrupts */
@@ -1670,6 +1671,7 @@ static int mcp2515_send(FAR struct can_dev_s *dev, FAR struct can_msg_s *msg)
caninfo("CAN%d\n", config->devid);
caninfo("CAN%d ID: %d DLC: %d\n",
config->devid, msg->cm_hdr.ch_id, msg->cm_hdr.ch_dlc);
UNUSED(config);
/* That that FIFO elements were configured.
*
@@ -1823,7 +1825,7 @@ static bool mcp2515_txready(FAR struct can_dev_s *dev)
{
FAR struct mcp2515_can_s *priv;
uint8_t regval;
bool empty;
bool ready;
DEBUGASSERT(dev);
priv = dev->cd_priv;
@@ -1845,32 +1847,32 @@ static bool mcp2515_txready(FAR struct can_dev_s *dev)
mcp2515_readregs(priv, MCP2515_TXB0CTRL, &regval, 1);
if ((regval & TXBCTRL_TXREQ) == 0)
{
empty = true;
ready = true;
}
else
{
mcp2515_readregs(priv, MCP2515_TXB1CTRL, &regval, 1);
if ((regval & TXBCTRL_TXREQ) == 0)
{
empty = true;
ready = true;
}
else
{
mcp2515_readregs(priv, MCP2515_TXB2CTRL, &regval, 1);
if ((regval & TXBCTRL_TXREQ) == 0)
{
empty = true;
ready = true;
}
else
{
empty = false;
ready = false;
}
}
}
mcp2515_dev_unlock(priv);
return empty;
return ready;
}
/****************************************************************************
@@ -2241,7 +2243,8 @@ static int mcp2515_interrupt(FAR struct mcp2515_config_s *config, FAR void *arg)
{
/* Clear interrupt errors */
mcp2515_modifyreg(priv, MCP2515_CANINTF, MCP2515_ERROR_INTS, ~MCP2515_ERROR_INTS);
mcp2515_modifyreg(priv, MCP2515_CANINTF, MCP2515_ERROR_INTS,
(uint8_t)~MCP2515_ERROR_INTS);
#ifdef CONFIG_CAN_ERRORS
/* Report errors */
@@ -2378,6 +2381,7 @@ static int mcp2515_hw_initialize(struct mcp2515_can_s *priv)
uint8_t regval;
caninfo("CAN%d\n", config->devid);
UNUSED(config);
/* Setup CNF1 register */