mbedConnectorInterface sample endpoint utilizing 3g cellular radio as the underlying connection transport.

Dependencies:   LM75B mbed mbedConnectorInterface mbedEndpointNetwork_Ublox

Committer:
ansond
Date:
Sat Sep 05 20:34:23 2015 +0000
Revision:
11:4ae75a76dbe5
Parent:
10:3680052f3baa
Child:
12:b720ab21ac83
updated libs

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ansond 0:a507bbd93e47 1 /**
ansond 0:a507bbd93e47 2 * @file main.cpp
ansond 0:a507bbd93e47 3 * @brief mbed Connected Home Endpoint main entry point
ansond 0:a507bbd93e47 4 * @author Doug Anson
ansond 0:a507bbd93e47 5 * @version 1.0
ansond 0:a507bbd93e47 6 * @see
ansond 0:a507bbd93e47 7 *
ansond 0:a507bbd93e47 8 * Copyright (c) 2014
ansond 0:a507bbd93e47 9 *
ansond 0:a507bbd93e47 10 * Licensed under the Apache License, Version 2.0 (the "License");
ansond 0:a507bbd93e47 11 * you may not use this file except in compliance with the License.
ansond 0:a507bbd93e47 12 * You may obtain a copy of the License at
ansond 0:a507bbd93e47 13 *
ansond 0:a507bbd93e47 14 * http://www.apache.org/licenses/LICENSE-2.0
ansond 0:a507bbd93e47 15 *
ansond 0:a507bbd93e47 16 * Unless required by applicable law or agreed to in writing, software
ansond 0:a507bbd93e47 17 * distributed under the License is distributed on an "AS IS" BASIS,
ansond 0:a507bbd93e47 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ansond 0:a507bbd93e47 19 * See the License for the specific language governing permissions and
ansond 0:a507bbd93e47 20 * limitations under the License.
ansond 0:a507bbd93e47 21 */
ansond 10:3680052f3baa 22
ansond 0:a507bbd93e47 23 // mbed Connector Interface (configuration)
ansond 0:a507bbd93e47 24 #include "mbedConnectorInterface.h"
ansond 0:a507bbd93e47 25
ansond 10:3680052f3baa 26 // mbed Endpoint Network
ansond 10:3680052f3baa 27 #include "mbedEndpointNetwork.h"
ansond 0:a507bbd93e47 28
ansond 0:a507bbd93e47 29 // Static Resources
ansond 0:a507bbd93e47 30 #include "StaticResource.h"
ansond 7:68f1eadf4a63 31 StaticResource mfg(&logger,"dev/mfg","u-blox");
ansond 7:68f1eadf4a63 32 StaticResource model(&logger,"dev/mdl","mbed cellular endpoint");
ansond 0:a507bbd93e47 33
ansond 0:a507bbd93e47 34 //
ansond 0:a507bbd93e47 35 // Dynamic Resource Note:
ansond 0:a507bbd93e47 36 //
ansond 0:a507bbd93e47 37 // mbedConnectorInterface supports up to IPT_MAX_ENTRIES
ansond 0:a507bbd93e47 38 // (currently 5) independent dynamic resources.
ansond 0:a507bbd93e47 39 //
ansond 0:a507bbd93e47 40 // You can increase this (at the cost of memory)
ansond 0:a507bbd93e47 41 // in mbedConnectorinterface.h
ansond 0:a507bbd93e47 42 //
ansond 0:a507bbd93e47 43
ansond 0:a507bbd93e47 44 // Sample Dynamic Resource
ansond 0:a507bbd93e47 45 #include "SampleDynamicResource.h"
ansond 0:a507bbd93e47 46 SampleDynamicResource sample(&logger,"999/999/9999");
ansond 0:a507bbd93e47 47
ansond 0:a507bbd93e47 48 // Light Resource
ansond 0:a507bbd93e47 49 #include "LightResource.h"
ansond 0:a507bbd93e47 50 LightResource light(&logger,"311/0/5850");
ansond 0:a507bbd93e47 51
ansond 0:a507bbd93e47 52 // Temperature Resource
ansond 0:a507bbd93e47 53 #include "TemperatureResource.h"
ansond 6:15431341f373 54 TemperatureResource temperature(&logger,"303/0/5700",true);
ansond 0:a507bbd93e47 55
ansond 7:68f1eadf4a63 56 // Location Resource
ansond 7:68f1eadf4a63 57 #include "LocationResource.h"
ansond 7:68f1eadf4a63 58 LocationResource location(&logger,"999/0/1234",true);
ansond 7:68f1eadf4a63 59
ansond 0:a507bbd93e47 60 // Set our own unique endpoint name
ansond 7:68f1eadf4a63 61 #define MY_ENDPOINT_NAME "mbed-3g-endpoint"
ansond 0:a507bbd93e47 62
ansond 0:a507bbd93e47 63 // My NSP Domain
ansond 11:4ae75a76dbe5 64 #define MY_NSP_DOMAIN "domain"
ansond 11:4ae75a76dbe5 65
ansond 11:4ae75a76dbe5 66 // Customization Example: My custom NSP IPv4 address and NSP CoAP port
ansond 11:4ae75a76dbe5 67 //uint8_t my_nsp_address[NSP_IP_ADDRESS_LENGTH] = {23,99,29,171}; // connector (api.connector.mbed.org)
ansond 0:a507bbd93e47 68
ansond 11:4ae75a76dbe5 69 //#define MY_NSP_DOMAIN "311faa04f3ba4a12a893fbfd0ab95d67"
ansond 11:4ae75a76dbe5 70 //uint8_t my_nsp_address[NSP_IP_ADDRESS_LENGTH] = {23,99,29,171}; // connector (api.connector.mbed.org)
ansond 11:4ae75a76dbe5 71 //uint8_t my_nsp_address[NSP_IP_ADDRESS_LENGTH] = {70,37,91,233}; // azure
ansond 11:4ae75a76dbe5 72 //uint8_t my_nsp_address[NSP_IP_ADDRESS_LENGTH] = {52,25,1,47}; // EC2
ansond 11:4ae75a76dbe5 73 uint8_t my_nsp_address[NSP_IP_ADDRESS_LENGTH] = {129,41,131,150}; // bluemix vm
ansond 11:4ae75a76dbe5 74 //uint8_t my_nsp_address[NSP_IP_ADDRESS_LENGTH] = {129,41,227,18}; // bluemix container
ansond 11:4ae75a76dbe5 75 //uint8_t my_nsp_address[NSP_IP_ADDRESS_LENGTH] = {10,1,0,150}; // local container
ansond 11:4ae75a76dbe5 76 //uint8_t my_nsp_address[NSP_IP_ADDRESS_LENGTH] = {10,1,0,26}; // local container
ansond 11:4ae75a76dbe5 77 //uint8_t my_nsp_address[NSP_IP_ADDRESS_LENGTH] = {192,168,1,147}; // local container
ansond 11:4ae75a76dbe5 78
ansond 0:a507bbd93e47 79 int my_nsp_coap_port = 5683;
ansond 0:a507bbd93e47 80
ansond 0:a507bbd93e47 81 // called from the Endpoint::start() below to create resources and the endpoint internals...
ansond 0:a507bbd93e47 82 Connector::Options *configure_endpoint(Connector::OptionsBuilder &config)
ansond 0:a507bbd93e47 83 {
ansond 0:a507bbd93e47 84 // Build the endpoint configuration parameters
ansond 0:a507bbd93e47 85 logger.log("configure_endpoint: building endpoint configuration...");
ansond 0:a507bbd93e47 86 return config.setEndpointNodename(MY_ENDPOINT_NAME) // custom endpoint name
ansond 0:a507bbd93e47 87 .setNSPAddress(my_nsp_address) // custom NSP address
ansond 0:a507bbd93e47 88 .setDomain(MY_NSP_DOMAIN) // custom NSP domain
ansond 0:a507bbd93e47 89 .setNSPPortNumber(my_nsp_coap_port) // custom NSP CoAP port
ansond 0:a507bbd93e47 90
ansond 4:c022c5e05347 91 // enable or disable(default) immediate observationing control
ansond 4:c022c5e05347 92 .setImmedateObservationEnabled(true)
ansond 4:c022c5e05347 93
ansond 4:c022c5e05347 94 // enable or disable(default) GET-based observation control
ansond 4:c022c5e05347 95 .setEnableGETObservationControl(false)
ansond 4:c022c5e05347 96
ansond 0:a507bbd93e47 97 // add the static resource representing this endpoint
ansond 0:a507bbd93e47 98 .addResource(&mfg)
ansond 0:a507bbd93e47 99 .addResource(&model)
ansond 0:a507bbd93e47 100
ansond 0:a507bbd93e47 101 // add a Sample Dynamic Resource
ansond 0:a507bbd93e47 102 .addResource(&sample)
ansond 0:a507bbd93e47 103
ansond 0:a507bbd93e47 104 // Add my specific physical dynamic resources...
ansond 0:a507bbd93e47 105 .addResource(&light)
ansond 10:3680052f3baa 106 .addResource(&temperature,10000) // observe every 10 seconds
ansond 10:3680052f3baa 107 .addResource(&location,30000) // observe every 30 seconds
ansond 0:a507bbd93e47 108
ansond 0:a507bbd93e47 109 // finalize the configuration...
ansond 0:a507bbd93e47 110 .build();
ansond 0:a507bbd93e47 111 }
ansond 0:a507bbd93e47 112
ansond 0:a507bbd93e47 113 // main entry point...
ansond 0:a507bbd93e47 114 int main()
ansond 0:a507bbd93e47 115 {
ansond 0:a507bbd93e47 116 // Announce
ansond 7:68f1eadf4a63 117 logger.log("\r\n\r\nmbed mDS Sample Endpoint v1.0 (3G Cellular)");
ansond 0:a507bbd93e47 118
ansond 0:a507bbd93e47 119 // we have to plumb our network first
ansond 0:a507bbd93e47 120 Connector::Endpoint::plumbNetwork();
ansond 0:a507bbd93e47 121
ansond 0:a507bbd93e47 122 // starts the endpoint by finalizing its configuration (configure_endpoint() above called),creating a Thread and reading NSP events...
ansond 0:a507bbd93e47 123 logger.log("Start the endpoint to finish setup and enter the main loop...");
ansond 0:a507bbd93e47 124 Connector::Endpoint::start();
ansond 7:68f1eadf4a63 125 }