mbed device for IPSO Interop 2015

Dependencies:   Chainable_RGB_LED DHT LED_Bar mbed mbedConnectorInterface mbedEndpointNetwork_mjk_regfix

Committer:
michaeljkoster
Date:
Tue May 19 21:34:25 2015 +0000
Revision:
0:f299ce844c09
initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
michaeljkoster 0:f299ce844c09 1 /**
michaeljkoster 0:f299ce844c09 2 * @file main.cpp
michaeljkoster 0:f299ce844c09 3 * @brief mbed Connected Home Endpoint main entry point
michaeljkoster 0:f299ce844c09 4 * @author Doug Anson
michaeljkoster 0:f299ce844c09 5 * @version 1.0
michaeljkoster 0:f299ce844c09 6 * @see
michaeljkoster 0:f299ce844c09 7 *
michaeljkoster 0:f299ce844c09 8 * Copyright (c) 2014
michaeljkoster 0:f299ce844c09 9 *
michaeljkoster 0:f299ce844c09 10 * Licensed under the Apache License, Version 2.0 (the "License");
michaeljkoster 0:f299ce844c09 11 * you may not use this file except in compliance with the License.
michaeljkoster 0:f299ce844c09 12 * You may obtain a copy of the License at
michaeljkoster 0:f299ce844c09 13 *
michaeljkoster 0:f299ce844c09 14 * http://www.apache.org/licenses/LICENSE-2.0
michaeljkoster 0:f299ce844c09 15 *
michaeljkoster 0:f299ce844c09 16 * Unless required by applicable law or agreed to in writing, software
michaeljkoster 0:f299ce844c09 17 * distributed under the License is distributed on an "AS IS" BASIS,
michaeljkoster 0:f299ce844c09 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
michaeljkoster 0:f299ce844c09 19 * See the License for the specific language governing permissions and
michaeljkoster 0:f299ce844c09 20 * limitations under the License.
michaeljkoster 0:f299ce844c09 21 */
michaeljkoster 0:f299ce844c09 22
michaeljkoster 0:f299ce844c09 23 // mbed Connector Interface (configuration)
michaeljkoster 0:f299ce844c09 24 #include "mbedConnectorInterface.h"
michaeljkoster 0:f299ce844c09 25
michaeljkoster 0:f299ce844c09 26 // mbed Connector Endpoint includes
michaeljkoster 0:f299ce844c09 27 #include "ConnectorEndpoint.h"
michaeljkoster 0:f299ce844c09 28 #include "OptionsBuilder.h"
michaeljkoster 0:f299ce844c09 29
michaeljkoster 0:f299ce844c09 30 // USB Serial port access for debugging/logging
michaeljkoster 0:f299ce844c09 31 RawSerial pc(USBTX,USBRX);
michaeljkoster 0:f299ce844c09 32
michaeljkoster 0:f299ce844c09 33 // Logging facility
michaeljkoster 0:f299ce844c09 34 Logger logger(&pc);
michaeljkoster 0:f299ce844c09 35
michaeljkoster 0:f299ce844c09 36 // Static Resources
michaeljkoster 0:f299ce844c09 37 #include "StaticResource.h"
michaeljkoster 0:f299ce844c09 38 StaticResource mfg(&logger,"3/0/0","ARM-mbed");
michaeljkoster 0:f299ce844c09 39 StaticResource model(&logger,"3/0/1","mbed-6LoWPAN-demo");
michaeljkoster 0:f299ce844c09 40
michaeljkoster 0:f299ce844c09 41 //
michaeljkoster 0:f299ce844c09 42 // Dynamic Resource Note:
michaeljkoster 0:f299ce844c09 43 //
michaeljkoster 0:f299ce844c09 44 // mbedConnectorInterface supports up to IPT_MAX_ENTRIES
michaeljkoster 0:f299ce844c09 45 // (currently 5) independent dynamic resources.
michaeljkoster 0:f299ce844c09 46 //
michaeljkoster 0:f299ce844c09 47 // You can increase this (at the cost of memory)
michaeljkoster 0:f299ce844c09 48 // in mbedConnectorinterface.h
michaeljkoster 0:f299ce844c09 49 //
michaeljkoster 0:f299ce844c09 50
michaeljkoster 0:f299ce844c09 51 // Light Resource
michaeljkoster 0:f299ce844c09 52 #include "LightResource.h"
michaeljkoster 0:f299ce844c09 53 //LightResource light(&logger,"3311/0/5706");
michaeljkoster 0:f299ce844c09 54
michaeljkoster 0:f299ce844c09 55 // LED Resource
michaeljkoster 0:f299ce844c09 56 #include "OnBoardLED.h"
michaeljkoster 0:f299ce844c09 57 LEDResource led(&logger,"3311/1/5706");
michaeljkoster 0:f299ce844c09 58
michaeljkoster 0:f299ce844c09 59 // Temperature Resource
michaeljkoster 0:f299ce844c09 60 #include "TempResource.h"
michaeljkoster 0:f299ce844c09 61 //TempResource temp(&logger,"3303/0/5700", true); /* true if observable */
michaeljkoster 0:f299ce844c09 62
michaeljkoster 0:f299ce844c09 63 // DHT11 Temperature Resource
michaeljkoster 0:f299ce844c09 64 #include "DHT11_TempResource.h"
michaeljkoster 0:f299ce844c09 65 //DHT11_TempResource dht_temp(&logger,"3303/0/5700", false); /* true if observable */
michaeljkoster 0:f299ce844c09 66
michaeljkoster 0:f299ce844c09 67 // DHT11 Humidity Resource
michaeljkoster 0:f299ce844c09 68 #include "DHT11_HumiResource.h"
michaeljkoster 0:f299ce844c09 69 //DHT11_HumiResource dht_humi(&logger,"3304/0/5700", true); /* true if observable */
michaeljkoster 0:f299ce844c09 70
michaeljkoster 0:f299ce844c09 71 // Illuminance Resource
michaeljkoster 0:f299ce844c09 72 #include "IlluminanceResource.h"
michaeljkoster 0:f299ce844c09 73 //IlluminanceResource illum(&logger,"3301/0/5700", true); /* true if observable */
michaeljkoster 0:f299ce844c09 74
michaeljkoster 0:f299ce844c09 75 // LedBar Resource
michaeljkoster 0:f299ce844c09 76 #include "LedBarResource.h"
michaeljkoster 0:f299ce844c09 77 //LedBarResource ledbar(&logger,"3306/0/5853", false); /* true if observable */
michaeljkoster 0:f299ce844c09 78
michaeljkoster 0:f299ce844c09 79 // Button Resource
michaeljkoster 0:f299ce844c09 80 #include "ButtonResource.h"
michaeljkoster 0:f299ce844c09 81 ButtonResource button(&logger,"3200/0/5500", true); /* true if observable */
michaeljkoster 0:f299ce844c09 82
michaeljkoster 0:f299ce844c09 83 // Buzzer Resource
michaeljkoster 0:f299ce844c09 84 #include "BuzzerResource.h"
michaeljkoster 0:f299ce844c09 85 //BuzzerResource buzzer(&logger,"3201/0/5500", false); /* true if observable */
michaeljkoster 0:f299ce844c09 86
michaeljkoster 0:f299ce844c09 87 // Loudness Resource
michaeljkoster 0:f299ce844c09 88 #include "LoudnessResource.h"
michaeljkoster 0:f299ce844c09 89 LoudnessResource loud(&logger,"3324/0/5700", true); /* true if observable */
michaeljkoster 0:f299ce844c09 90
michaeljkoster 0:f299ce844c09 91 // Luminance Resource
michaeljkoster 0:f299ce844c09 92 #include "LuminanceResource.h"
michaeljkoster 0:f299ce844c09 93 LuminanceResource lumi(&logger,"3300/0/5700", true); /* true if observable */
michaeljkoster 0:f299ce844c09 94
michaeljkoster 0:f299ce844c09 95 // Presence Resource
michaeljkoster 0:f299ce844c09 96 #include "PresenceResource.h"
michaeljkoster 0:f299ce844c09 97 PresenceResource pres(&logger,"3302/0/5700", true); /* true if observable */
michaeljkoster 0:f299ce844c09 98
michaeljkoster 0:f299ce844c09 99
michaeljkoster 0:f299ce844c09 100
michaeljkoster 0:f299ce844c09 101 // Set our own unique endpoint name
michaeljkoster 0:f299ce844c09 102 #define MY_ENDPOINT_NAME "mbed1"
michaeljkoster 0:f299ce844c09 103
michaeljkoster 0:f299ce844c09 104 // My NSP Domain
michaeljkoster 0:f299ce844c09 105 #define MY_NSP_DOMAIN "domain"
michaeljkoster 0:f299ce844c09 106
michaeljkoster 0:f299ce844c09 107 // Customization Example: My custom NSP IPv4 or IPv6 address and NSP CoAP port
michaeljkoster 0:f299ce844c09 108 //uint8_t my_nsp_address[NSP_IP_ADDRESS_LENGTH] = {0x20,0x02,0x0d,0xb4,0x00,0x00,0x00,0x00,0x02,0x0c,0x43,0xff,0xfe,0x87,0x81,0x7c};
michaeljkoster 0:f299ce844c09 109 uint8_t my_nsp_address[NSP_IP_ADDRESS_LENGTH] = {0x20,0x02,0x0d,0xb4,0x00,0x00,0x00,0x00,0xba,0x27,0xeb,0xff,0xfe,0xc6,0x35,0x38};
michaeljkoster 0:f299ce844c09 110 int my_nsp_coap_port = 5683;
michaeljkoster 0:f299ce844c09 111
michaeljkoster 0:f299ce844c09 112 // called from the Endpoint::start() below to create resources and the endpoint internals...
michaeljkoster 0:f299ce844c09 113 Connector::Options *configure_endpoint(Connector::OptionsBuilder &config)
michaeljkoster 0:f299ce844c09 114 {
michaeljkoster 0:f299ce844c09 115 // Build the endpoint configuration parameters
michaeljkoster 0:f299ce844c09 116 logger.log("configure_endpoint: building endpoint configuration...");
michaeljkoster 0:f299ce844c09 117 // temp.setMaxAge(0); /* MaxAge = 0 to disable caching of the value in the Device Server */
michaeljkoster 0:f299ce844c09 118 button.setMaxAge(0); /* MaxAge = 0 to disable caching of the value in the Device Server */
michaeljkoster 0:f299ce844c09 119 // DHT_temp.setMaxAge(0); /* MaxAge = 0 to disable caching of the value in the Device Server */
michaeljkoster 0:f299ce844c09 120 // DHT_humi.setMaxAge(0); /* MaxAge = 0 to disable caching of the value in the Device Server */
michaeljkoster 0:f299ce844c09 121 // illum.setMaxAge(0); /* MaxAge = 0 to disable caching of the value in the Device Server */
michaeljkoster 0:f299ce844c09 122 lumi.setMaxAge(0); /* MaxAge = 0 to disable caching of the value in the Device Server */
michaeljkoster 0:f299ce844c09 123 pres.setMaxAge(0); /* MaxAge = 0 to disable caching of the value in the Device Server */
michaeljkoster 0:f299ce844c09 124
michaeljkoster 0:f299ce844c09 125 return config.setEndpointNodename(MY_ENDPOINT_NAME) // custom endpoint name
michaeljkoster 0:f299ce844c09 126 .setNSPAddress(my_nsp_address) // custom NSP address
michaeljkoster 0:f299ce844c09 127 .setDomain(MY_NSP_DOMAIN) // custom NSP domain
michaeljkoster 0:f299ce844c09 128 .setNSPPortNumber(my_nsp_coap_port) // custom NSP CoAP port
michaeljkoster 0:f299ce844c09 129
michaeljkoster 0:f299ce844c09 130 // add the static resource representing this endpoint
michaeljkoster 0:f299ce844c09 131 .addResource(&mfg)
michaeljkoster 0:f299ce844c09 132 .addResource(&model)
michaeljkoster 0:f299ce844c09 133
michaeljkoster 0:f299ce844c09 134 // Add my specific physical dynamic resources...
michaeljkoster 0:f299ce844c09 135 // .addResource(&light)
michaeljkoster 0:f299ce844c09 136 // .addResource(&temp, 1000)
michaeljkoster 0:f299ce844c09 137 .addResource(&led)
michaeljkoster 0:f299ce844c09 138 // .addResource(&illum, 1000)
michaeljkoster 0:f299ce844c09 139 .addResource(&lumi, 1000)
michaeljkoster 0:f299ce844c09 140 // .addResource(&dht_temp)
michaeljkoster 0:f299ce844c09 141 // .addResource(&dht_humi)
michaeljkoster 0:f299ce844c09 142 // .addResource(&ledbar)
michaeljkoster 0:f299ce844c09 143 .addResource(&button, 1000)
michaeljkoster 0:f299ce844c09 144 // .addResource(&buzzer)
michaeljkoster 0:f299ce844c09 145 .addResource(&loud, 1000)
michaeljkoster 0:f299ce844c09 146 .addResource(&pres, 1000)
michaeljkoster 0:f299ce844c09 147
michaeljkoster 0:f299ce844c09 148 // finalize the configuration...
michaeljkoster 0:f299ce844c09 149 .build();
michaeljkoster 0:f299ce844c09 150 }
michaeljkoster 0:f299ce844c09 151
michaeljkoster 0:f299ce844c09 152 // main entry point...
michaeljkoster 0:f299ce844c09 153 int main()
michaeljkoster 0:f299ce844c09 154 {
michaeljkoster 0:f299ce844c09 155 // Announce
michaeljkoster 0:f299ce844c09 156 logger.log("\r\n\r\nmbed mDS Sample Endpoint v1.0 (6LoWPAN)");
michaeljkoster 0:f299ce844c09 157
michaeljkoster 0:f299ce844c09 158 // we have to plumb our network first
michaeljkoster 0:f299ce844c09 159 Connector::Endpoint::plumbNetwork();
michaeljkoster 0:f299ce844c09 160
michaeljkoster 0:f299ce844c09 161 // starts the endpoint by finalizing its configuration (configure_endpoint() above called),creating a Thread and reading NSP events...
michaeljkoster 0:f299ce844c09 162 logger.log("Start the endpoint to finish setup and enter the main loop...");
michaeljkoster 0:f299ce844c09 163 Connector::Endpoint::start();
michaeljkoster 0:f299ce844c09 164 }