From 6dba992182af9b3a73711958de2eeeb33b7f69f6 Mon Sep 17 00:00:00 2001
From: Damien George <damien.p.george@gmail.com>
Date: Sun, 5 Oct 2014 18:05:26 +0100
Subject: [PATCH] stmhal: Add config option to disable/enable CAN driver.

---
 stmhal/boards/HYDRABUS/mpconfigboard.h        | 1 +
 stmhal/boards/NETDUINO_PLUS_2/mpconfigboard.h | 1 +
 stmhal/boards/PYBV10/mpconfigboard.h          | 1 +
 stmhal/boards/PYBV3/mpconfigboard.h           | 1 +
 stmhal/boards/PYBV4/mpconfigboard.h           | 1 +
 stmhal/boards/STM32F4DISC/mpconfigboard.h     | 1 +
 stmhal/can.c                                  | 4 ++++
 stmhal/modpyb.c                               | 2 ++
 8 files changed, 12 insertions(+)

diff --git a/stmhal/boards/HYDRABUS/mpconfigboard.h b/stmhal/boards/HYDRABUS/mpconfigboard.h
index 18d1df19d..9a3f05452 100644
--- a/stmhal/boards/HYDRABUS/mpconfigboard.h
+++ b/stmhal/boards/HYDRABUS/mpconfigboard.h
@@ -16,6 +16,7 @@
 #define MICROPY_HW_ENABLE_I2C1      (1)
 #define MICROPY_HW_ENABLE_SPI1      (1)
 #define MICROPY_HW_ENABLE_SPI3      (1)
+#define MICROPY_HW_ENABLE_CAN       (0)
 
 // USRSW/UBTN (Needs Jumper UBTN) is pulled low. Pressing the button makes the input go high.
 #define MICROPY_HW_USRSW_PIN        (pin_A0)
diff --git a/stmhal/boards/NETDUINO_PLUS_2/mpconfigboard.h b/stmhal/boards/NETDUINO_PLUS_2/mpconfigboard.h
index c32e0d29e..6de5a72c0 100644
--- a/stmhal/boards/NETDUINO_PLUS_2/mpconfigboard.h
+++ b/stmhal/boards/NETDUINO_PLUS_2/mpconfigboard.h
@@ -20,6 +20,7 @@
 #define MICROPY_HW_ENABLE_I2C1      (0)
 #define MICROPY_HW_ENABLE_SPI1      (0)
 #define MICROPY_HW_ENABLE_SPI3      (0)
+#define MICROPY_HW_ENABLE_CAN       (0)
 
 // USRSW is pulled low. Pressing the button makes the input go high.
 #define MICROPY_HW_USRSW_PIN        (pin_B11)
diff --git a/stmhal/boards/PYBV10/mpconfigboard.h b/stmhal/boards/PYBV10/mpconfigboard.h
index 977fabe40..d4645e84f 100644
--- a/stmhal/boards/PYBV10/mpconfigboard.h
+++ b/stmhal/boards/PYBV10/mpconfigboard.h
@@ -17,6 +17,7 @@
 #define MICROPY_HW_ENABLE_I2C1      (1)
 #define MICROPY_HW_ENABLE_SPI1      (1)
 #define MICROPY_HW_ENABLE_SPI3      (0)
+#define MICROPY_HW_ENABLE_CAN       (1)
 
 // USRSW has no pullup or pulldown, and pressing the switch makes the input go low
 #define MICROPY_HW_USRSW_PIN        (pin_B3)
diff --git a/stmhal/boards/PYBV3/mpconfigboard.h b/stmhal/boards/PYBV3/mpconfigboard.h
index 048812748..fdb45f465 100644
--- a/stmhal/boards/PYBV3/mpconfigboard.h
+++ b/stmhal/boards/PYBV3/mpconfigboard.h
@@ -16,6 +16,7 @@
 #define MICROPY_HW_ENABLE_I2C1      (1)
 #define MICROPY_HW_ENABLE_SPI1      (1)
 #define MICROPY_HW_ENABLE_SPI3      (0)
+#define MICROPY_HW_ENABLE_CAN       (1)
 
 // USRSW has no pullup or pulldown, and pressing the switch makes the input go low
 #define MICROPY_HW_USRSW_PIN        (pin_A13)
diff --git a/stmhal/boards/PYBV4/mpconfigboard.h b/stmhal/boards/PYBV4/mpconfigboard.h
index 5bb7f03b2..4355d6531 100644
--- a/stmhal/boards/PYBV4/mpconfigboard.h
+++ b/stmhal/boards/PYBV4/mpconfigboard.h
@@ -16,6 +16,7 @@
 #define MICROPY_HW_ENABLE_I2C1      (1)
 #define MICROPY_HW_ENABLE_SPI1      (1)
 #define MICROPY_HW_ENABLE_SPI3      (0)
+#define MICROPY_HW_ENABLE_CAN       (1)
 
 // USRSW has no pullup or pulldown, and pressing the switch makes the input go low
 #define MICROPY_HW_USRSW_PIN        (pin_B3)
diff --git a/stmhal/boards/STM32F4DISC/mpconfigboard.h b/stmhal/boards/STM32F4DISC/mpconfigboard.h
index 2e2769477..9db330bff 100644
--- a/stmhal/boards/STM32F4DISC/mpconfigboard.h
+++ b/stmhal/boards/STM32F4DISC/mpconfigboard.h
@@ -16,6 +16,7 @@
 #define MICROPY_HW_ENABLE_I2C1      (1)
 #define MICROPY_HW_ENABLE_SPI1      (1)
 #define MICROPY_HW_ENABLE_SPI3      (0)
+#define MICROPY_HW_ENABLE_CAN       (1)
 
 // USRSW is pulled low. Pressing the button makes the input go high.
 #define MICROPY_HW_USRSW_PIN        (pin_A0)
diff --git a/stmhal/can.c b/stmhal/can.c
index 82324a638..920a4ad0b 100644
--- a/stmhal/can.c
+++ b/stmhal/can.c
@@ -42,6 +42,8 @@
 #include "can.h"
 #include "pybioctl.h"
 
+#if MICROPY_HW_ENABLE_CAN
+
 /// \moduleref pyb
 /// \class CAN - controller area network communication bus
 ///
@@ -451,3 +453,5 @@ const mp_obj_type_t pyb_can_type = {
     .stream_p = &can_stream_p,
     .locals_dict = (mp_obj_t)&pyb_can_locals_dict,
 };
+
+#endif // MICROPY_HW_ENABLE_CAN
diff --git a/stmhal/modpyb.c b/stmhal/modpyb.c
index ddfe2c30a..8252b057a 100644
--- a/stmhal/modpyb.c
+++ b/stmhal/modpyb.c
@@ -523,7 +523,9 @@ STATIC const mp_map_elem_t pyb_module_globals_table[] = {
     { MP_OBJ_NEW_QSTR(MP_QSTR_I2C), (mp_obj_t)&pyb_i2c_type },
     { MP_OBJ_NEW_QSTR(MP_QSTR_SPI), (mp_obj_t)&pyb_spi_type },
     { MP_OBJ_NEW_QSTR(MP_QSTR_UART), (mp_obj_t)&pyb_uart_type },
+#if MICROPY_HW_ENABLE_CAN
     { MP_OBJ_NEW_QSTR(MP_QSTR_CAN), (mp_obj_t)&pyb_can_type },
+#endif
 
     { MP_OBJ_NEW_QSTR(MP_QSTR_ADC), (mp_obj_t)&pyb_adc_type },
     { MP_OBJ_NEW_QSTR(MP_QSTR_ADCAll), (mp_obj_t)&pyb_adc_all_type },
-- 
GitLab