From 75b2053243cb569c1347686fd56e33459e095efb Mon Sep 17 00:00:00 2001
From: Daniel Agar <daniel@agar.ca>
Date: Sat, 1 Dec 2018 14:00:46 -0500
Subject: [PATCH] move uavcan from modules to drivers

---
 .gitmodules                                   |  4 +-
 Tools/astyle/files_to_check_code_style.sh     |  2 +-
 boards/aerotenna/ocpoc/ubuntu.cmake           |  1 -
 boards/airmind/mindpx-v2/default.cmake        |  2 +-
 boards/atlflight/eagle/default.cmake          |  1 -
 boards/atlflight/excelsior/default.cmake      |  1 -
 boards/atmel/same70xplained/default.cmake     |  1 -
 boards/auav/esc35-v1/default.cmake            |  8 +---
 boards/auav/x21/default.cmake                 |  2 +-
 boards/av/x-v1/default.cmake                  |  2 +-
 boards/beaglebone/blue/cross.cmake            |  1 -
 boards/beaglebone/blue/native.cmake           |  1 -
 boards/bitcraze/crazyflie/default.cmake       |  1 -
 boards/emlid/navio2/cross.cmake               |  1 -
 boards/emlid/navio2/native.cmake              |  1 -
 boards/gumstix/aerocore2/default.cmake        |  3 +-
 boards/intel/aerofc-v1/default.cmake          |  4 +-
 boards/intel/aerofc-v1/rtps.cmake             |  4 +-
 boards/nxp/fmuk66-v3/default.cmake            |  1 -
 boards/omnibus/f4sd/default.cmake             |  3 +-
 boards/px4/cannode-v1/default.cmake           |  2 +-
 boards/px4/esc-v1/default.cmake               |  8 +---
 boards/px4/fmu-v2/default.cmake               |  2 +-
 boards/px4/fmu-v2/lpe.cmake                   |  3 +-
 boards/px4/fmu-v2/test.cmake                  |  2 +-
 boards/px4/fmu-v3/default.cmake               |  2 +-
 boards/px4/fmu-v3/rtps.cmake                  |  2 +-
 boards/px4/fmu-v3/stackcheck.cmake            |  2 +-
 boards/px4/fmu-v4/default.cmake               |  2 +-
 boards/px4/fmu-v4/rtps.cmake                  |  2 +-
 boards/px4/fmu-v4/stackcheck.cmake            |  2 +-
 boards/px4/fmu-v4pro/default.cmake            |  2 +-
 boards/px4/fmu-v4pro/rtps.cmake               |  2 +-
 boards/px4/fmu-v5/default.cmake               |  2 +-
 boards/px4/fmu-v5/rtps.cmake                  |  2 +-
 boards/px4/fmu-v5/stackcheck.cmake            |  2 +-
 boards/px4/raspberrypi/cross.cmake            |  1 -
 boards/px4/raspberrypi/native.cmake           |  1 -
 boards/px4/sitl/default.cmake                 |  2 +-
 boards/px4/sitl/rtps.cmake                    |  2 +-
 boards/px4/sitl/test.cmake                    |  2 +-
 boards/stm/32f4discovery/default.cmake        |  4 +-
 boards/stm/nucleo-F767ZI/default.cmake        |  2 +-
 boards/thiemar/s2740vc-v1/default.cmake       |  2 +-
 src/{modules => drivers}/uavcan/.gitignore    |  0
 .../uavcan/CMakeLists.txt                     |  0
 .../uavcan/actuators/esc.cpp                  |  0
 .../uavcan/actuators/esc.hpp                  |  0
 .../uavcan/actuators/hardpoint.cpp            |  0
 .../uavcan/actuators/hardpoint.hpp            |  0
 src/{modules => drivers}/uavcan/allocator.hpp |  0
 src/{modules => drivers}/uavcan/libuavcan     |  0
 .../uavcan/sensors/baro.cpp                   |  0
 .../uavcan/sensors/baro.hpp                   |  0
 .../uavcan/sensors/gnss.cpp                   |  0
 .../uavcan/sensors/gnss.hpp                   |  0
 .../uavcan/sensors/mag.cpp                    |  0
 .../uavcan/sensors/mag.hpp                    |  0
 .../uavcan/sensors/sensor_bridge.cpp          |  0
 .../uavcan/sensors/sensor_bridge.hpp          |  0
 .../uavcan/uavcan_driver.hpp                  |  0
 .../uavcan/uavcan_main.cpp                    |  0
 .../uavcan/uavcan_main.hpp                    |  0
 .../uavcan/uavcan_module.hpp                  |  0
 .../uavcan/uavcan_params.c                    |  0
 .../uavcan/uavcan_servers.cpp                 |  0
 .../uavcan/uavcan_servers.hpp                 |  0
 .../uavcan/uavcan_virtual_can_driver.hpp      |  0
 src/{modules => drivers}/uavcanesc/.gitignore |  0
 .../uavcanesc/CMakeLists.txt                  | 10 +++--
 src/drivers/uavcanesc/commands/CMakeLists.txt | 38 +++++++++++++++++++
 .../uavcanesc/commands/cfg/CMakeLists.txt     |  0
 .../uavcanesc/commands/cfg/esc_cfg.cpp        |  0
 .../uavcanesc/commands/cfg/esc_cfg.hpp        |  0
 .../uavcanesc/commands/dc/CMakeLists.txt      |  0
 .../uavcanesc/commands/dc/esc_dc.cpp          |  0
 .../uavcanesc/commands/dc/esc_dc.hpp          |  0
 .../uavcanesc/commands/rpm/CMakeLists.txt     |  0
 .../uavcanesc/commands/rpm/esc_rpm.cpp        |  0
 .../uavcanesc/commands/rpm/esc_rpm.hpp        |  0
 .../commands/selftest/CMakeLists.txt          |  0
 .../commands/selftest/esc_selftest.cpp        |  0
 .../commands/selftest/esc_selftest.hpp        |  0
 .../uavcanesc/commands/stat/CMakeLists.txt    |  0
 .../uavcanesc/commands/stat/esc_stat.cpp      |  0
 .../uavcanesc/commands/stat/esc_stat.hpp      |  0
 .../uavcanesc/indication_controller.cpp       |  0
 .../uavcanesc/indication_controller.hpp       |  0
 src/{modules => drivers}/uavcanesc/led.cpp    |  0
 src/{modules => drivers}/uavcanesc/led.hpp    |  0
 .../uavcanesc/nshterm/CMakeLists.txt          |  2 -
 .../uavcanesc/nshterm/nshterm.c               |  0
 .../uavcanesc/uavcan_driver.hpp               |  0
 .../uavcanesc/uavcanesc_main.cpp              |  0
 .../uavcanesc/uavcanesc_main.hpp              |  0
 .../uavcanesc/uavcanesc_params.c              |  0
 .../uavcannode/.gitignore                     |  0
 .../uavcannode/CMakeLists.txt                 |  6 +--
 .../uavcannode/indication_controller.cpp      |  0
 .../uavcannode/indication_controller.hpp      |  0
 src/{modules => drivers}/uavcannode/led.cpp   |  0
 src/{modules => drivers}/uavcannode/led.hpp   |  0
 .../uavcannode/resources.cpp                  |  0
 .../uavcannode/resources.hpp                  |  0
 .../uavcannode/sim_controller.cpp             |  0
 .../uavcannode/sim_controller.hpp             |  0
 .../uavcannode/uavcannode_main.cpp            |  0
 .../uavcannode/uavcannode_main.hpp            |  0
 .../uavcannode/uavcannode_params.c            |  0
 109 files changed, 84 insertions(+), 71 deletions(-)
 rename src/{modules => drivers}/uavcan/.gitignore (100%)
 rename src/{modules => drivers}/uavcan/CMakeLists.txt (100%)
 rename src/{modules => drivers}/uavcan/actuators/esc.cpp (100%)
 rename src/{modules => drivers}/uavcan/actuators/esc.hpp (100%)
 rename src/{modules => drivers}/uavcan/actuators/hardpoint.cpp (100%)
 rename src/{modules => drivers}/uavcan/actuators/hardpoint.hpp (100%)
 rename src/{modules => drivers}/uavcan/allocator.hpp (100%)
 rename src/{modules => drivers}/uavcan/libuavcan (100%)
 rename src/{modules => drivers}/uavcan/sensors/baro.cpp (100%)
 rename src/{modules => drivers}/uavcan/sensors/baro.hpp (100%)
 rename src/{modules => drivers}/uavcan/sensors/gnss.cpp (100%)
 rename src/{modules => drivers}/uavcan/sensors/gnss.hpp (100%)
 rename src/{modules => drivers}/uavcan/sensors/mag.cpp (100%)
 rename src/{modules => drivers}/uavcan/sensors/mag.hpp (100%)
 rename src/{modules => drivers}/uavcan/sensors/sensor_bridge.cpp (100%)
 rename src/{modules => drivers}/uavcan/sensors/sensor_bridge.hpp (100%)
 rename src/{modules => drivers}/uavcan/uavcan_driver.hpp (100%)
 rename src/{modules => drivers}/uavcan/uavcan_main.cpp (100%)
 rename src/{modules => drivers}/uavcan/uavcan_main.hpp (100%)
 rename src/{modules => drivers}/uavcan/uavcan_module.hpp (100%)
 rename src/{modules => drivers}/uavcan/uavcan_params.c (100%)
 rename src/{modules => drivers}/uavcan/uavcan_servers.cpp (100%)
 rename src/{modules => drivers}/uavcan/uavcan_servers.hpp (100%)
 rename src/{modules => drivers}/uavcan/uavcan_virtual_can_driver.hpp (100%)
 rename src/{modules => drivers}/uavcanesc/.gitignore (100%)
 rename src/{modules => drivers}/uavcanesc/CMakeLists.txt (94%)
 create mode 100644 src/drivers/uavcanesc/commands/CMakeLists.txt
 rename src/{modules => drivers}/uavcanesc/commands/cfg/CMakeLists.txt (100%)
 rename src/{modules => drivers}/uavcanesc/commands/cfg/esc_cfg.cpp (100%)
 rename src/{modules => drivers}/uavcanesc/commands/cfg/esc_cfg.hpp (100%)
 rename src/{modules => drivers}/uavcanesc/commands/dc/CMakeLists.txt (100%)
 rename src/{modules => drivers}/uavcanesc/commands/dc/esc_dc.cpp (100%)
 rename src/{modules => drivers}/uavcanesc/commands/dc/esc_dc.hpp (100%)
 rename src/{modules => drivers}/uavcanesc/commands/rpm/CMakeLists.txt (100%)
 rename src/{modules => drivers}/uavcanesc/commands/rpm/esc_rpm.cpp (100%)
 rename src/{modules => drivers}/uavcanesc/commands/rpm/esc_rpm.hpp (100%)
 rename src/{modules => drivers}/uavcanesc/commands/selftest/CMakeLists.txt (100%)
 rename src/{modules => drivers}/uavcanesc/commands/selftest/esc_selftest.cpp (100%)
 rename src/{modules => drivers}/uavcanesc/commands/selftest/esc_selftest.hpp (100%)
 rename src/{modules => drivers}/uavcanesc/commands/stat/CMakeLists.txt (100%)
 rename src/{modules => drivers}/uavcanesc/commands/stat/esc_stat.cpp (100%)
 rename src/{modules => drivers}/uavcanesc/commands/stat/esc_stat.hpp (100%)
 rename src/{modules => drivers}/uavcanesc/indication_controller.cpp (100%)
 rename src/{modules => drivers}/uavcanesc/indication_controller.hpp (100%)
 rename src/{modules => drivers}/uavcanesc/led.cpp (100%)
 rename src/{modules => drivers}/uavcanesc/led.hpp (100%)
 rename src/{modules => drivers}/uavcanesc/nshterm/CMakeLists.txt (99%)
 rename src/{modules => drivers}/uavcanesc/nshterm/nshterm.c (100%)
 rename src/{modules => drivers}/uavcanesc/uavcan_driver.hpp (100%)
 rename src/{modules => drivers}/uavcanesc/uavcanesc_main.cpp (100%)
 rename src/{modules => drivers}/uavcanesc/uavcanesc_main.hpp (100%)
 rename src/{modules => drivers}/uavcanesc/uavcanesc_params.c (100%)
 rename src/{modules => drivers}/uavcannode/.gitignore (100%)
 rename src/{modules => drivers}/uavcannode/CMakeLists.txt (95%)
 rename src/{modules => drivers}/uavcannode/indication_controller.cpp (100%)
 rename src/{modules => drivers}/uavcannode/indication_controller.hpp (100%)
 rename src/{modules => drivers}/uavcannode/led.cpp (100%)
 rename src/{modules => drivers}/uavcannode/led.hpp (100%)
 rename src/{modules => drivers}/uavcannode/resources.cpp (100%)
 rename src/{modules => drivers}/uavcannode/resources.hpp (100%)
 rename src/{modules => drivers}/uavcannode/sim_controller.cpp (100%)
 rename src/{modules => drivers}/uavcannode/sim_controller.hpp (100%)
 rename src/{modules => drivers}/uavcannode/uavcannode_main.cpp (100%)
 rename src/{modules => drivers}/uavcannode/uavcannode_main.hpp (100%)
 rename src/{modules => drivers}/uavcannode/uavcannode_params.c (100%)

diff --git a/.gitmodules b/.gitmodules
index 112c186ef5..630eac1ccd 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -2,8 +2,8 @@
 	path = mavlink/include/mavlink/v2.0
 	url = https://github.com/mavlink/c_library_v2.git
 	branch = master
-[submodule "src/modules/uavcan/libuavcan"]
-	path = src/modules/uavcan/libuavcan
+[submodule "src/drivers/uavcan/libuavcan"]
+	path = src/drivers/uavcan/libuavcan
 	url = https://github.com/UAVCAN/libuavcan.git
 	branch = master
 [submodule "msg/tools/genmsg"]
diff --git a/Tools/astyle/files_to_check_code_style.sh b/Tools/astyle/files_to_check_code_style.sh
index 63cc5508cd..2bfee94f3b 100755
--- a/Tools/astyle/files_to_check_code_style.sh
+++ b/Tools/astyle/files_to_check_code_style.sh
@@ -15,5 +15,5 @@ exec find boards src platforms \
     -path src/lib/matrix -prune -o \
     -path src/modules/micrortps_bridge/micro-CDR -prune -o \
     -path src/modules/systemlib/uthash -prune -o \
-    -path src/modules/uavcan/libuavcan -prune -o \
+    -path src/drivers/uavcan/libuavcan -prune -o \
     -type f \( -name "*.c" -o -name "*.h" -o -name "*.cpp" -o -name "*.hpp" \) | grep $PATTERN
diff --git a/boards/aerotenna/ocpoc/ubuntu.cmake b/boards/aerotenna/ocpoc/ubuntu.cmake
index 184ef642ce..66d39ece2c 100644
--- a/boards/aerotenna/ocpoc/ubuntu.cmake
+++ b/boards/aerotenna/ocpoc/ubuntu.cmake
@@ -51,7 +51,6 @@ px4_add_board(
 		position_estimator_inav
 		sensors
 		#simulator
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/airmind/mindpx-v2/default.cmake b/boards/airmind/mindpx-v2/default.cmake
index 113cc8b8df..a783b77fd5 100644
--- a/boards/airmind/mindpx-v2/default.cmake
+++ b/boards/airmind/mindpx-v2/default.cmake
@@ -45,6 +45,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -68,7 +69,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/atlflight/eagle/default.cmake b/boards/atlflight/eagle/default.cmake
index 31e47d48d8..3fff2b1602 100644
--- a/boards/atlflight/eagle/default.cmake
+++ b/boards/atlflight/eagle/default.cmake
@@ -86,7 +86,6 @@ px4_add_board(
 		position_estimator_inav
 		sensors
 		simulator
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/atlflight/excelsior/default.cmake b/boards/atlflight/excelsior/default.cmake
index 14d53fa211..5304fd6d5d 100644
--- a/boards/atlflight/excelsior/default.cmake
+++ b/boards/atlflight/excelsior/default.cmake
@@ -86,7 +86,6 @@ px4_add_board(
 		position_estimator_inav
 		sensors
 		simulator
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/atmel/same70xplained/default.cmake b/boards/atmel/same70xplained/default.cmake
index b877f50008..7f69ce4e3d 100644
--- a/boards/atmel/same70xplained/default.cmake
+++ b/boards/atmel/same70xplained/default.cmake
@@ -69,7 +69,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		#WIP uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/auav/esc35-v1/default.cmake b/boards/auav/esc35-v1/default.cmake
index 41957e10f4..574c4c5639 100644
--- a/boards/auav/esc35-v1/default.cmake
+++ b/boards/auav/esc35-v1/default.cmake
@@ -46,15 +46,9 @@ px4_add_board(
 	DRIVERS
 		bootloaders
 		stm32
+		uavcanesc
 
 	MODULES
-		uavcanesc
-		uavcanesc/nshterm
-		uavcanesc/commands/cfg
-		uavcanesc/commands/selftest
-		uavcanesc/commands/dc
-		uavcanesc/commands/rpm
-		uavcanesc/commands/stat
 
 	SYSTEMCMDS
 		config
diff --git a/boards/auav/x21/default.cmake b/boards/auav/x21/default.cmake
index 32dd67b904..6b55c0817d 100644
--- a/boards/auav/x21/default.cmake
+++ b/boards/auav/x21/default.cmake
@@ -50,6 +50,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -73,7 +74,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/av/x-v1/default.cmake b/boards/av/x-v1/default.cmake
index 165f72076d..9b4cd73f73 100644
--- a/boards/av/x-v1/default.cmake
+++ b/boards/av/x-v1/default.cmake
@@ -50,6 +50,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -73,7 +74,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/beaglebone/blue/cross.cmake b/boards/beaglebone/blue/cross.cmake
index f8ea400fa7..b4d6c4f1c9 100644
--- a/boards/beaglebone/blue/cross.cmake
+++ b/boards/beaglebone/blue/cross.cmake
@@ -49,7 +49,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/beaglebone/blue/native.cmake b/boards/beaglebone/blue/native.cmake
index 9a4d9da700..41bc1e92c2 100644
--- a/boards/beaglebone/blue/native.cmake
+++ b/boards/beaglebone/blue/native.cmake
@@ -47,7 +47,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/bitcraze/crazyflie/default.cmake b/boards/bitcraze/crazyflie/default.cmake
index 6e6cee059e..e9cebfcf8e 100644
--- a/boards/bitcraze/crazyflie/default.cmake
+++ b/boards/bitcraze/crazyflie/default.cmake
@@ -38,7 +38,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		#uavcan
 		#vtol_att_control
 		wind_estimator
 
diff --git a/boards/emlid/navio2/cross.cmake b/boards/emlid/navio2/cross.cmake
index e12445f6c2..f3a5044acb 100644
--- a/boards/emlid/navio2/cross.cmake
+++ b/boards/emlid/navio2/cross.cmake
@@ -54,7 +54,6 @@ px4_add_board(
 		position_estimator_inav
 		sensors
 		#simulator
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/emlid/navio2/native.cmake b/boards/emlid/navio2/native.cmake
index 0d36980480..b5a4a7034b 100644
--- a/boards/emlid/navio2/native.cmake
+++ b/boards/emlid/navio2/native.cmake
@@ -52,7 +52,6 @@ px4_add_board(
 		position_estimator_inav
 		sensors
 		#simulator
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/gumstix/aerocore2/default.cmake b/boards/gumstix/aerocore2/default.cmake
index 4fe66193f7..bef94d9d54 100644
--- a/boards/gumstix/aerocore2/default.cmake
+++ b/boards/gumstix/aerocore2/default.cmake
@@ -48,7 +48,6 @@ px4_add_board(
 		#tap_esc
 		#telemetry # all available telemetry drivers
 		#test_ppm
-		#vmount
 
 	MODULES
 		#attitude_estimator_q
@@ -72,7 +71,7 @@ px4_add_board(
 		navigator
 		#position_estimator_inav
 		sensors
-		#uavcan
+		vmount
 		#vtol_att_control
 		#wind_estimator
 
diff --git a/boards/intel/aerofc-v1/default.cmake b/boards/intel/aerofc-v1/default.cmake
index ba006e3f5e..88b176b28f 100644
--- a/boards/intel/aerofc-v1/default.cmake
+++ b/boards/intel/aerofc-v1/default.cmake
@@ -30,7 +30,7 @@ px4_add_board(
 		stm32
 		tap_esc
 		#telemetry # all available telemetry drivers
-		#vmount
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -54,7 +54,7 @@ px4_add_board(
 		navigator
 		#position_estimator_inav
 		sensors
-		#uavcan
+		vmount
 		#vtol_att_control
 		#wind_estimator
 
diff --git a/boards/intel/aerofc-v1/rtps.cmake b/boards/intel/aerofc-v1/rtps.cmake
index d36941744a..474563aa47 100644
--- a/boards/intel/aerofc-v1/rtps.cmake
+++ b/boards/intel/aerofc-v1/rtps.cmake
@@ -32,7 +32,7 @@ px4_add_board(
 		stm32
 		tap_esc
 		#telemetry # all available telemetry drivers
-		#vmount
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -57,7 +57,7 @@ px4_add_board(
 		navigator
 		#position_estimator_inav
 		sensors
-		#uavcan
+		vmount
 		#vtol_att_control
 		#wind_estimator
 
diff --git a/boards/nxp/fmuk66-v3/default.cmake b/boards/nxp/fmuk66-v3/default.cmake
index 3595893461..5ed0eb407d 100644
--- a/boards/nxp/fmuk66-v3/default.cmake
+++ b/boards/nxp/fmuk66-v3/default.cmake
@@ -70,7 +70,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/omnibus/f4sd/default.cmake b/boards/omnibus/f4sd/default.cmake
index 7903f82155..a5f9703a16 100644
--- a/boards/omnibus/f4sd/default.cmake
+++ b/boards/omnibus/f4sd/default.cmake
@@ -42,7 +42,6 @@ px4_add_board(
 		#telemetry # all available telemetry drivers
 		telemetry/frsky_telemetry
 		#test_ppm
-		#vmount
 
 	MODULES
 		attitude_estimator_q
@@ -66,7 +65,7 @@ px4_add_board(
 		navigator
 		#position_estimator_inav
 		sensors
-		#uavcan
+		#vmount
 		#vtol_att_control
 		#wind_estimator
 
diff --git a/boards/px4/cannode-v1/default.cmake b/boards/px4/cannode-v1/default.cmake
index 30916f2bdb..4a08ac97b9 100644
--- a/boards/px4/cannode-v1/default.cmake
+++ b/boards/px4/cannode-v1/default.cmake
@@ -44,9 +44,9 @@ px4_add_board(
 	DRIVERS
 		bootloaders
 		stm32
+		uavcannode
 
 	MODULES
-		uavcannode
 
 	SYSTEMCMDS
 		config
diff --git a/boards/px4/esc-v1/default.cmake b/boards/px4/esc-v1/default.cmake
index f53acab5b9..a466be1648 100644
--- a/boards/px4/esc-v1/default.cmake
+++ b/boards/px4/esc-v1/default.cmake
@@ -46,15 +46,9 @@ px4_add_board(
 	DRIVERS
 		bootloaders
 		stm32
+		uavcanesc
 
 	MODULES
-		uavcanesc
-		uavcanesc/nshterm
-		uavcanesc/commands/cfg
-		uavcanesc/commands/selftest
-		uavcanesc/commands/dc
-		uavcanesc/commands/rpm
-		uavcanesc/commands/stat
 
 	SYSTEMCMDS
 		config
diff --git a/boards/px4/fmu-v2/default.cmake b/boards/px4/fmu-v2/default.cmake
index 8ddbdc1d07..5560f41d6f 100644
--- a/boards/px4/fmu-v2/default.cmake
+++ b/boards/px4/fmu-v2/default.cmake
@@ -57,6 +57,7 @@ px4_add_board(
 		#tap_esc
 		#telemetry # all available telemetry drivers
 		#test_ppm
+		#uavcan
 
 	MODULES
 		#attitude_estimator_q
@@ -80,7 +81,6 @@ px4_add_board(
 		navigator
 		#position_estimator_inav
 		sensors
-		#uavcan
 		vmount
 		vtol_att_control
 		#wind_estimator
diff --git a/boards/px4/fmu-v2/lpe.cmake b/boards/px4/fmu-v2/lpe.cmake
index 0321172135..b73a9e1c21 100644
--- a/boards/px4/fmu-v2/lpe.cmake
+++ b/boards/px4/fmu-v2/lpe.cmake
@@ -55,6 +55,7 @@ px4_add_board(
 		#tap_esc
 		#telemetry # all available telemetry drivers
 		#test_ppm
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -78,7 +79,7 @@ px4_add_board(
 		navigator
 		#position_estimator_inav
 		sensors
-		#uavcan
+		vmount
 		#vtol_att_control
 		#wind_estimator
 
diff --git a/boards/px4/fmu-v2/test.cmake b/boards/px4/fmu-v2/test.cmake
index ea61214ca3..0a33abc9bd 100644
--- a/boards/px4/fmu-v2/test.cmake
+++ b/boards/px4/fmu-v2/test.cmake
@@ -56,6 +56,7 @@ px4_add_board(
 		#tap_esc
 		#telemetry # all available telemetry drivers
 		#test_ppm
+		#uavcan
 
 	MODULES
 		#attitude_estimator_q
@@ -79,7 +80,6 @@ px4_add_board(
 		navigator
 		#position_estimator_inav
 		sensors
-		#uavcan
 		vmount
 		vtol_att_control
 		#wind_estimator
diff --git a/boards/px4/fmu-v3/default.cmake b/boards/px4/fmu-v3/default.cmake
index 5290f490e2..7385ff69a5 100644
--- a/boards/px4/fmu-v3/default.cmake
+++ b/boards/px4/fmu-v3/default.cmake
@@ -58,6 +58,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -81,7 +82,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v3/rtps.cmake b/boards/px4/fmu-v3/rtps.cmake
index 97a24d0ff2..c978c54eec 100644
--- a/boards/px4/fmu-v3/rtps.cmake
+++ b/boards/px4/fmu-v3/rtps.cmake
@@ -58,6 +58,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -82,7 +83,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v3/stackcheck.cmake b/boards/px4/fmu-v3/stackcheck.cmake
index b57ef1cfaa..4e4ab3f5d7 100644
--- a/boards/px4/fmu-v3/stackcheck.cmake
+++ b/boards/px4/fmu-v3/stackcheck.cmake
@@ -58,6 +58,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -81,7 +82,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v4/default.cmake b/boards/px4/fmu-v4/default.cmake
index 23fd3375a6..b32ec85d44 100644
--- a/boards/px4/fmu-v4/default.cmake
+++ b/boards/px4/fmu-v4/default.cmake
@@ -43,6 +43,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -66,7 +67,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v4/rtps.cmake b/boards/px4/fmu-v4/rtps.cmake
index e2d4617b65..da809d1721 100644
--- a/boards/px4/fmu-v4/rtps.cmake
+++ b/boards/px4/fmu-v4/rtps.cmake
@@ -44,6 +44,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -68,7 +69,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v4/stackcheck.cmake b/boards/px4/fmu-v4/stackcheck.cmake
index 9d6fca3858..7016685457 100644
--- a/boards/px4/fmu-v4/stackcheck.cmake
+++ b/boards/px4/fmu-v4/stackcheck.cmake
@@ -43,6 +43,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -66,7 +67,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v4pro/default.cmake b/boards/px4/fmu-v4pro/default.cmake
index c407732ab7..7ac4b421fa 100644
--- a/boards/px4/fmu-v4pro/default.cmake
+++ b/boards/px4/fmu-v4pro/default.cmake
@@ -57,6 +57,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -80,7 +81,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v4pro/rtps.cmake b/boards/px4/fmu-v4pro/rtps.cmake
index 63426c46dd..f8e2d4643d 100644
--- a/boards/px4/fmu-v4pro/rtps.cmake
+++ b/boards/px4/fmu-v4pro/rtps.cmake
@@ -57,6 +57,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -81,7 +82,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v5/default.cmake b/boards/px4/fmu-v5/default.cmake
index 008f36f936..9a4e8f3e6a 100644
--- a/boards/px4/fmu-v5/default.cmake
+++ b/boards/px4/fmu-v5/default.cmake
@@ -57,6 +57,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -80,7 +81,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v5/rtps.cmake b/boards/px4/fmu-v5/rtps.cmake
index 3a052907c7..e62b24f225 100644
--- a/boards/px4/fmu-v5/rtps.cmake
+++ b/boards/px4/fmu-v5/rtps.cmake
@@ -58,6 +58,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -82,7 +83,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v5/stackcheck.cmake b/boards/px4/fmu-v5/stackcheck.cmake
index 25e4a05891..c2de53a0fc 100644
--- a/boards/px4/fmu-v5/stackcheck.cmake
+++ b/boards/px4/fmu-v5/stackcheck.cmake
@@ -58,6 +58,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -81,7 +82,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/raspberrypi/cross.cmake b/boards/px4/raspberrypi/cross.cmake
index fe119e6f6d..4627b829b4 100644
--- a/boards/px4/raspberrypi/cross.cmake
+++ b/boards/px4/raspberrypi/cross.cmake
@@ -46,7 +46,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/raspberrypi/native.cmake b/boards/px4/raspberrypi/native.cmake
index 761718d4ba..d3cc473f95 100644
--- a/boards/px4/raspberrypi/native.cmake
+++ b/boards/px4/raspberrypi/native.cmake
@@ -45,7 +45,6 @@ px4_add_board(
 		position_estimator_inav
 		sensors
 		#simulator
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/sitl/default.cmake b/boards/px4/sitl/default.cmake
index 1f4eebe4f7..923e61983c 100644
--- a/boards/px4/sitl/default.cmake
+++ b/boards/px4/sitl/default.cmake
@@ -18,6 +18,7 @@ px4_add_board(
 		pwm_out_sim
 		#telemetry # all available telemetry drivers
 		tone_alarm_sim
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -43,7 +44,6 @@ px4_add_board(
 		replay
 		sensors
 		simulator
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/sitl/rtps.cmake b/boards/px4/sitl/rtps.cmake
index c072e18d99..191d4fe9af 100644
--- a/boards/px4/sitl/rtps.cmake
+++ b/boards/px4/sitl/rtps.cmake
@@ -18,6 +18,7 @@ px4_add_board(
 		#protocol_splitter
 		pwm_out_sim
 		#telemetry # all available telemetry drivers
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -44,7 +45,6 @@ px4_add_board(
 		replay
 		sensors
 		simulator
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/sitl/test.cmake b/boards/px4/sitl/test.cmake
index 6821304ea5..06e489326d 100644
--- a/boards/px4/sitl/test.cmake
+++ b/boards/px4/sitl/test.cmake
@@ -17,6 +17,7 @@ px4_add_board(
 		#magnetometer # all available magnetometer drivers
 		pwm_out_sim
 		#telemetry # all available telemetry drivers
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -42,7 +43,6 @@ px4_add_board(
 		replay
 		sensors
 		simulator
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/stm/32f4discovery/default.cmake b/boards/stm/32f4discovery/default.cmake
index 8322aad8ae..46c950680c 100644
--- a/boards/stm/32f4discovery/default.cmake
+++ b/boards/stm/32f4discovery/default.cmake
@@ -35,7 +35,7 @@ px4_add_board(
 		#tap_esc
 		#telemetry # all available telemetry drivers
 		#test_ppm
-		#vmount
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -59,7 +59,7 @@ px4_add_board(
 		#navigator
 		position_estimator_inav
 		#sensors
-		#uavcan
+		#vmount
 		#vtol_att_control
 		wind_estimator
 
diff --git a/boards/stm/nucleo-F767ZI/default.cmake b/boards/stm/nucleo-F767ZI/default.cmake
index cf55c3e5fb..931a859739 100644
--- a/boards/stm/nucleo-F767ZI/default.cmake
+++ b/boards/stm/nucleo-F767ZI/default.cmake
@@ -44,6 +44,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -67,7 +68,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/thiemar/s2740vc-v1/default.cmake b/boards/thiemar/s2740vc-v1/default.cmake
index 98e132f653..045206334a 100644
--- a/boards/thiemar/s2740vc-v1/default.cmake
+++ b/boards/thiemar/s2740vc-v1/default.cmake
@@ -37,9 +37,9 @@ px4_add_board(
 	DRIVERS
 		bootloaders
 		stm32
+		#uavcannode
 
 	MODULES
-		#uavcannode
 
 	SYSTEMCMDS
 		config
diff --git a/src/modules/uavcan/.gitignore b/src/drivers/uavcan/.gitignore
similarity index 100%
rename from src/modules/uavcan/.gitignore
rename to src/drivers/uavcan/.gitignore
diff --git a/src/modules/uavcan/CMakeLists.txt b/src/drivers/uavcan/CMakeLists.txt
similarity index 100%
rename from src/modules/uavcan/CMakeLists.txt
rename to src/drivers/uavcan/CMakeLists.txt
diff --git a/src/modules/uavcan/actuators/esc.cpp b/src/drivers/uavcan/actuators/esc.cpp
similarity index 100%
rename from src/modules/uavcan/actuators/esc.cpp
rename to src/drivers/uavcan/actuators/esc.cpp
diff --git a/src/modules/uavcan/actuators/esc.hpp b/src/drivers/uavcan/actuators/esc.hpp
similarity index 100%
rename from src/modules/uavcan/actuators/esc.hpp
rename to src/drivers/uavcan/actuators/esc.hpp
diff --git a/src/modules/uavcan/actuators/hardpoint.cpp b/src/drivers/uavcan/actuators/hardpoint.cpp
similarity index 100%
rename from src/modules/uavcan/actuators/hardpoint.cpp
rename to src/drivers/uavcan/actuators/hardpoint.cpp
diff --git a/src/modules/uavcan/actuators/hardpoint.hpp b/src/drivers/uavcan/actuators/hardpoint.hpp
similarity index 100%
rename from src/modules/uavcan/actuators/hardpoint.hpp
rename to src/drivers/uavcan/actuators/hardpoint.hpp
diff --git a/src/modules/uavcan/allocator.hpp b/src/drivers/uavcan/allocator.hpp
similarity index 100%
rename from src/modules/uavcan/allocator.hpp
rename to src/drivers/uavcan/allocator.hpp
diff --git a/src/modules/uavcan/libuavcan b/src/drivers/uavcan/libuavcan
similarity index 100%
rename from src/modules/uavcan/libuavcan
rename to src/drivers/uavcan/libuavcan
diff --git a/src/modules/uavcan/sensors/baro.cpp b/src/drivers/uavcan/sensors/baro.cpp
similarity index 100%
rename from src/modules/uavcan/sensors/baro.cpp
rename to src/drivers/uavcan/sensors/baro.cpp
diff --git a/src/modules/uavcan/sensors/baro.hpp b/src/drivers/uavcan/sensors/baro.hpp
similarity index 100%
rename from src/modules/uavcan/sensors/baro.hpp
rename to src/drivers/uavcan/sensors/baro.hpp
diff --git a/src/modules/uavcan/sensors/gnss.cpp b/src/drivers/uavcan/sensors/gnss.cpp
similarity index 100%
rename from src/modules/uavcan/sensors/gnss.cpp
rename to src/drivers/uavcan/sensors/gnss.cpp
diff --git a/src/modules/uavcan/sensors/gnss.hpp b/src/drivers/uavcan/sensors/gnss.hpp
similarity index 100%
rename from src/modules/uavcan/sensors/gnss.hpp
rename to src/drivers/uavcan/sensors/gnss.hpp
diff --git a/src/modules/uavcan/sensors/mag.cpp b/src/drivers/uavcan/sensors/mag.cpp
similarity index 100%
rename from src/modules/uavcan/sensors/mag.cpp
rename to src/drivers/uavcan/sensors/mag.cpp
diff --git a/src/modules/uavcan/sensors/mag.hpp b/src/drivers/uavcan/sensors/mag.hpp
similarity index 100%
rename from src/modules/uavcan/sensors/mag.hpp
rename to src/drivers/uavcan/sensors/mag.hpp
diff --git a/src/modules/uavcan/sensors/sensor_bridge.cpp b/src/drivers/uavcan/sensors/sensor_bridge.cpp
similarity index 100%
rename from src/modules/uavcan/sensors/sensor_bridge.cpp
rename to src/drivers/uavcan/sensors/sensor_bridge.cpp
diff --git a/src/modules/uavcan/sensors/sensor_bridge.hpp b/src/drivers/uavcan/sensors/sensor_bridge.hpp
similarity index 100%
rename from src/modules/uavcan/sensors/sensor_bridge.hpp
rename to src/drivers/uavcan/sensors/sensor_bridge.hpp
diff --git a/src/modules/uavcan/uavcan_driver.hpp b/src/drivers/uavcan/uavcan_driver.hpp
similarity index 100%
rename from src/modules/uavcan/uavcan_driver.hpp
rename to src/drivers/uavcan/uavcan_driver.hpp
diff --git a/src/modules/uavcan/uavcan_main.cpp b/src/drivers/uavcan/uavcan_main.cpp
similarity index 100%
rename from src/modules/uavcan/uavcan_main.cpp
rename to src/drivers/uavcan/uavcan_main.cpp
diff --git a/src/modules/uavcan/uavcan_main.hpp b/src/drivers/uavcan/uavcan_main.hpp
similarity index 100%
rename from src/modules/uavcan/uavcan_main.hpp
rename to src/drivers/uavcan/uavcan_main.hpp
diff --git a/src/modules/uavcan/uavcan_module.hpp b/src/drivers/uavcan/uavcan_module.hpp
similarity index 100%
rename from src/modules/uavcan/uavcan_module.hpp
rename to src/drivers/uavcan/uavcan_module.hpp
diff --git a/src/modules/uavcan/uavcan_params.c b/src/drivers/uavcan/uavcan_params.c
similarity index 100%
rename from src/modules/uavcan/uavcan_params.c
rename to src/drivers/uavcan/uavcan_params.c
diff --git a/src/modules/uavcan/uavcan_servers.cpp b/src/drivers/uavcan/uavcan_servers.cpp
similarity index 100%
rename from src/modules/uavcan/uavcan_servers.cpp
rename to src/drivers/uavcan/uavcan_servers.cpp
diff --git a/src/modules/uavcan/uavcan_servers.hpp b/src/drivers/uavcan/uavcan_servers.hpp
similarity index 100%
rename from src/modules/uavcan/uavcan_servers.hpp
rename to src/drivers/uavcan/uavcan_servers.hpp
diff --git a/src/modules/uavcan/uavcan_virtual_can_driver.hpp b/src/drivers/uavcan/uavcan_virtual_can_driver.hpp
similarity index 100%
rename from src/modules/uavcan/uavcan_virtual_can_driver.hpp
rename to src/drivers/uavcan/uavcan_virtual_can_driver.hpp
diff --git a/src/modules/uavcanesc/.gitignore b/src/drivers/uavcanesc/.gitignore
similarity index 100%
rename from src/modules/uavcanesc/.gitignore
rename to src/drivers/uavcanesc/.gitignore
diff --git a/src/modules/uavcanesc/CMakeLists.txt b/src/drivers/uavcanesc/CMakeLists.txt
similarity index 94%
rename from src/modules/uavcanesc/CMakeLists.txt
rename to src/drivers/uavcanesc/CMakeLists.txt
index 7154b31e7d..906f214af3 100644
--- a/src/modules/uavcanesc/CMakeLists.txt
+++ b/src/drivers/uavcanesc/CMakeLists.txt
@@ -31,7 +31,9 @@
 #
 ############################################################################
 
-px4_add_git_submodule(TARGET git_uavcan PATH "../uavcan/libuavcan")
+set(LIBUAVCAN_DIR ${PX4_SOURCE_DIR}/src/drivers/uavcan/libuavcan)
+
+px4_add_git_submodule(TARGET git_uavcan PATH ${LIBUAVCAN_DIR})
 
 set(UAVCAN_USE_CPP03 ON CACHE BOOL "uavcan cpp03")
 set(UAVCAN_PLATFORM stm32 CACHE STRING "uavcan platform")
@@ -50,8 +52,6 @@ add_definitions(
 		-DUAVCAN_USE_EXTERNAL_SNPRINT
 		)
 
-set(LIBUAVCAN_DIR ${PX4_SOURCE_DIR}/src/modules/uavcan/libuavcan)
-
 add_subdirectory(${LIBUAVCAN_DIR} uavcanesc_libuavcan)
 add_dependencies(uavcan prebuild_targets)
 
@@ -63,7 +63,6 @@ include_directories(${LIBUAVCAN_DIR}/libuavcan_drivers/stm32/driver/include)
 
 include_directories(${PX4_SOURCE_DIR}/src/drivers/bootloaders)
 
-
 px4_add_module(
 	MODULE modules__uavcanesc
 	MAIN uavcanesc
@@ -86,3 +85,6 @@ px4_add_module(
 		uavcan
 		uavcan_stm32_driver
 	)
+
+add_subdirectory(commands)
+add_subdirectory(nshterm)
diff --git a/src/drivers/uavcanesc/commands/CMakeLists.txt b/src/drivers/uavcanesc/commands/CMakeLists.txt
new file mode 100644
index 0000000000..b3fe8e80a4
--- /dev/null
+++ b/src/drivers/uavcanesc/commands/CMakeLists.txt
@@ -0,0 +1,38 @@
+############################################################################
+#
+#   Copyright (c) 2018 PX4 Development Team. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in
+#    the documentation and/or other materials provided with the
+#    distribution.
+# 3. Neither the name PX4 nor the names of its contributors may be
+#    used to endorse or promote products derived from this software
+#    without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT OWNER OR CONTRIBUTORS 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.
+#
+############################################################################
+
+add_subdirectory(cfg)
+add_subdirectory(dc)
+add_subdirectory(rpm)
+add_subdirectory(selftest)
+add_subdirectory(stat)
diff --git a/src/modules/uavcanesc/commands/cfg/CMakeLists.txt b/src/drivers/uavcanesc/commands/cfg/CMakeLists.txt
similarity index 100%
rename from src/modules/uavcanesc/commands/cfg/CMakeLists.txt
rename to src/drivers/uavcanesc/commands/cfg/CMakeLists.txt
diff --git a/src/modules/uavcanesc/commands/cfg/esc_cfg.cpp b/src/drivers/uavcanesc/commands/cfg/esc_cfg.cpp
similarity index 100%
rename from src/modules/uavcanesc/commands/cfg/esc_cfg.cpp
rename to src/drivers/uavcanesc/commands/cfg/esc_cfg.cpp
diff --git a/src/modules/uavcanesc/commands/cfg/esc_cfg.hpp b/src/drivers/uavcanesc/commands/cfg/esc_cfg.hpp
similarity index 100%
rename from src/modules/uavcanesc/commands/cfg/esc_cfg.hpp
rename to src/drivers/uavcanesc/commands/cfg/esc_cfg.hpp
diff --git a/src/modules/uavcanesc/commands/dc/CMakeLists.txt b/src/drivers/uavcanesc/commands/dc/CMakeLists.txt
similarity index 100%
rename from src/modules/uavcanesc/commands/dc/CMakeLists.txt
rename to src/drivers/uavcanesc/commands/dc/CMakeLists.txt
diff --git a/src/modules/uavcanesc/commands/dc/esc_dc.cpp b/src/drivers/uavcanesc/commands/dc/esc_dc.cpp
similarity index 100%
rename from src/modules/uavcanesc/commands/dc/esc_dc.cpp
rename to src/drivers/uavcanesc/commands/dc/esc_dc.cpp
diff --git a/src/modules/uavcanesc/commands/dc/esc_dc.hpp b/src/drivers/uavcanesc/commands/dc/esc_dc.hpp
similarity index 100%
rename from src/modules/uavcanesc/commands/dc/esc_dc.hpp
rename to src/drivers/uavcanesc/commands/dc/esc_dc.hpp
diff --git a/src/modules/uavcanesc/commands/rpm/CMakeLists.txt b/src/drivers/uavcanesc/commands/rpm/CMakeLists.txt
similarity index 100%
rename from src/modules/uavcanesc/commands/rpm/CMakeLists.txt
rename to src/drivers/uavcanesc/commands/rpm/CMakeLists.txt
diff --git a/src/modules/uavcanesc/commands/rpm/esc_rpm.cpp b/src/drivers/uavcanesc/commands/rpm/esc_rpm.cpp
similarity index 100%
rename from src/modules/uavcanesc/commands/rpm/esc_rpm.cpp
rename to src/drivers/uavcanesc/commands/rpm/esc_rpm.cpp
diff --git a/src/modules/uavcanesc/commands/rpm/esc_rpm.hpp b/src/drivers/uavcanesc/commands/rpm/esc_rpm.hpp
similarity index 100%
rename from src/modules/uavcanesc/commands/rpm/esc_rpm.hpp
rename to src/drivers/uavcanesc/commands/rpm/esc_rpm.hpp
diff --git a/src/modules/uavcanesc/commands/selftest/CMakeLists.txt b/src/drivers/uavcanesc/commands/selftest/CMakeLists.txt
similarity index 100%
rename from src/modules/uavcanesc/commands/selftest/CMakeLists.txt
rename to src/drivers/uavcanesc/commands/selftest/CMakeLists.txt
diff --git a/src/modules/uavcanesc/commands/selftest/esc_selftest.cpp b/src/drivers/uavcanesc/commands/selftest/esc_selftest.cpp
similarity index 100%
rename from src/modules/uavcanesc/commands/selftest/esc_selftest.cpp
rename to src/drivers/uavcanesc/commands/selftest/esc_selftest.cpp
diff --git a/src/modules/uavcanesc/commands/selftest/esc_selftest.hpp b/src/drivers/uavcanesc/commands/selftest/esc_selftest.hpp
similarity index 100%
rename from src/modules/uavcanesc/commands/selftest/esc_selftest.hpp
rename to src/drivers/uavcanesc/commands/selftest/esc_selftest.hpp
diff --git a/src/modules/uavcanesc/commands/stat/CMakeLists.txt b/src/drivers/uavcanesc/commands/stat/CMakeLists.txt
similarity index 100%
rename from src/modules/uavcanesc/commands/stat/CMakeLists.txt
rename to src/drivers/uavcanesc/commands/stat/CMakeLists.txt
diff --git a/src/modules/uavcanesc/commands/stat/esc_stat.cpp b/src/drivers/uavcanesc/commands/stat/esc_stat.cpp
similarity index 100%
rename from src/modules/uavcanesc/commands/stat/esc_stat.cpp
rename to src/drivers/uavcanesc/commands/stat/esc_stat.cpp
diff --git a/src/modules/uavcanesc/commands/stat/esc_stat.hpp b/src/drivers/uavcanesc/commands/stat/esc_stat.hpp
similarity index 100%
rename from src/modules/uavcanesc/commands/stat/esc_stat.hpp
rename to src/drivers/uavcanesc/commands/stat/esc_stat.hpp
diff --git a/src/modules/uavcanesc/indication_controller.cpp b/src/drivers/uavcanesc/indication_controller.cpp
similarity index 100%
rename from src/modules/uavcanesc/indication_controller.cpp
rename to src/drivers/uavcanesc/indication_controller.cpp
diff --git a/src/modules/uavcanesc/indication_controller.hpp b/src/drivers/uavcanesc/indication_controller.hpp
similarity index 100%
rename from src/modules/uavcanesc/indication_controller.hpp
rename to src/drivers/uavcanesc/indication_controller.hpp
diff --git a/src/modules/uavcanesc/led.cpp b/src/drivers/uavcanesc/led.cpp
similarity index 100%
rename from src/modules/uavcanesc/led.cpp
rename to src/drivers/uavcanesc/led.cpp
diff --git a/src/modules/uavcanesc/led.hpp b/src/drivers/uavcanesc/led.hpp
similarity index 100%
rename from src/modules/uavcanesc/led.hpp
rename to src/drivers/uavcanesc/led.hpp
diff --git a/src/modules/uavcanesc/nshterm/CMakeLists.txt b/src/drivers/uavcanesc/nshterm/CMakeLists.txt
similarity index 99%
rename from src/modules/uavcanesc/nshterm/CMakeLists.txt
rename to src/drivers/uavcanesc/nshterm/CMakeLists.txt
index 3e4bcfc1f3..bf87d034a1 100644
--- a/src/modules/uavcanesc/nshterm/CMakeLists.txt
+++ b/src/drivers/uavcanesc/nshterm/CMakeLists.txt
@@ -42,5 +42,3 @@ px4_add_module(
     PRIORITY "SCHED_PRIORITY_DEFAULT-30"
 	DEPENDS
 	)
-
-#
diff --git a/src/modules/uavcanesc/nshterm/nshterm.c b/src/drivers/uavcanesc/nshterm/nshterm.c
similarity index 100%
rename from src/modules/uavcanesc/nshterm/nshterm.c
rename to src/drivers/uavcanesc/nshterm/nshterm.c
diff --git a/src/modules/uavcanesc/uavcan_driver.hpp b/src/drivers/uavcanesc/uavcan_driver.hpp
similarity index 100%
rename from src/modules/uavcanesc/uavcan_driver.hpp
rename to src/drivers/uavcanesc/uavcan_driver.hpp
diff --git a/src/modules/uavcanesc/uavcanesc_main.cpp b/src/drivers/uavcanesc/uavcanesc_main.cpp
similarity index 100%
rename from src/modules/uavcanesc/uavcanesc_main.cpp
rename to src/drivers/uavcanesc/uavcanesc_main.cpp
diff --git a/src/modules/uavcanesc/uavcanesc_main.hpp b/src/drivers/uavcanesc/uavcanesc_main.hpp
similarity index 100%
rename from src/modules/uavcanesc/uavcanesc_main.hpp
rename to src/drivers/uavcanesc/uavcanesc_main.hpp
diff --git a/src/modules/uavcanesc/uavcanesc_params.c b/src/drivers/uavcanesc/uavcanesc_params.c
similarity index 100%
rename from src/modules/uavcanesc/uavcanesc_params.c
rename to src/drivers/uavcanesc/uavcanesc_params.c
diff --git a/src/modules/uavcannode/.gitignore b/src/drivers/uavcannode/.gitignore
similarity index 100%
rename from src/modules/uavcannode/.gitignore
rename to src/drivers/uavcannode/.gitignore
diff --git a/src/modules/uavcannode/CMakeLists.txt b/src/drivers/uavcannode/CMakeLists.txt
similarity index 95%
rename from src/modules/uavcannode/CMakeLists.txt
rename to src/drivers/uavcannode/CMakeLists.txt
index 80bea48f5c..2d2b725bb0 100644
--- a/src/modules/uavcannode/CMakeLists.txt
+++ b/src/drivers/uavcannode/CMakeLists.txt
@@ -31,7 +31,9 @@
 #
 ############################################################################
 
-px4_add_git_submodule(TARGET git_uavcan PATH "../uavcan/libuavcan")
+set(LIBUAVCAN_DIR ${PX4_SOURCE_DIR}/src/drivers/uavcan/libuavcan)
+
+px4_add_git_submodule(TARGET git_uavcan PATH ${LIBUAVCAN_DIR})
 
 set(UAVCAN_USE_CPP03 ON CACHE BOOL "uavcan cpp03")
 set(UAVCAN_PLATFORM stm32 CACHE STRING "uavcan platform")
@@ -50,8 +52,6 @@ add_definitions(
 		-DUAVCAN_USE_EXTERNAL_SNPRINT
 		)
 
-set(LIBUAVCAN_DIR ${PX4_SOURCE_DIR}/src/modules/uavcan/libuavcan)
-
 add_subdirectory(${LIBUAVCAN_DIR} uavcannode_libuavcan)
 add_dependencies(uavcan prebuild_targets)
 
diff --git a/src/modules/uavcannode/indication_controller.cpp b/src/drivers/uavcannode/indication_controller.cpp
similarity index 100%
rename from src/modules/uavcannode/indication_controller.cpp
rename to src/drivers/uavcannode/indication_controller.cpp
diff --git a/src/modules/uavcannode/indication_controller.hpp b/src/drivers/uavcannode/indication_controller.hpp
similarity index 100%
rename from src/modules/uavcannode/indication_controller.hpp
rename to src/drivers/uavcannode/indication_controller.hpp
diff --git a/src/modules/uavcannode/led.cpp b/src/drivers/uavcannode/led.cpp
similarity index 100%
rename from src/modules/uavcannode/led.cpp
rename to src/drivers/uavcannode/led.cpp
diff --git a/src/modules/uavcannode/led.hpp b/src/drivers/uavcannode/led.hpp
similarity index 100%
rename from src/modules/uavcannode/led.hpp
rename to src/drivers/uavcannode/led.hpp
diff --git a/src/modules/uavcannode/resources.cpp b/src/drivers/uavcannode/resources.cpp
similarity index 100%
rename from src/modules/uavcannode/resources.cpp
rename to src/drivers/uavcannode/resources.cpp
diff --git a/src/modules/uavcannode/resources.hpp b/src/drivers/uavcannode/resources.hpp
similarity index 100%
rename from src/modules/uavcannode/resources.hpp
rename to src/drivers/uavcannode/resources.hpp
diff --git a/src/modules/uavcannode/sim_controller.cpp b/src/drivers/uavcannode/sim_controller.cpp
similarity index 100%
rename from src/modules/uavcannode/sim_controller.cpp
rename to src/drivers/uavcannode/sim_controller.cpp
diff --git a/src/modules/uavcannode/sim_controller.hpp b/src/drivers/uavcannode/sim_controller.hpp
similarity index 100%
rename from src/modules/uavcannode/sim_controller.hpp
rename to src/drivers/uavcannode/sim_controller.hpp
diff --git a/src/modules/uavcannode/uavcannode_main.cpp b/src/drivers/uavcannode/uavcannode_main.cpp
similarity index 100%
rename from src/modules/uavcannode/uavcannode_main.cpp
rename to src/drivers/uavcannode/uavcannode_main.cpp
diff --git a/src/modules/uavcannode/uavcannode_main.hpp b/src/drivers/uavcannode/uavcannode_main.hpp
similarity index 100%
rename from src/modules/uavcannode/uavcannode_main.hpp
rename to src/drivers/uavcannode/uavcannode_main.hpp
diff --git a/src/modules/uavcannode/uavcannode_params.c b/src/drivers/uavcannode/uavcannode_params.c
similarity index 100%
rename from src/modules/uavcannode/uavcannode_params.c
rename to src/drivers/uavcannode/uavcannode_params.c
-- 
GitLab