mirror of
https://github.com/apache/nuttx.git
synced 2026-05-25 01:39:44 +08:00
Merged in acassis/nuttx_acassis/canbus (pull request #378)
Canbus Approved-by: Gregory Nutt <gnutt@nuttx.org>
This commit is contained in:
@@ -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
@@ -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, ®val, 1);
|
||||
if ((regval & TXBCTRL_TXREQ) == 0)
|
||||
{
|
||||
empty = true;
|
||||
ready = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
mcp2515_readregs(priv, MCP2515_TXB1CTRL, ®val, 1);
|
||||
if ((regval & TXBCTRL_TXREQ) == 0)
|
||||
{
|
||||
empty = true;
|
||||
ready = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
mcp2515_readregs(priv, MCP2515_TXB2CTRL, ®val, 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 */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user