mbed Ethernet-based CoAP heartrate endpoint for Dreamforce 2015

Dependencies:   GroveEarbudSensor mbed mbedConnectorInterface mbedEndpointNetwork

Committer:
ansond
Date:
Tue Sep 01 22:09:29 2015 +0000
Revision:
3:4246dd70c0dc
Parent:
2:630ffd1c52cc
Child:
4:7efe785afc7f
updates

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ansond 0:b1fc60dd398f 1 /**
ansond 0:b1fc60dd398f 2 * @file main.cpp
ansond 0:b1fc60dd398f 3 * @brief mbed Connected Home Endpoint main entry point
ansond 0:b1fc60dd398f 4 * @author Doug Anson
ansond 0:b1fc60dd398f 5 * @version 1.0
ansond 0:b1fc60dd398f 6 * @see
ansond 0:b1fc60dd398f 7 *
ansond 0:b1fc60dd398f 8 * Copyright (c) 2014
ansond 0:b1fc60dd398f 9 *
ansond 0:b1fc60dd398f 10 * Licensed under the Apache License, Version 2.0 (the "License");
ansond 0:b1fc60dd398f 11 * you may not use this file except in compliance with the License.
ansond 0:b1fc60dd398f 12 * You may obtain a copy of the License at
ansond 0:b1fc60dd398f 13 *
ansond 0:b1fc60dd398f 14 * http://www.apache.org/licenses/LICENSE-2.0
ansond 0:b1fc60dd398f 15 *
ansond 0:b1fc60dd398f 16 * Unless required by applicable law or agreed to in writing, software
ansond 0:b1fc60dd398f 17 * distributed under the License is distributed on an "AS IS" BASIS,
ansond 0:b1fc60dd398f 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ansond 0:b1fc60dd398f 19 * See the License for the specific language governing permissions and
ansond 0:b1fc60dd398f 20 * limitations under the License.
ansond 0:b1fc60dd398f 21 */
ansond 0:b1fc60dd398f 22
ansond 0:b1fc60dd398f 23 // mbed Connector Interface (configuration)
ansond 0:b1fc60dd398f 24 #include "mbedConnectorInterface.h"
ansond 0:b1fc60dd398f 25
ansond 0:b1fc60dd398f 26 // mbed Network Endpoint
ansond 0:b1fc60dd398f 27 #include "mbedEndpointNetwork.h"
ansond 0:b1fc60dd398f 28
ansond 0:b1fc60dd398f 29 // Static Resources
ansond 0:b1fc60dd398f 30 #include "StaticResource.h"
ansond 0:b1fc60dd398f 31 StaticResource mfg(&logger,"dev/mfg","Freescale");
ansond 0:b1fc60dd398f 32 StaticResource model(&logger,"dev/mdl","K64F");
ansond 0:b1fc60dd398f 33
ansond 0:b1fc60dd398f 34 // Heartrate Resource
ansond 0:b1fc60dd398f 35 #include "HeartrateResource.h"
ansond 0:b1fc60dd398f 36 HeartrateResource hr(&logger,"888/0/5850",true); // observable
ansond 0:b1fc60dd398f 37
ansond 0:b1fc60dd398f 38 // Location Resource
ansond 0:b1fc60dd398f 39 #include "LocationResource.h"
ansond 0:b1fc60dd398f 40 LocationResource location(&logger,"999/0/1234",true); // observable
ansond 0:b1fc60dd398f 41
ansond 0:b1fc60dd398f 42 // LED Light Resource
ansond 0:b1fc60dd398f 43 #include "LightResource.h"
ansond 0:b1fc60dd398f 44 LightResource light(&logger,"311/0/5850");
ansond 0:b1fc60dd398f 45
ansond 0:b1fc60dd398f 46 // My Endpoint Name
ansond 1:96f6a05fa403 47 #define MY_ENDPOINT_NAME "mbed-eth-hrm-XX" // replace "XX" with your number
ansond 0:b1fc60dd398f 48
ansond 0:b1fc60dd398f 49 // My NSP Domain
ansond 0:b1fc60dd398f 50 #define MY_NSP_DOMAIN "dfbridgeXX" // replace "XX" with your number
ansond 0:b1fc60dd398f 51
ansond 0:b1fc60dd398f 52 // Customization Example: My custom NSP IPv4 address and NSP CoAP port
ansond 2:630ffd1c52cc 53 //uint8_t my_nsp_address[NSP_IP_ADDRESS_LENGTH] = {129,41,134,39}; // bluemix vm v2.4
ansond 2:630ffd1c52cc 54 uint8_t my_nsp_address[NSP_IP_ADDRESS_LENGTH] = {129,41,134,116}; // bluemix vm v2.3
ansond 0:b1fc60dd398f 55 int my_nsp_coap_port = 5683;
ansond 0:b1fc60dd398f 56
ansond 0:b1fc60dd398f 57 // called from the Endpoint::start() below to create resources and the endpoint internals...
ansond 0:b1fc60dd398f 58 Connector::Options *configure_endpoint(Connector::OptionsBuilder &config)
ansond 0:b1fc60dd398f 59 {
ansond 0:b1fc60dd398f 60 // Build the endpoint configuration parameters
ansond 0:b1fc60dd398f 61 logger.log("configure_endpoint: building endpoint configuration...");
ansond 0:b1fc60dd398f 62 return config.setEndpointNodename(MY_ENDPOINT_NAME) // custom endpoint name
ansond 0:b1fc60dd398f 63 .setNSPAddress(my_nsp_address) // custom NSP address
ansond 0:b1fc60dd398f 64 .setDomain(MY_NSP_DOMAIN) // custom NSP domain
ansond 0:b1fc60dd398f 65 .setNSPPortNumber(my_nsp_coap_port) // custom NSP CoAP port
ansond 0:b1fc60dd398f 66
ansond 0:b1fc60dd398f 67 // enable or disable(default) immediate observationing control
ansond 0:b1fc60dd398f 68 .setImmedateObservationEnabled(true)
ansond 0:b1fc60dd398f 69
ansond 0:b1fc60dd398f 70 // enable or disable(default) GET-based observation control
ansond 0:b1fc60dd398f 71 .setEnableGETObservationControl(false)
ansond 0:b1fc60dd398f 72
ansond 0:b1fc60dd398f 73 // add the static resource representing this endpoint
ansond 0:b1fc60dd398f 74 .addResource(&mfg)
ansond 0:b1fc60dd398f 75 .addResource(&model)
ansond 0:b1fc60dd398f 76
ansond 0:b1fc60dd398f 77 // add the heartrate resource
ansond 0:b1fc60dd398f 78 .addResource(&light)
ansond 3:4246dd70c0dc 79 .addResource(&hr,1000) // observe every 1 second
ansond 2:630ffd1c52cc 80 .addResource(&location,15000) // observe every 15 seconds (its currently static...)
ansond 0:b1fc60dd398f 81
ansond 0:b1fc60dd398f 82 // finalize the configuration...
ansond 0:b1fc60dd398f 83 .build();
ansond 0:b1fc60dd398f 84 }
ansond 0:b1fc60dd398f 85
ansond 0:b1fc60dd398f 86 // main entry point...
ansond 0:b1fc60dd398f 87 int main()
ansond 0:b1fc60dd398f 88 {
ansond 0:b1fc60dd398f 89 // Announce
ansond 0:b1fc60dd398f 90 logger.log("\r\n\r\nmbed mDS Ethernet Heartrate Endpoint");
ansond 0:b1fc60dd398f 91
ansond 0:b1fc60dd398f 92 // we have to plumb our network first
ansond 0:b1fc60dd398f 93 Connector::Endpoint::plumbNetwork();
ansond 0:b1fc60dd398f 94
ansond 0:b1fc60dd398f 95 // starts the endpoint by finalizing its configuration (configure_endpoint() above called),creating a Thread and reading NSP events...
ansond 0:b1fc60dd398f 96 logger.log("Start the endpoint to finish setup and enter the main loop...");
ansond 0:b1fc60dd398f 97 Connector::Endpoint::start();
ansond 0:b1fc60dd398f 98 }