mbed Connector Interface simplification API on top of mbed-client

Fork of mbedConnectorInterfaceV3 by Doug Anson

NOTE:

This repo has been replaced with https://github.com/ARMmbed/mbedConnectorInterface. No further updates will occur with this repo. Please use the github repo instead. Thanks!

Committer:
ansond
Date:
Tue Aug 09 17:18:49 2016 +0000
Revision:
54:dfee8691c83a
Parent:
49:c603a22495bb
Child:
55:fdb11bfada5f
updated

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 // Static Resources
ansond 0:1f1f55e73248 27 #include "mbed-connector-interface/StaticResource.h"
ansond 0:1f1f55e73248 28
ansond 0:1f1f55e73248 29 // Dynamic Resources
ansond 0:1f1f55e73248 30 #include "mbed-connector-interface/DynamicResource.h"
ansond 0:1f1f55e73248 31
ansond 0:1f1f55e73248 32 // include the mbed connector resource list
ansond 0:1f1f55e73248 33 #include "mbed-connector-interface/mbedConnectorInterface.h"
ansond 0:1f1f55e73248 34
ansond 0:1f1f55e73248 35 // include the resource observer includes here so that they are not required in main.cpp
ansond 0:1f1f55e73248 36 #include "mbed-connector-interface/ThreadedResourceObserver.h"
ansond 0:1f1f55e73248 37 #include "mbed-connector-interface/TickerResourceObserver.h"
ansond 36:5ec1fdffe40e 38 #include "mbed-connector-interface/MinarResourceObserver.h"
ansond 0:1f1f55e73248 39
ansond 0:1f1f55e73248 40 // Vector support
ansond 0:1f1f55e73248 41 #include <vector>
ansond 0:1f1f55e73248 42
ansond 0:1f1f55e73248 43 // Resources list
ansond 0:1f1f55e73248 44 typedef vector<StaticResource *> StaticResourcesList;
ansond 0:1f1f55e73248 45 typedef vector<DynamicResource *> DynamicResourcesList;
ansond 0:1f1f55e73248 46 typedef vector<ResourceObserver *> ResourceObserversList;
ansond 0:1f1f55e73248 47
ansond 10:3f79b5e67c22 48 // Default CoAP URL
ansond 10:3f79b5e67c22 49 #define DEF_COAP_PORT 5683
ansond 10:3f79b5e67c22 50
ansond 12:d0e61bac8c27 51 // WiFi Security types (maps to wifi_security_t)
ansond 0:1f1f55e73248 52 typedef enum {
ansond 12:d0e61bac8c27 53 WIFI_NONE = 0,
ansond 12:d0e61bac8c27 54 WIFI_WEP,
ansond 0:1f1f55e73248 55 WIFI_WPA_PERSONAL,
ansond 12:d0e61bac8c27 56 WIFI_WPA2_PERSONAL
ansond 0:1f1f55e73248 57 } WiFiAuthTypes;
ansond 0:1f1f55e73248 58
ansond 9:faa43faea4ca 59 // Mesh Types
ansond 9:faa43faea4ca 60 typedef enum {
ansond 9:faa43faea4ca 61 MESH_THREAD,
ansond 9:faa43faea4ca 62 MESH_6LOWPAN_ND,
ansond 9:faa43faea4ca 63 MESH_NUM_TYPES
ansond 9:faa43faea4ca 64 } MeshTypes;
ansond 9:faa43faea4ca 65
ansond 10:3f79b5e67c22 66 // Connection Types for CoAP
ansond 10:3f79b5e67c22 67 typedef enum {
ansond 10:3f79b5e67c22 68 COAP_TCP,
ansond 10:3f79b5e67c22 69 COAP_UDP,
ansond 10:3f79b5e67c22 70 COAP_NUM_TYPES
ansond 10:3f79b5e67c22 71 } CoAPConnectionTypes;
ansond 10:3f79b5e67c22 72
ansond 10:3f79b5e67c22 73 // IP Address Types
ansond 10:3f79b5e67c22 74 typedef enum {
ansond 10:3f79b5e67c22 75 IP_ADDRESS_TYPE_IPV4,
ansond 10:3f79b5e67c22 76 IP_ADDRESS_TYPE_IPV6,
ansond 10:3f79b5e67c22 77 IP_ADDRESS_TYPE_NUM_TYPES
ansond 10:3f79b5e67c22 78 } IPAddressTypes;
ansond 10:3f79b5e67c22 79
ansond 0:1f1f55e73248 80 namespace Connector {
ansond 0:1f1f55e73248 81
ansond 0:1f1f55e73248 82 /** Options class
ansond 0:1f1f55e73248 83 */
ansond 0:1f1f55e73248 84 class Options
ansond 0:1f1f55e73248 85 {
ansond 0:1f1f55e73248 86 public:
ansond 0:1f1f55e73248 87 /**
ansond 0:1f1f55e73248 88 Default constructor
ansond 0:1f1f55e73248 89 */
ansond 0:1f1f55e73248 90 Options();
ansond 0:1f1f55e73248 91
ansond 0:1f1f55e73248 92 /**
ansond 0:1f1f55e73248 93 Copy constructor
ansond 0:1f1f55e73248 94 */
ansond 0:1f1f55e73248 95 Options(const Options &opt);
ansond 0:1f1f55e73248 96
ansond 0:1f1f55e73248 97 /**
ansond 0:1f1f55e73248 98 Destructor
ansond 0:1f1f55e73248 99 */
ansond 0:1f1f55e73248 100 virtual ~Options();
ansond 0:1f1f55e73248 101
ansond 0:1f1f55e73248 102 /**
ansond 0:1f1f55e73248 103 Get the node lifetime
ansond 0:1f1f55e73248 104 */
ansond 10:3f79b5e67c22 105 int getLifetime();
ansond 0:1f1f55e73248 106
ansond 0:1f1f55e73248 107 /**
ansond 0:1f1f55e73248 108 Get the NSP domain
ansond 0:1f1f55e73248 109 */
ansond 0:1f1f55e73248 110 string getDomain();
ansond 0:1f1f55e73248 111
ansond 0:1f1f55e73248 112 /**
ansond 0:1f1f55e73248 113 Get the node name
ansond 0:1f1f55e73248 114 */
ansond 0:1f1f55e73248 115 string getEndpointNodename();
ansond 0:1f1f55e73248 116
ansond 0:1f1f55e73248 117 /**
ansond 0:1f1f55e73248 118 Get the node type
ansond 0:1f1f55e73248 119 */
ansond 0:1f1f55e73248 120 string getEndpointType();
ansond 0:1f1f55e73248 121
ansond 0:1f1f55e73248 122 /**
ansond 0:1f1f55e73248 123 Get the endpoint Connector URL
ansond 0:1f1f55e73248 124 */
ansond 0:1f1f55e73248 125 char *getConnectorURL();
ansond 0:1f1f55e73248 126
ansond 10:3f79b5e67c22 127 /**
ansond 10:3f79b5e67c22 128 Get the connector connection port from the URL
ansond 10:3f79b5e67c22 129 */
ansond 10:3f79b5e67c22 130 uint16_t getConnectorPort();
ansond 10:3f79b5e67c22 131
ansond 0:1f1f55e73248 132 /**
ansond 27:b8aaf7dc7023 133 Get the Device Resources Object Instance
ansond 0:1f1f55e73248 134 */
ansond 27:b8aaf7dc7023 135 void *getDeviceResourcesObject();
ansond 27:b8aaf7dc7023 136
ansond 27:b8aaf7dc7023 137 /**
ansond 27:b8aaf7dc7023 138 Get the Firmware Resources Object Instance
ansond 27:b8aaf7dc7023 139 */
ansond 27:b8aaf7dc7023 140 void *getFirmwareResourcesObject();
ansond 0:1f1f55e73248 141
ansond 0:1f1f55e73248 142 /**
ansond 0:1f1f55e73248 143 Get the list of static resources
ansond 0:1f1f55e73248 144 */
ansond 0:1f1f55e73248 145 StaticResourcesList *getStaticResourceList();
ansond 0:1f1f55e73248 146
ansond 0:1f1f55e73248 147 /**
ansond 0:1f1f55e73248 148 Get the list of dynamic resources
ansond 0:1f1f55e73248 149 */
ansond 0:1f1f55e73248 150 DynamicResourcesList *getDynamicResourceList();
ansond 0:1f1f55e73248 151
ansond 0:1f1f55e73248 152 /**
ansond 0:1f1f55e73248 153 Get the WiFi SSID
ansond 0:1f1f55e73248 154 */
ansond 0:1f1f55e73248 155 string getWiFiSSID();
ansond 0:1f1f55e73248 156
ansond 0:1f1f55e73248 157 /**
ansond 0:1f1f55e73248 158 Get the WiFi Auth Type
ansond 0:1f1f55e73248 159 */
ansond 0:1f1f55e73248 160 WiFiAuthTypes getWiFiAuthType();
ansond 0:1f1f55e73248 161
ansond 0:1f1f55e73248 162 /**
ansond 0:1f1f55e73248 163 Get the WiFi Auth Key
ansond 0:1f1f55e73248 164 */
ansond 0:1f1f55e73248 165 string getWiFiAuthKey();
ansond 10:3f79b5e67c22 166
ansond 10:3f79b5e67c22 167 /**
ansond 10:3f79b5e67c22 168 Get the CoAP Connection Type
ansond 10:3f79b5e67c22 169 */
ansond 10:3f79b5e67c22 170 CoAPConnectionTypes getCoAPConnectionType();
ansond 10:3f79b5e67c22 171
ansond 10:3f79b5e67c22 172 /**
ansond 10:3f79b5e67c22 173 Get the IP Address Type
ansond 10:3f79b5e67c22 174 */
ansond 10:3f79b5e67c22 175 IPAddressTypes getIPAddressType();
ansond 0:1f1f55e73248 176
ansond 0:1f1f55e73248 177 /**
ansond 0:1f1f55e73248 178 Enable/Disable Immediate Observationing
ansond 0:1f1f55e73248 179 */
ansond 0:1f1f55e73248 180 bool immedateObservationEnabled();
ansond 0:1f1f55e73248 181
ansond 0:1f1f55e73248 182 /**
ansond 0:1f1f55e73248 183 Enable/Disable Observation control via GET
ansond 0:1f1f55e73248 184 */
ansond 0:1f1f55e73248 185 bool enableGETObservationControl();
ansond 0:1f1f55e73248 186
ansond 0:1f1f55e73248 187 /**
ansond 0:1f1f55e73248 188 Get the Server Certificate
ansond 0:1f1f55e73248 189 */
ansond 0:1f1f55e73248 190 uint8_t *getServerCertificate();
ansond 0:1f1f55e73248 191
ansond 0:1f1f55e73248 192 /**
ansond 0:1f1f55e73248 193 Get the Server Certificate Size (bytes)
ansond 0:1f1f55e73248 194 */
ansond 0:1f1f55e73248 195 int getServerCertificateSize();
ansond 0:1f1f55e73248 196
ansond 0:1f1f55e73248 197 /**
ansond 0:1f1f55e73248 198 Get the Client Certificate
ansond 0:1f1f55e73248 199 */
ansond 0:1f1f55e73248 200 uint8_t *getClientCertificate();
ansond 0:1f1f55e73248 201
ansond 0:1f1f55e73248 202 /**
ansond 0:1f1f55e73248 203 Get the Client Certificate Size (bytes)
ansond 0:1f1f55e73248 204 */
ansond 0:1f1f55e73248 205 int getClientCertificateSize();
ansond 0:1f1f55e73248 206
ansond 0:1f1f55e73248 207 /**
ansond 0:1f1f55e73248 208 Get the Client Key
ansond 0:1f1f55e73248 209 */
ansond 0:1f1f55e73248 210 uint8_t *getClientKey();
ansond 0:1f1f55e73248 211
ansond 0:1f1f55e73248 212 /**
ansond 0:1f1f55e73248 213 Get the Client Key Size (bytes)
ansond 0:1f1f55e73248 214 */
ansond 0:1f1f55e73248 215 int getClientKeySize();
ansond 0:1f1f55e73248 216
ansond 19:56f958475694 217 /**
ansond 19:56f958475694 218 Get Our Endpoint
ansond 19:56f958475694 219 */
ansond 19:56f958475694 220 void *getEndpoint();
ansond 19:56f958475694 221
ansond 0:1f1f55e73248 222 protected:
ansond 0:1f1f55e73248 223 // mDS Resources
ansond 0:1f1f55e73248 224 int m_lifetime;
ansond 0:1f1f55e73248 225 string m_domain;
ansond 0:1f1f55e73248 226 string m_node_name;
ansond 0:1f1f55e73248 227 string m_endpoint_type;
ansond 9:faa43faea4ca 228 string m_connector_url;
ansond 0:1f1f55e73248 229
ansond 0:1f1f55e73248 230 // WiFi Resources
ansond 0:1f1f55e73248 231 string m_wifi_ssid;
ansond 0:1f1f55e73248 232 string m_wifi_auth_key;
ansond 9:faa43faea4ca 233 WiFiAuthTypes m_wifi_auth_type;
ansond 10:3f79b5e67c22 234
ansond 10:3f79b5e67c22 235 // CoAP Connection Types
ansond 10:3f79b5e67c22 236 CoAPConnectionTypes m_coap_connection_type;
ansond 10:3f79b5e67c22 237
ansond 10:3f79b5e67c22 238 // IP Address Types
ansond 10:3f79b5e67c22 239 IPAddressTypes m_ip_address_type;
ansond 0:1f1f55e73248 240
ansond 0:1f1f55e73248 241 // DTLS/TLS Resources
ansond 49:c603a22495bb 242 uint8_t *m_server_cert;
ansond 0:1f1f55e73248 243 int m_server_cert_length;
ansond 49:c603a22495bb 244 uint8_t *m_client_cert;
ansond 0:1f1f55e73248 245 int m_client_cert_length;
ansond 49:c603a22495bb 246 uint8_t *m_client_key;
ansond 0:1f1f55e73248 247 int m_client_key_length;
ansond 0:1f1f55e73248 248
ansond 0:1f1f55e73248 249 // CoAP behavior adjustments
ansond 0:1f1f55e73248 250 bool m_enable_immediate_observation;
ansond 0:1f1f55e73248 251 bool m_enable_get_obs_control;
ansond 0:1f1f55e73248 252
ansond 0:1f1f55e73248 253 // Endpoint Resources
ansond 27:b8aaf7dc7023 254 void *m_device_resources_object;
ansond 27:b8aaf7dc7023 255 void *m_firmware_resources_object;
ansond 15:c11dbe4d354c 256 StaticResourcesList m_static_resources;
ansond 15:c11dbe4d354c 257 DynamicResourcesList m_dynamic_resources;
ansond 15:c11dbe4d354c 258 ResourceObserversList m_resource_observers;
ansond 20:90964c5070e1 259
ansond 20:90964c5070e1 260 // Our Endpoint
ansond 20:90964c5070e1 261 void *m_endpoint;
ansond 0:1f1f55e73248 262 };
ansond 0:1f1f55e73248 263
ansond 0:1f1f55e73248 264 } // namespace Connector
ansond 0:1f1f55e73248 265
ansond 10:3f79b5e67c22 266 #endif // __OPTIONS_H__