a simple mbed client example

Fork of Program4_mbedClient by Make NTU Hackathon

Revision:
27:3d32587bf8f7
Parent:
18:628e22df9c41
Child:
36:bfb6816a677c
--- a/Jenkinsfile	Fri Oct 28 14:00:20 2016 +0100
+++ b/Jenkinsfile	Tue Nov 01 11:45:11 2016 +0000
@@ -1,6 +1,8 @@
 // List of targets to compile
 def targets = [
-  "K64F"
+  "K64F",
+  "NUCLEO_F429ZI",
+  "UBLOX_EVK_ODIN_W2"
   ]
   
 // Map toolchains to compilers
@@ -11,23 +13,37 @@
   ]
 
 def configurations = [
-  "default",
-  "thread"
+  "def": ["ETH"],
+  "thd": ["ATMEL", "MCR20"],
+  "6lp": ["ATMEL", "MCR20"]
   ]
-  
+
+def connectiontypes = [
+  "ETH",
+  "ATMEL",
+  "MCR20"
+  ]
+
 def stepsForParallel = [:]
 
 // Jenkins pipeline does not support map.each, we need to use oldschool for loop
 for (int i = 0; i < targets.size(); i++) {
   for(int j = 0; j < toolchains.size(); j++) {
     for(int k = 0; k < configurations.size(); k++) {
-      def target = targets.get(i)
-      def toolchain = toolchains.keySet().asList().get(j)
-      def compilerLabel = toolchains.get(toolchain)
-      def config = configurations.get(k)
-  
-      def stepName = "${target} ${toolchain} ${config}"
-      stepsForParallel[stepName] = buildStep(target, compilerLabel, toolchain, config)
+      for(int l = 0; l < connectiontypes.size(); l++) {
+
+        def target = targets.get(i)
+        def toolchain = toolchains.keySet().asList().get(j)
+        def compilerLabel = toolchains.get(toolchain)
+        def config = configurations.keySet().asList().get(k)
+        def allowed_configs = configurations.get(config)
+        def connectiontype = connectiontypes.get(l)
+
+        def stepName = "${target} ${toolchain} ${config} ${connectiontype}"
+        if(allowed_configs.contains(connectiontype)) {
+          stepsForParallel[stepName] = buildStep(target, compilerLabel, toolchain, config, connectiontype)
+        }
+      }
     }
   }
 }
@@ -36,30 +52,46 @@
   parallel stepsForParallel
 }
 
-def buildStep(target, compilerLabel, toolchain, configName) {
+def buildStep(target, compilerLabel, toolchain, configName, connectiontype) {
   return {
-    stage ("${target}_${compilerLabel}_${configName}") {
+    stage ("${target}_${compilerLabel}_${configName}_${connectiontype}") {
       node ("${compilerLabel}") {
         deleteDir()
         dir("mbed-os-example-client") {
           checkout scm
           
-          if ("${configName}" == "thread") {
-            // Add IPV6 feature
-            execute("sed -i 's/\"CLIENT\", \"COMMON_PAL\"/\"CLIENT\", \"IPV6\", \"COMMON_PAL\"/' mbed_app.json")
+          if ("${configName}" == "thd") {
+            // Change device type to Thread router
+            execute("sed -i 's/\"NANOSTACK\", \"LOWPAN_ROUTER\", \"COMMON_PAL\"/\"NANOSTACK\", \"THREAD_ROUTER\", \"COMMON_PAL\"/' mbed_app.json")
             // Change connection type to thread
             execute ("sed -i 's/\"value\": \"ETHERNET\"/\"value\": \"MESH_THREAD\"/' mbed_app.json")
-            // Add atmel-rf-driver
-            execute ("mbed add https://github.com/ARMmbed/atmel-rf-driver")
           }
-          
+
+          if ("${configName}" == "6lp") {
+            // Change connection type to 6LoWPAN
+            execute ("sed -i 's/\"value\": \"ETHERNET\"/\"value\": \"MESH_LOWPAN_ND\"/' mbed_app.json")
+
+            // Change channel for HW tests
+            execute ("sed -i 's/\"mbed-mesh-api.6lowpan-nd-channel\": 12/\"mbed-mesh-api.6lowpan-nd-channel\": 18/' mbed_app.json")
+          }
+
+          if ("${connectiontype}" == "MCR20") {
+            // Replace default rf shield
+            execute ("sed -i 's/\"value\": \"ATMEL\"/\"value\": \"MCR20\"/' mbed_app.json")
+          }
+
           // Copy security.h to build
           mbed.getSecurityFile()
   
           execute ("mbed deploy --protocol ssh")
-          execute ("mbed compile --build .build/${target}_${compilerLabel}_${configName}/ -m ${target} -t ${toolchain} -c")
-          archive '**/mbed-os-example-client.bin'
+
+          dir("mbed-os") {
+            execute ("git fetch origin latest")
+            execute ("git checkout FETCH_HEAD")
+          }
+          execute ("mbed compile --build out/${target}_${toolchain}_${configName}_${connectiontype}/ -m ${target} -t ${toolchain} -c")
         }
+        archive '**/mbed-os-example-client.bin'
       }
     }
   }