George Djabarov / Mbed OS mbed-os-example-mesh-minimal
Committer:
mbed_official
Date:
Wed Sep 20 12:17:51 2017 +0100
Revision:
52:27692043e962
Parent:
40:e0b9755ae4f1
Child:
72:a7c594402382
Initial commit.
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 52:27692043e962 1 /*
mbed_official 52:27692043e962 2 * Copyright (c) 2016 ARM Limited. All rights reserved.
mbed_official 52:27692043e962 3 * SPDX-License-Identifier: Apache-2.0
mbed_official 52:27692043e962 4 * Licensed under the Apache License, Version 2.0 (the License); you may
mbed_official 52:27692043e962 5 * not use this file except in compliance with the License.
mbed_official 52:27692043e962 6 * You may obtain a copy of the License at
mbed_official 52:27692043e962 7 *
mbed_official 52:27692043e962 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 52:27692043e962 9 *
mbed_official 52:27692043e962 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 52:27692043e962 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
mbed_official 52:27692043e962 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 52:27692043e962 13 * See the License for the specific language governing permissions and
mbed_official 52:27692043e962 14 * limitations under the License.
mbed_official 52:27692043e962 15 */
Seppo Takalo 0:bde1843b9885 16 #include "mbed.h"
Seppo Takalo 0:bde1843b9885 17 #include "rtos.h"
Seppo Takalo 0:bde1843b9885 18 #include "NanostackInterface.h"
mbed_official 52:27692043e962 19 #include "mbed-trace/mbed_trace.h"
mbed_official 52:27692043e962 20
mbed_official 52:27692043e962 21 #if MBED_CONF_APP_ENABLE_LED_CONTROL_EXAMPLE
mbed_official 52:27692043e962 22 #include "mesh_led_control_example.h"
mbed_official 52:27692043e962 23 #endif
mbed_official 52:27692043e962 24
mbed_official 52:27692043e962 25 void trace_printer(const char* str) {
mbed_official 52:27692043e962 26 printf("%s\n", str);
mbed_official 52:27692043e962 27 }
Seppo Takalo 0:bde1843b9885 28
mbed_official 16:22f072355a2c 29 #define ATMEL 1
mbed_official 16:22f072355a2c 30 #define MCR20 2
mbed_official 19:f55c7983f8ab 31 #define NCS36510 3
mbed_official 52:27692043e962 32 #define KW24D 4
mbed_official 16:22f072355a2c 33
mbed_official 16:22f072355a2c 34 #define MESH_LOWPAN 3
mbed_official 16:22f072355a2c 35 #define MESH_THREAD 4
mbed_official 16:22f072355a2c 36
mbed_official 16:22f072355a2c 37 #if MBED_CONF_APP_RADIO_TYPE == ATMEL
mbed_official 16:22f072355a2c 38 #include "NanostackRfPhyAtmel.h"
mbed_official 16:22f072355a2c 39 NanostackRfPhyAtmel rf_phy(ATMEL_SPI_MOSI, ATMEL_SPI_MISO, ATMEL_SPI_SCLK, ATMEL_SPI_CS,
mbed_official 16:22f072355a2c 40 ATMEL_SPI_RST, ATMEL_SPI_SLP, ATMEL_SPI_IRQ, ATMEL_I2C_SDA, ATMEL_I2C_SCL);
mbed_official 52:27692043e962 41 #elif MBED_CONF_APP_RADIO_TYPE == MCR20 || MBED_CONF_APP_RADIO_TYPE == KW24D
mbed_official 16:22f072355a2c 42 #include "NanostackRfPhyMcr20a.h"
mbed_official 16:22f072355a2c 43 NanostackRfPhyMcr20a rf_phy(MCR20A_SPI_MOSI, MCR20A_SPI_MISO, MCR20A_SPI_SCLK, MCR20A_SPI_CS, MCR20A_SPI_RST, MCR20A_SPI_IRQ);
mbed_official 19:f55c7983f8ab 44
mbed_official 19:f55c7983f8ab 45 #elif MBED_CONF_APP_RADIO_TYPE == NCS36510
mbed_official 19:f55c7983f8ab 46 #include "NanostackRfPhyNcs36510.h"
mbed_official 19:f55c7983f8ab 47 NanostackRfPhyNcs36510 rf_phy;
mbed_official 16:22f072355a2c 48 #endif //MBED_CONF_APP_RADIO_TYPE
mbed_official 16:22f072355a2c 49
mbed_official 16:22f072355a2c 50 #if MBED_CONF_APP_MESH_TYPE == MESH_LOWPAN
Seppo Takalo 0:bde1843b9885 51 LoWPANNDInterface mesh;
mbed_official 16:22f072355a2c 52 #elif MBED_CONF_APP_MESH_TYPE == MESH_THREAD
mbed_official 16:22f072355a2c 53 ThreadInterface mesh;
mbed_official 16:22f072355a2c 54 #endif //MBED_CONF_APP_MESH_TYPE
mbed_official 16:22f072355a2c 55
mbed_official 52:27692043e962 56 static Mutex SerialOutMutex;
mbed_official 52:27692043e962 57
mbed_official 52:27692043e962 58 void serial_out_mutex_wait()
mbed_official 52:27692043e962 59 {
mbed_official 52:27692043e962 60 SerialOutMutex.lock();
mbed_official 52:27692043e962 61 }
mbed_official 52:27692043e962 62
mbed_official 52:27692043e962 63 void serial_out_mutex_release()
mbed_official 52:27692043e962 64 {
mbed_official 52:27692043e962 65 SerialOutMutex.unlock();
mbed_official 52:27692043e962 66 }
mbed_official 52:27692043e962 67
Seppo Takalo 0:bde1843b9885 68 int main()
Seppo Takalo 0:bde1843b9885 69 {
mbed_official 52:27692043e962 70 mbed_trace_init();
mbed_official 52:27692043e962 71 mbed_trace_print_function_set(trace_printer);
mbed_official 52:27692043e962 72 mbed_trace_mutex_wait_function_set( serial_out_mutex_wait );
mbed_official 52:27692043e962 73 mbed_trace_mutex_release_function_set( serial_out_mutex_release );
mbed_official 52:27692043e962 74
mbed_official 52:27692043e962 75 printf("Start mesh-minimal application\n");
mbed_official 52:27692043e962 76 printf("Build: %s %s\nMesh type: %d\n", __DATE__, __TIME__, MBED_CONF_APP_MESH_TYPE);
mbed_official 4:567d72fb3d84 77
mbed_official 52:27692043e962 78 #if MBED_CONF_APP_ENABLE_LED_CONTROL_EXAMPLE
mbed_official 52:27692043e962 79 if (MBED_CONF_APP_BUTTON != NC && MBED_CONF_APP_LED != NC) {
mbed_official 52:27692043e962 80 start_blinking();
mbed_official 52:27692043e962 81 } else {
mbed_official 52:27692043e962 82 printf("pins not configured. Skipping the LED control.\n");
mbed_official 52:27692043e962 83 }
mbed_official 4:567d72fb3d84 84 #endif
mbed_official 52:27692043e962 85
mbed_official 40:e0b9755ae4f1 86 printf("\n\nConnecting...\n");
mbed_official 16:22f072355a2c 87 mesh.initialize(&rf_phy);
mbed_official 52:27692043e962 88 int error = mesh.connect();
mbed_official 52:27692043e962 89 if (error) {
mbed_official 52:27692043e962 90 printf("Connection failed! %d\n", error);
mbed_official 52:27692043e962 91 return error;
Seppo Takalo 0:bde1843b9885 92 }
Seppo Takalo 0:bde1843b9885 93
mbed_official 17:ee2610e1cb78 94 while (NULL == mesh.get_ip_address())
mbed_official 17:ee2610e1cb78 95 Thread::wait(500);
mbed_official 17:ee2610e1cb78 96
mbed_official 40:e0b9755ae4f1 97 printf("connected. IP = %s\n", mesh.get_ip_address());
mbed_official 52:27692043e962 98
mbed_official 52:27692043e962 99 #if MBED_CONF_APP_ENABLE_LED_CONTROL_EXAMPLE
mbed_official 52:27692043e962 100 // Network found, start socket example
mbed_official 52:27692043e962 101 if (MBED_CONF_APP_BUTTON != NC && MBED_CONF_APP_LED != NC) {
mbed_official 52:27692043e962 102 cancel_blinking();
mbed_official 52:27692043e962 103 start_mesh_led_control_example((NetworkInterface *)&mesh);
mbed_official 52:27692043e962 104 }
mbed_official 52:27692043e962 105 #endif
mbed_official 1:24cff46332de 106 }