use TCP to connect to mbed connector

Fork of mbedConnectorInterfaceWithDM by Doug Anson

Committer:
ansond
Date:
Fri Jun 10 19:29:07 2016 +0000
Revision:
20:90964c5070e1
Parent:
19:56f958475694
Child:
27:b8aaf7dc7023
updates

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ansond 0:1f1f55e73248 1 /**
ansond 0:1f1f55e73248 2 * @file Options.h
ansond 0:1f1f55e73248 3 * @brief mbed CoAP Options (immutable OptionsBuilder instance) class header
ansond 0:1f1f55e73248 4 * @author Doug Anson/Chris Paola
ansond 0:1f1f55e73248 5 * @version 1.0
ansond 0:1f1f55e73248 6 * @see
ansond 0:1f1f55e73248 7 *
ansond 0:1f1f55e73248 8 * Copyright (c) 2014
ansond 0:1f1f55e73248 9 *
ansond 0:1f1f55e73248 10 * Licensed under the Apache License, Version 2.0 (the "License");
ansond 0:1f1f55e73248 11 * you may not use this file except in compliance with the License.
ansond 0:1f1f55e73248 12 * You may obtain a copy of the License at
ansond 0:1f1f55e73248 13 *
ansond 0:1f1f55e73248 14 * http://www.apache.org/licenses/LICENSE-2.0
ansond 0:1f1f55e73248 15 *
ansond 0:1f1f55e73248 16 * Unless required by applicable law or agreed to in writing, software
ansond 0:1f1f55e73248 17 * distributed under the License is distributed on an "AS IS" BASIS,
ansond 0:1f1f55e73248 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ansond 0:1f1f55e73248 19 * See the License for the specific language governing permissions and
ansond 0:1f1f55e73248 20 * limitations under the License.
ansond 0:1f1f55e73248 21 */
ansond 0:1f1f55e73248 22
ansond 0:1f1f55e73248 23 #ifndef __OPTIONS_H__
ansond 0:1f1f55e73248 24 #define __OPTIONS_H__
ansond 0:1f1f55e73248 25
ansond 0:1f1f55e73248 26 // Device Resources
ansond 0:1f1f55e73248 27 #include "mbed-connector-interface/DeviceResource.h"
ansond 0:1f1f55e73248 28
ansond 0:1f1f55e73248 29 // Static Resources
ansond 0:1f1f55e73248 30 #include "mbed-connector-interface/StaticResource.h"
ansond 0:1f1f55e73248 31
ansond 0:1f1f55e73248 32 // Dynamic Resources
ansond 0:1f1f55e73248 33 #include "mbed-connector-interface/DynamicResource.h"
ansond 0:1f1f55e73248 34
ansond 0:1f1f55e73248 35 // include the mbed connector resource list
ansond 0:1f1f55e73248 36 #include "mbed-connector-interface/mbedConnectorInterface.h"
ansond 0:1f1f55e73248 37
ansond 0:1f1f55e73248 38 // include the resource observer includes here so that they are not required in main.cpp
ansond 0:1f1f55e73248 39 #include "mbed-connector-interface/ThreadedResourceObserver.h"
ansond 0:1f1f55e73248 40 #include "mbed-connector-interface/TickerResourceObserver.h"
ansond 0:1f1f55e73248 41
ansond 0:1f1f55e73248 42 // Vector support
ansond 0:1f1f55e73248 43 #include <vector>
ansond 0:1f1f55e73248 44
ansond 0:1f1f55e73248 45 // Resources list
ansond 0:1f1f55e73248 46 typedef vector<DeviceResource *> DeviceResourcesList;
ansond 0:1f1f55e73248 47 typedef vector<StaticResource *> StaticResourcesList;
ansond 0:1f1f55e73248 48 typedef vector<DynamicResource *> DynamicResourcesList;
ansond 0:1f1f55e73248 49 typedef vector<ResourceObserver *> ResourceObserversList;
ansond 0:1f1f55e73248 50
ansond 10:3f79b5e67c22 51 // Default CoAP URL
ansond 10:3f79b5e67c22 52 #define DEF_COAP_PORT 5683
ansond 10:3f79b5e67c22 53
ansond 12:d0e61bac8c27 54 // WiFi Security types (maps to wifi_security_t)
ansond 0:1f1f55e73248 55 typedef enum {
ansond 12:d0e61bac8c27 56 WIFI_NONE = 0,
ansond 12:d0e61bac8c27 57 WIFI_WEP,
ansond 0:1f1f55e73248 58 WIFI_WPA_PERSONAL,
ansond 12:d0e61bac8c27 59 WIFI_WPA2_PERSONAL
ansond 0:1f1f55e73248 60 } WiFiAuthTypes;
ansond 0:1f1f55e73248 61
ansond 9:faa43faea4ca 62 // Mesh Types
ansond 9:faa43faea4ca 63 typedef enum {
ansond 9:faa43faea4ca 64 MESH_THREAD,
ansond 9:faa43faea4ca 65 MESH_6LOWPAN_ND,
ansond 9:faa43faea4ca 66 MESH_NUM_TYPES
ansond 9:faa43faea4ca 67 } MeshTypes;
ansond 9:faa43faea4ca 68
ansond 10:3f79b5e67c22 69 // Connection Types for CoAP
ansond 10:3f79b5e67c22 70 typedef enum {
ansond 10:3f79b5e67c22 71 COAP_TCP,
ansond 10:3f79b5e67c22 72 COAP_UDP,
ansond 10:3f79b5e67c22 73 COAP_NUM_TYPES
ansond 10:3f79b5e67c22 74 } CoAPConnectionTypes;
ansond 10:3f79b5e67c22 75
ansond 10:3f79b5e67c22 76 // IP Address Types
ansond 10:3f79b5e67c22 77 typedef enum {
ansond 10:3f79b5e67c22 78 IP_ADDRESS_TYPE_IPV4,
ansond 10:3f79b5e67c22 79 IP_ADDRESS_TYPE_IPV6,
ansond 10:3f79b5e67c22 80 IP_ADDRESS_TYPE_NUM_TYPES
ansond 10:3f79b5e67c22 81 } IPAddressTypes;
ansond 10:3f79b5e67c22 82
ansond 0:1f1f55e73248 83 namespace Connector {
ansond 0:1f1f55e73248 84
ansond 0:1f1f55e73248 85 /** Options class
ansond 0:1f1f55e73248 86 */
ansond 0:1f1f55e73248 87 class Options
ansond 0:1f1f55e73248 88 {
ansond 0:1f1f55e73248 89 public:
ansond 0:1f1f55e73248 90 /**
ansond 0:1f1f55e73248 91 Default constructor
ansond 0:1f1f55e73248 92 */
ansond 0:1f1f55e73248 93 Options();
ansond 0:1f1f55e73248 94
ansond 0:1f1f55e73248 95 /**
ansond 0:1f1f55e73248 96 Copy constructor
ansond 0:1f1f55e73248 97 */
ansond 0:1f1f55e73248 98 Options(const Options &opt);
ansond 0:1f1f55e73248 99
ansond 0:1f1f55e73248 100 /**
ansond 0:1f1f55e73248 101 Destructor
ansond 0:1f1f55e73248 102 */
ansond 0:1f1f55e73248 103 virtual ~Options();
ansond 0:1f1f55e73248 104
ansond 0:1f1f55e73248 105 /**
ansond 0:1f1f55e73248 106 Get the node lifetime
ansond 0:1f1f55e73248 107 */
ansond 10:3f79b5e67c22 108 int getLifetime();
ansond 0:1f1f55e73248 109
ansond 0:1f1f55e73248 110 /**
ansond 0:1f1f55e73248 111 Get the NSP domain
ansond 0:1f1f55e73248 112 */
ansond 0:1f1f55e73248 113 string getDomain();
ansond 0:1f1f55e73248 114
ansond 0:1f1f55e73248 115 /**
ansond 0:1f1f55e73248 116 Get the node name
ansond 0:1f1f55e73248 117 */
ansond 0:1f1f55e73248 118 string getEndpointNodename();
ansond 0:1f1f55e73248 119
ansond 0:1f1f55e73248 120 /**
ansond 0:1f1f55e73248 121 Get the node type
ansond 0:1f1f55e73248 122 */
ansond 0:1f1f55e73248 123 string getEndpointType();
ansond 0:1f1f55e73248 124
ansond 0:1f1f55e73248 125 /**
ansond 0:1f1f55e73248 126 Get the mbed registration update period
ansond 0:1f1f55e73248 127 */
ansond 0:1f1f55e73248 128 int getRegUpdatePeriod();
ansond 0:1f1f55e73248 129
ansond 0:1f1f55e73248 130 /**
ansond 0:1f1f55e73248 131 Get the endpoint Connector URL
ansond 0:1f1f55e73248 132 */
ansond 0:1f1f55e73248 133 char *getConnectorURL();
ansond 0:1f1f55e73248 134
ansond 10:3f79b5e67c22 135 /**
ansond 10:3f79b5e67c22 136 Get the connector connection port from the URL
ansond 10:3f79b5e67c22 137 */
ansond 10:3f79b5e67c22 138 uint16_t getConnectorPort();
ansond 10:3f79b5e67c22 139
ansond 0:1f1f55e73248 140 /**
ansond 0:1f1f55e73248 141 Get the list of device resources
ansond 0:1f1f55e73248 142 */
ansond 0:1f1f55e73248 143 DeviceResourcesList *getDeviceResourceList();
ansond 0:1f1f55e73248 144
ansond 0:1f1f55e73248 145 /**
ansond 0:1f1f55e73248 146 Get the list of static resources
ansond 0:1f1f55e73248 147 */
ansond 0:1f1f55e73248 148 StaticResourcesList *getStaticResourceList();
ansond 0:1f1f55e73248 149
ansond 0:1f1f55e73248 150 /**
ansond 0:1f1f55e73248 151 Get the list of dynamic resources
ansond 0:1f1f55e73248 152 */
ansond 0:1f1f55e73248 153 DynamicResourcesList *getDynamicResourceList();
ansond 0:1f1f55e73248 154
ansond 0:1f1f55e73248 155 /**
ansond 0:1f1f55e73248 156 Get the WiFi SSID
ansond 0:1f1f55e73248 157 */
ansond 0:1f1f55e73248 158 string getWiFiSSID();
ansond 0:1f1f55e73248 159
ansond 0:1f1f55e73248 160 /**
ansond 0:1f1f55e73248 161 Get the WiFi Auth Type
ansond 0:1f1f55e73248 162 */
ansond 0:1f1f55e73248 163 WiFiAuthTypes getWiFiAuthType();
ansond 0:1f1f55e73248 164
ansond 0:1f1f55e73248 165 /**
ansond 0:1f1f55e73248 166 Get the WiFi Auth Key
ansond 0:1f1f55e73248 167 */
ansond 0:1f1f55e73248 168 string getWiFiAuthKey();
ansond 0:1f1f55e73248 169
ansond 0:1f1f55e73248 170 /**
ansond 8:f950fb1b78c0 171 Get the 802.15.4 Pre Shared Key
ansond 0:1f1f55e73248 172 */
ansond 8:f950fb1b78c0 173 unsigned char *getPreSharedKey();
ansond 8:f950fb1b78c0 174
ansond 10:3f79b5e67c22 175 /**
ansond 8:f950fb1b78c0 176 Get the 802.15.4 Pre Shared Key Identity
ansond 0:1f1f55e73248 177 */
ansond 8:f950fb1b78c0 178 unsigned char *getPreSharedKeyIdentity();
ansond 9:faa43faea4ca 179
ansond 9:faa43faea4ca 180 /**
ansond 9:faa43faea4ca 181 Get the 802.15.14 Mesh Type
ansond 9:faa43faea4ca 182 */
ansond 9:faa43faea4ca 183 MeshTypes getMeshType();
ansond 10:3f79b5e67c22 184
ansond 10:3f79b5e67c22 185 /**
ansond 10:3f79b5e67c22 186 Get the CoAP Connection Type
ansond 10:3f79b5e67c22 187 */
ansond 10:3f79b5e67c22 188 CoAPConnectionTypes getCoAPConnectionType();
ansond 10:3f79b5e67c22 189
ansond 10:3f79b5e67c22 190 /**
ansond 10:3f79b5e67c22 191 Get the IP Address Type
ansond 10:3f79b5e67c22 192 */
ansond 10:3f79b5e67c22 193 IPAddressTypes getIPAddressType();
ansond 0:1f1f55e73248 194
ansond 0:1f1f55e73248 195 /**
ansond 0:1f1f55e73248 196 Enable/Disable Immediate Observationing
ansond 0:1f1f55e73248 197 */
ansond 0:1f1f55e73248 198 bool immedateObservationEnabled();
ansond 0:1f1f55e73248 199
ansond 0:1f1f55e73248 200 /**
ansond 0:1f1f55e73248 201 Enable/Disable Observation control via GET
ansond 0:1f1f55e73248 202 */
ansond 0:1f1f55e73248 203 bool enableGETObservationControl();
ansond 0:1f1f55e73248 204
ansond 0:1f1f55e73248 205 /**
ansond 0:1f1f55e73248 206 Get the Server Certificate
ansond 0:1f1f55e73248 207 */
ansond 0:1f1f55e73248 208 uint8_t *getServerCertificate();
ansond 0:1f1f55e73248 209
ansond 0:1f1f55e73248 210 /**
ansond 0:1f1f55e73248 211 Get the Server Certificate Size (bytes)
ansond 0:1f1f55e73248 212 */
ansond 0:1f1f55e73248 213 int getServerCertificateSize();
ansond 0:1f1f55e73248 214
ansond 0:1f1f55e73248 215 /**
ansond 0:1f1f55e73248 216 Get the Client Certificate
ansond 0:1f1f55e73248 217 */
ansond 0:1f1f55e73248 218 uint8_t *getClientCertificate();
ansond 0:1f1f55e73248 219
ansond 0:1f1f55e73248 220 /**
ansond 0:1f1f55e73248 221 Get the Client Certificate Size (bytes)
ansond 0:1f1f55e73248 222 */
ansond 0:1f1f55e73248 223 int getClientCertificateSize();
ansond 0:1f1f55e73248 224
ansond 0:1f1f55e73248 225 /**
ansond 0:1f1f55e73248 226 Get the Client Key
ansond 0:1f1f55e73248 227 */
ansond 0:1f1f55e73248 228 uint8_t *getClientKey();
ansond 0:1f1f55e73248 229
ansond 0:1f1f55e73248 230 /**
ansond 0:1f1f55e73248 231 Get the Client Key Size (bytes)
ansond 0:1f1f55e73248 232 */
ansond 0:1f1f55e73248 233 int getClientKeySize();
ansond 0:1f1f55e73248 234
ansond 19:56f958475694 235 /**
ansond 19:56f958475694 236 Get Our Endpoint
ansond 19:56f958475694 237 */
ansond 19:56f958475694 238 void *getEndpoint();
ansond 19:56f958475694 239
ansond 0:1f1f55e73248 240 protected:
ansond 0:1f1f55e73248 241 // mDS Resources
ansond 0:1f1f55e73248 242 int m_lifetime;
ansond 0:1f1f55e73248 243 string m_domain;
ansond 0:1f1f55e73248 244 string m_node_name;
ansond 0:1f1f55e73248 245 string m_endpoint_type;
ansond 0:1f1f55e73248 246 int m_reg_update_period;
ansond 9:faa43faea4ca 247 string m_connector_url;
ansond 0:1f1f55e73248 248
ansond 0:1f1f55e73248 249 // WiFi Resources
ansond 0:1f1f55e73248 250 string m_wifi_ssid;
ansond 0:1f1f55e73248 251 string m_wifi_auth_key;
ansond 9:faa43faea4ca 252 WiFiAuthTypes m_wifi_auth_type;
ansond 10:3f79b5e67c22 253
ansond 10:3f79b5e67c22 254 // CoAP Connection Types
ansond 10:3f79b5e67c22 255 CoAPConnectionTypes m_coap_connection_type;
ansond 10:3f79b5e67c22 256
ansond 10:3f79b5e67c22 257 // IP Address Types
ansond 10:3f79b5e67c22 258 IPAddressTypes m_ip_address_type;
ansond 0:1f1f55e73248 259
ansond 0:1f1f55e73248 260 // 802.15.4 Resources
ansond 9:faa43faea4ca 261 unsigned char m_psk[16];
ansond 9:faa43faea4ca 262 unsigned char m_psk_identity[2];
ansond 10:3f79b5e67c22 263 MeshTypes m_mesh_type;
ansond 0:1f1f55e73248 264
ansond 0:1f1f55e73248 265 // DTLS/TLS Resources
ansond 0:1f1f55e73248 266 uint8_t m_server_cert[MAX_SERVER_CERT_LENGTH];
ansond 0:1f1f55e73248 267 int m_server_cert_length;
ansond 0:1f1f55e73248 268 uint8_t m_client_cert[MAX_CLIENT_CERT_LENGTH];
ansond 0:1f1f55e73248 269 int m_client_cert_length;
ansond 0:1f1f55e73248 270 uint8_t m_client_key[MAX_CLIENT_KEY_LENGTH];
ansond 0:1f1f55e73248 271 int m_client_key_length;
ansond 0:1f1f55e73248 272
ansond 0:1f1f55e73248 273 // CoAP behavior adjustments
ansond 0:1f1f55e73248 274 bool m_enable_immediate_observation;
ansond 0:1f1f55e73248 275 bool m_enable_get_obs_control;
ansond 0:1f1f55e73248 276
ansond 0:1f1f55e73248 277 // Endpoint Resources
ansond 15:c11dbe4d354c 278 DeviceResourcesList m_device_resources;
ansond 15:c11dbe4d354c 279 StaticResourcesList m_static_resources;
ansond 15:c11dbe4d354c 280 DynamicResourcesList m_dynamic_resources;
ansond 15:c11dbe4d354c 281 ResourceObserversList m_resource_observers;
ansond 20:90964c5070e1 282
ansond 20:90964c5070e1 283 // Our Endpoint
ansond 20:90964c5070e1 284 void *m_endpoint;
ansond 0:1f1f55e73248 285 };
ansond 0:1f1f55e73248 286
ansond 0:1f1f55e73248 287 } // namespace Connector
ansond 0:1f1f55e73248 288
ansond 10:3f79b5e67c22 289 #endif // __OPTIONS_H__