George Djabarov / Mbed OS mbed-os-example-mesh-minimal
Committer:
mbed_official
Date:
Wed Nov 23 08:45:11 2016 +0000
Revision:
24:671ef092f6ca
Parent:
21:6c1e9147037c
Child:
26:b28ab71ff595
Update JenkinsFile (#31)

-Update Thread configuration
.
Commit copied from https://github.com/ARMmbed/mbed-os-example-mesh-minimal

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 21:6c1e9147037c 1 // List of targets with supported RF shields to compile
mbed_official 21:6c1e9147037c 2 def targets = [
mbed_official 21:6c1e9147037c 3 "K64F": ["ATMEL", "MCR20"],
mbed_official 21:6c1e9147037c 4 //"NUCLEO_F401RE": ["ATMEL", "MCR20"],
mbed_official 21:6c1e9147037c 5 "NUCLEO_F429ZI": ["ATMEL", "MCR20"],
mbed_official 21:6c1e9147037c 6 //"NCS36510": ["NCS36510"],
mbed_official 21:6c1e9147037c 7 "UBLOX_EVK_ODIN_W2": ["ATMEL", "MCR20"]
mbed_official 21:6c1e9147037c 8 ]
mbed_official 21:6c1e9147037c 9
mbed_official 21:6c1e9147037c 10 // Map toolchains to compilers
mbed_official 21:6c1e9147037c 11 def toolchains = [
mbed_official 21:6c1e9147037c 12 ARM: "armcc",
mbed_official 21:6c1e9147037c 13 GCC_ARM: "arm-none-eabi-gcc",
mbed_official 21:6c1e9147037c 14 IAR: "iar_arm"
mbed_official 21:6c1e9147037c 15 ]
mbed_official 21:6c1e9147037c 16
mbed_official 21:6c1e9147037c 17 // Supported RF shields
mbed_official 21:6c1e9147037c 18 def radioshields = [
mbed_official 21:6c1e9147037c 19 "ATMEL",
mbed_official 21:6c1e9147037c 20 "MCR20",
mbed_official 21:6c1e9147037c 21 "NCS36510"
mbed_official 21:6c1e9147037c 22 ]
mbed_official 21:6c1e9147037c 23
mbed_official 21:6c1e9147037c 24 // Mesh interfaces: 6LoWPAN and Thread
mbed_official 21:6c1e9147037c 25 def meshinterfaces = [
mbed_official 21:6c1e9147037c 26 "6lp",
mbed_official 21:6c1e9147037c 27 "thd"
mbed_official 21:6c1e9147037c 28 ]
mbed_official 21:6c1e9147037c 29
mbed_official 21:6c1e9147037c 30 def stepsForParallel = [:]
mbed_official 21:6c1e9147037c 31
mbed_official 21:6c1e9147037c 32 // Jenkins pipeline does not support map.each, we need to use oldschool for loop
mbed_official 21:6c1e9147037c 33 for (int i = 0; i < targets.size(); i++) {
mbed_official 21:6c1e9147037c 34 for(int j = 0; j < toolchains.size(); j++) {
mbed_official 21:6c1e9147037c 35 for(int k = 0; k < radioshields.size(); k++) {
mbed_official 21:6c1e9147037c 36 for(int l = 0; l < meshinterfaces.size(); l++) {
mbed_official 21:6c1e9147037c 37 def target = targets.keySet().asList().get(i)
mbed_official 21:6c1e9147037c 38 def allowed_shields = targets.get(target)
mbed_official 21:6c1e9147037c 39 def toolchain = toolchains.keySet().asList().get(j)
mbed_official 21:6c1e9147037c 40 def compilerLabel = toolchains.get(toolchain)
mbed_official 21:6c1e9147037c 41 def radioshield = radioshields.get(k)
mbed_official 21:6c1e9147037c 42 def meshInterface = meshinterfaces.get(l)
mbed_official 21:6c1e9147037c 43 def stepName = "${target} ${toolchain} ${radioshield} ${meshInterface}"
mbed_official 21:6c1e9147037c 44 if(allowed_shields.contains(radioshield)) {
mbed_official 21:6c1e9147037c 45 stepsForParallel[stepName] = buildStep(target, compilerLabel, toolchain, radioshield, meshInterface)
mbed_official 21:6c1e9147037c 46 }
mbed_official 21:6c1e9147037c 47 }
mbed_official 21:6c1e9147037c 48 }
mbed_official 21:6c1e9147037c 49 }
mbed_official 21:6c1e9147037c 50 }
mbed_official 21:6c1e9147037c 51
mbed_official 21:6c1e9147037c 52 timestamps {
mbed_official 21:6c1e9147037c 53 parallel stepsForParallel
mbed_official 21:6c1e9147037c 54 }
mbed_official 21:6c1e9147037c 55
mbed_official 21:6c1e9147037c 56 def buildStep(target, compilerLabel, toolchain, radioShield, meshInterface) {
mbed_official 21:6c1e9147037c 57 return {
mbed_official 21:6c1e9147037c 58 stage ("${target}_${compilerLabel}_${radioShield}_${meshInterface}") {
mbed_official 21:6c1e9147037c 59 node ("${compilerLabel}") {
mbed_official 21:6c1e9147037c 60 deleteDir()
mbed_official 21:6c1e9147037c 61 dir("mbed-os-example-mesh-minimal") {
mbed_official 21:6c1e9147037c 62 checkout scm
mbed_official 21:6c1e9147037c 63
mbed_official 21:6c1e9147037c 64 if ("${radioShield}" == "MCR20") {
mbed_official 21:6c1e9147037c 65 // Replace default rf shield
mbed_official 21:6c1e9147037c 66 execute("sed -i 's/\"value\": \"ATMEL\"/\"value\": \"MCR20\"/' mbed_app.json")
mbed_official 21:6c1e9147037c 67 }
mbed_official 21:6c1e9147037c 68
mbed_official 21:6c1e9147037c 69 if ("${radioShield}" == "NCS36510") {
mbed_official 21:6c1e9147037c 70 // Replace default rf shield
mbed_official 21:6c1e9147037c 71 execute("sed -i 's/\"value\": \"ATMEL\"/\"value\": \"NCS36510\"/' mbed_app.json")
mbed_official 21:6c1e9147037c 72 }
mbed_official 21:6c1e9147037c 73
mbed_official 21:6c1e9147037c 74 if ("${meshInterface}" == "thd") {
mbed_official 21:6c1e9147037c 75 // Change mesh interface to thread
mbed_official 21:6c1e9147037c 76 execute("sed -i 's/\"value\": \"MESH_LOWPAN\"/\"value\": \"MESH_THREAD\"/' mbed_app.json")
mbed_official 21:6c1e9147037c 77
mbed_official 24:671ef092f6ca 78 // Change operation mode to Thread router
mbed_official 21:6c1e9147037c 79 execute("sed -i 's/\"NANOSTACK\", \"LOWPAN_ROUTER\", \"COMMON_PAL\"/\"NANOSTACK\", \"THREAD_ROUTER\", \"COMMON_PAL\"/' mbed_app.json")
mbed_official 24:671ef092f6ca 80
mbed_official 24:671ef092f6ca 81 // Increase HEAP size
mbed_official 24:671ef092f6ca 82 execute("sed -i 's/\"mbed-mesh-api.heap-size\": 10000/\"mbed-mesh-api.heap-size\": 32000/' mbed_app.json")
mbed_official 24:671ef092f6ca 83
mbed_official 24:671ef092f6ca 84 // Use systest Thread border router for testing (CH=18, PANID=BAAB)
mbed_official 24:671ef092f6ca 85 execute("sed -i 's/\"mbed-mesh-api.thread-config-channel\": 12/\"mbed-mesh-api.thread-config-channel\": 18/' mbed_app.json")
mbed_official 24:671ef092f6ca 86 execute("sed -i 's/\"mbed-mesh-api.thread-config-panid\": \"0xDEFA\"/\"mbed-mesh-api.thread-config-panid\": \"0xBAAB\"/' mbed_app.json")
mbed_official 24:671ef092f6ca 87 // Activate traces
mbed_official 24:671ef092f6ca 88 execute("sed -i 's/\"mbed-trace.enable\": false/\"mbed-trace.enable\": true/' mbed_app.json")
mbed_official 21:6c1e9147037c 89 }
mbed_official 21:6c1e9147037c 90
mbed_official 21:6c1e9147037c 91 if ("${meshInterface}" == "6lp") {
mbed_official 21:6c1e9147037c 92 // Use systest border router for testing
mbed_official 21:6c1e9147037c 93 execute("sed -i 's/\"mbed-mesh-api.6lowpan-nd-channel\": 12/\"mbed-mesh-api.6lowpan-nd-channel\": 18/' mbed_app.json")
mbed_official 21:6c1e9147037c 94 }
mbed_official 21:6c1e9147037c 95
mbed_official 21:6c1e9147037c 96 execute ("mbed deploy --protocol ssh")
mbed_official 21:6c1e9147037c 97 // Checkout latest mbed-os master
mbed_official 21:6c1e9147037c 98 dir("mbed-os") {
mbed_official 21:6c1e9147037c 99 execute ("git fetch origin master")
mbed_official 21:6c1e9147037c 100 execute ("git checkout FETCH_HEAD")
mbed_official 21:6c1e9147037c 101 }
mbed_official 21:6c1e9147037c 102 execute ("mbed compile --build out/${target}_${toolchain}_${radioShield}_${meshInterface}/ -m ${target} -t ${toolchain} -c")
mbed_official 21:6c1e9147037c 103 }
mbed_official 21:6c1e9147037c 104 archive '**/mbed-os-example-mesh-minimal.bin'
mbed_official 21:6c1e9147037c 105 }
mbed_official 21:6c1e9147037c 106 }
mbed_official 21:6c1e9147037c 107 }
mbed_official 21:6c1e9147037c 108 }