Make Kernel check not mandatory 57/10357/4
authorRomain Forlot <romain.forlot@iot.bzh>
Tue, 25 Jul 2017 13:10:06 +0000 (15:10 +0200)
committerRomain Forlot <romain.forlot@iot.bzh>
Tue, 25 Jul 2017 13:10:06 +0000 (15:10 +0200)
Use 2 different checks, one specify a mandatory kernel version
and the other will output a warning and position a preprocessing
variable that can be used in the code to exclude portions of code
that use kernel features not available under a certain version.

Bug-AGL: SPEC-772

Change-Id: I04523abe96749aeeb185e90eee154fd70a4cbf19
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
conf.d/app-templates
conf.d/cmake/config.cmake
low-can-binding/utils/config-parser.cpp
low-can-binding/utils/socketcan-bcm.hpp

index db6a07f..ec101c7 160000 (submodule)
@@ -1 +1 @@
-Subproject commit db6a07f636a3f2a381dfcc0f52b16f59127496f0
+Subproject commit ec101c751a6359483a00c0c3923d502845f45126
index 3f36105..38af7e6 100644 (file)
@@ -47,11 +47,19 @@ set(PROJECT_APP_TEMPLATES_DIR "conf.d/app-templates")
 # ----------------------------------
 set(CMAKE_BUILD_TYPE "DEBUG")
 
-# Kernel selection if needed. Impose a minimal version.
-# NOTE FOR NOW IT CHECKS KERNEL Yocto SDK Kernel version
-# else only HOST VERSION
+# Kernel selection if needed. You can choose between a
+# mandatory version to impose a minimal version.
+# Or check Kernel minimal version and just print a Warning
+# about missing features and define a preprocessor variable
+# to be used as preprocessor condition in code to disable
+# incompatibles features. Preprocessor define is named
+# KERNEL_MINIMAL_VERSION_OK.
+#
+# NOTE*** FOR NOW IT CHECKS KERNEL Yocto environment and
+# Yocto SDK Kernel version.
 # -----------------------------------------------
-set (kernel_minimal_version 4.8)
+#set(kernel_mandatory_version 4.8)
+set(kernel_minimal_version 4.8)
 
 # Compiler selection if needed. Impose a minimal version.
 # -----------------------------------------------
index e3936eb..98d6ad5 100644 (file)
@@ -39,7 +39,7 @@ namespace utils
        {
                if (config_content_.size() <= 0)
                {
-                       AFB_ERROR("Can't load the INI config file.");
+                       AFB_ERROR("Can't load the INI config file: /etc/dev-mapping.conf.");
                        return false;
                }
                        AFB_DEBUG("Configuration file parsed");
index 97f093d..22927cb 100644 (file)
@@ -28,12 +28,14 @@ namespace utils
                struct can_frame frames;
        };
 
+#ifdef KERNEL_MINIMAL_VERSION_OK
        struct canfd_bcm_msg
        {
                struct bcm_msg_head msg_head;
                struct canfd_frame frames;
                canfd_bcm_msg() { msg_head.flags |= CAN_FD_FRAME; }
        };
+#endif
 
        /// @brief derivated socketcan class specialized for BCM CAN socket.
        class socketcan_bcm_t : public socketcan_t