custom for >5 resources
Fork of mbedConnectorInterface by
api/OptionsBuilder.cpp@15:8ada80242804, 2015-02-05 (annotated)
- Committer:
- ansond
- Date:
- Thu Feb 05 14:49:04 2015 +0000
- Revision:
- 15:8ada80242804
- Parent:
- 2:853f9ecc12df
- Child:
- 19:e2cbaeeea509
added WiFi configuration parameters to Options and OptionsBuilder
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ansond | 0:b438482ebbfc | 1 | /** |
ansond | 0:b438482ebbfc | 2 | * @file OptionsBuilder.cpp |
ansond | 0:b438482ebbfc | 3 | * @brief mbed CoAP OptionsBuilder class implementation |
ansond | 0:b438482ebbfc | 4 | * @author Doug Anson/Chris Paola |
ansond | 0:b438482ebbfc | 5 | * @version 1.0 |
sam_grove | 2:853f9ecc12df | 6 | * @see |
ansond | 0:b438482ebbfc | 7 | * |
ansond | 0:b438482ebbfc | 8 | * Copyright (c) 2014 |
ansond | 0:b438482ebbfc | 9 | * |
ansond | 0:b438482ebbfc | 10 | * Licensed under the Apache License, Version 2.0 (the "License"); |
ansond | 0:b438482ebbfc | 11 | * you may not use this file except in compliance with the License. |
ansond | 0:b438482ebbfc | 12 | * You may obtain a copy of the License at |
ansond | 0:b438482ebbfc | 13 | * |
ansond | 0:b438482ebbfc | 14 | * http://www.apache.org/licenses/LICENSE-2.0 |
ansond | 0:b438482ebbfc | 15 | * |
ansond | 0:b438482ebbfc | 16 | * Unless required by applicable law or agreed to in writing, software |
ansond | 0:b438482ebbfc | 17 | * distributed under the License is distributed on an "AS IS" BASIS, |
ansond | 0:b438482ebbfc | 18 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
ansond | 0:b438482ebbfc | 19 | * See the License for the specific language governing permissions and |
ansond | 0:b438482ebbfc | 20 | * limitations under the License. |
ansond | 0:b438482ebbfc | 21 | */ |
sam_grove | 2:853f9ecc12df | 22 | |
sam_grove | 2:853f9ecc12df | 23 | #include "OptionsBuilder.h" |
sam_grove | 2:853f9ecc12df | 24 | |
sam_grove | 2:853f9ecc12df | 25 | // external included configuration file for the endpoint... |
sam_grove | 2:853f9ecc12df | 26 | #include "configuration.h" |
sam_grove | 2:853f9ecc12df | 27 | |
sam_grove | 2:853f9ecc12df | 28 | // Connector namespace |
sam_grove | 2:853f9ecc12df | 29 | namespace Connector { |
sam_grove | 2:853f9ecc12df | 30 | |
sam_grove | 2:853f9ecc12df | 31 | // Constructor |
sam_grove | 2:853f9ecc12df | 32 | OptionsBuilder::OptionsBuilder() |
sam_grove | 2:853f9ecc12df | 33 | { |
sam_grove | 2:853f9ecc12df | 34 | this->m_lifetime = NSP_LIFE_TIME; |
sam_grove | 2:853f9ecc12df | 35 | this->m_domain = NSP_DOMAIN; |
sam_grove | 2:853f9ecc12df | 36 | this->m_endpoint_type = NSP_ENDPOINT_TYPE; |
sam_grove | 2:853f9ecc12df | 37 | this->m_node_name = NODE_NAME; |
sam_grove | 2:853f9ecc12df | 38 | this->m_channel_list = NODE_CHANNEL_LIST; |
sam_grove | 2:853f9ecc12df | 39 | this->m_rd_update_period = NSP_RD_UPDATE_PERIOD; |
sam_grove | 2:853f9ecc12df | 40 | this->m_nsp_port = NSP_COAP_UDP_PORT; |
sam_grove | 2:853f9ecc12df | 41 | |
sam_grove | 2:853f9ecc12df | 42 | memset(this->m_nsp_address,0,NSP_IP_ADDRESS_LENGTH); |
sam_grove | 2:853f9ecc12df | 43 | memset(this->m_mac_address,0,NODE_MAC_ADDRESS_LENGTH); |
sam_grove | 2:853f9ecc12df | 44 | this->m_static_resources.clear(); |
sam_grove | 2:853f9ecc12df | 45 | this->m_dynamic_resources.clear(); |
sam_grove | 2:853f9ecc12df | 46 | } |
sam_grove | 2:853f9ecc12df | 47 | |
sam_grove | 2:853f9ecc12df | 48 | // Copy Constructor |
sam_grove | 2:853f9ecc12df | 49 | OptionsBuilder::OptionsBuilder(const OptionsBuilder &ob) |
sam_grove | 2:853f9ecc12df | 50 | { |
sam_grove | 2:853f9ecc12df | 51 | this->m_lifetime = ob.m_lifetime; |
sam_grove | 2:853f9ecc12df | 52 | this->m_domain = ob.m_domain; |
sam_grove | 2:853f9ecc12df | 53 | this->m_endpoint_type = ob.m_endpoint_type; |
sam_grove | 2:853f9ecc12df | 54 | this->m_static_resources = ob.m_static_resources; |
sam_grove | 2:853f9ecc12df | 55 | this->m_dynamic_resources = ob.m_dynamic_resources; |
sam_grove | 2:853f9ecc12df | 56 | } |
sam_grove | 2:853f9ecc12df | 57 | |
sam_grove | 2:853f9ecc12df | 58 | // Destructor |
sam_grove | 2:853f9ecc12df | 59 | OptionsBuilder::~OptionsBuilder() |
sam_grove | 2:853f9ecc12df | 60 | { |
sam_grove | 2:853f9ecc12df | 61 | this->m_static_resources.clear(); |
sam_grove | 2:853f9ecc12df | 62 | this->m_dynamic_resources.clear(); |
sam_grove | 2:853f9ecc12df | 63 | } |
sam_grove | 2:853f9ecc12df | 64 | |
sam_grove | 2:853f9ecc12df | 65 | // set lifetime |
sam_grove | 2:853f9ecc12df | 66 | OptionsBuilder &OptionsBuilder::setLifetime(const char *lifetime) |
sam_grove | 2:853f9ecc12df | 67 | { |
sam_grove | 2:853f9ecc12df | 68 | this->m_lifetime = (char *)lifetime; |
sam_grove | 2:853f9ecc12df | 69 | return *this; |
sam_grove | 2:853f9ecc12df | 70 | } |
sam_grove | 2:853f9ecc12df | 71 | |
sam_grove | 2:853f9ecc12df | 72 | // set domain |
sam_grove | 2:853f9ecc12df | 73 | OptionsBuilder &OptionsBuilder::setDomain(const char *domain) |
sam_grove | 2:853f9ecc12df | 74 | { |
sam_grove | 2:853f9ecc12df | 75 | this->m_domain = string(domain); |
sam_grove | 2:853f9ecc12df | 76 | return *this; |
sam_grove | 2:853f9ecc12df | 77 | } |
sam_grove | 2:853f9ecc12df | 78 | |
sam_grove | 2:853f9ecc12df | 79 | // set endpoint nodename |
sam_grove | 2:853f9ecc12df | 80 | OptionsBuilder &OptionsBuilder::setEndpointNodename(const char *node_name) |
sam_grove | 2:853f9ecc12df | 81 | { |
sam_grove | 2:853f9ecc12df | 82 | this->m_node_name = string(node_name); |
sam_grove | 2:853f9ecc12df | 83 | return *this; |
sam_grove | 2:853f9ecc12df | 84 | } |
sam_grove | 2:853f9ecc12df | 85 | |
sam_grove | 2:853f9ecc12df | 86 | // set lifetime |
sam_grove | 2:853f9ecc12df | 87 | OptionsBuilder &OptionsBuilder::setEndpointType(const char *endpoint_type) |
sam_grove | 2:853f9ecc12df | 88 | { |
sam_grove | 2:853f9ecc12df | 89 | this->m_endpoint_type = string(endpoint_type); |
sam_grove | 2:853f9ecc12df | 90 | return *this; |
sam_grove | 2:853f9ecc12df | 91 | } |
sam_grove | 2:853f9ecc12df | 92 | |
sam_grove | 2:853f9ecc12df | 93 | // set NSP port number |
sam_grove | 2:853f9ecc12df | 94 | OptionsBuilder &OptionsBuilder::setNSPPortNumber(const int port_num) |
sam_grove | 2:853f9ecc12df | 95 | { |
sam_grove | 2:853f9ecc12df | 96 | this->m_nsp_port = port_num; |
sam_grove | 2:853f9ecc12df | 97 | return *this; |
sam_grove | 2:853f9ecc12df | 98 | } |
sam_grove | 2:853f9ecc12df | 99 | |
sam_grove | 2:853f9ecc12df | 100 | // set low level radio channel list |
sam_grove | 2:853f9ecc12df | 101 | OptionsBuilder &OptionsBuilder::setRadioChannelList(const uint32_t channel_list) |
sam_grove | 2:853f9ecc12df | 102 | { |
sam_grove | 2:853f9ecc12df | 103 | this->m_channel_list = channel_list; |
sam_grove | 2:853f9ecc12df | 104 | return *this; |
sam_grove | 2:853f9ecc12df | 105 | } |
sam_grove | 2:853f9ecc12df | 106 | |
sam_grove | 2:853f9ecc12df | 107 | // set NSP read update period |
sam_grove | 2:853f9ecc12df | 108 | OptionsBuilder &OptionsBuilder::setReadUpdatePeriod(const int rd_update_period) |
sam_grove | 2:853f9ecc12df | 109 | { |
sam_grove | 2:853f9ecc12df | 110 | this->m_rd_update_period = rd_update_period; |
sam_grove | 2:853f9ecc12df | 111 | return *this; |
sam_grove | 2:853f9ecc12df | 112 | } |
sam_grove | 2:853f9ecc12df | 113 | |
sam_grove | 2:853f9ecc12df | 114 | // set NSP address |
sam_grove | 2:853f9ecc12df | 115 | OptionsBuilder &OptionsBuilder::setNSPAddress(const uint8_t *nsp_address,const int nsp_address_length) |
sam_grove | 2:853f9ecc12df | 116 | { |
sam_grove | 2:853f9ecc12df | 117 | if (nsp_address != NULL && nsp_address_length > 0) { |
sam_grove | 2:853f9ecc12df | 118 | int length = nsp_address_length; |
sam_grove | 2:853f9ecc12df | 119 | if (length > NSP_IP_ADDRESS_LENGTH) length = NSP_IP_ADDRESS_LENGTH; |
sam_grove | 2:853f9ecc12df | 120 | for(int i=0; i<length; ++i) this->m_nsp_address[i] = nsp_address[i]; |
sam_grove | 2:853f9ecc12df | 121 | } |
sam_grove | 2:853f9ecc12df | 122 | return *this; |
sam_grove | 2:853f9ecc12df | 123 | } |
sam_grove | 2:853f9ecc12df | 124 | |
sam_grove | 2:853f9ecc12df | 125 | // set MAC address |
sam_grove | 2:853f9ecc12df | 126 | OptionsBuilder &OptionsBuilder::setMACAddress(const uint8_t *mac_address,const int mac_address_length) |
sam_grove | 2:853f9ecc12df | 127 | { |
sam_grove | 2:853f9ecc12df | 128 | if (mac_address != NULL && mac_address_length > 0) { |
sam_grove | 2:853f9ecc12df | 129 | int length = mac_address_length; |
sam_grove | 2:853f9ecc12df | 130 | if (length > NODE_MAC_ADDRESS_LENGTH) length = NODE_MAC_ADDRESS_LENGTH; |
sam_grove | 2:853f9ecc12df | 131 | for(int i=0; i<length; ++i) this->m_mac_address[i] = mac_address[i]; |
sam_grove | 2:853f9ecc12df | 132 | } |
sam_grove | 2:853f9ecc12df | 133 | return *this; |
sam_grove | 2:853f9ecc12df | 134 | } |
sam_grove | 2:853f9ecc12df | 135 | |
sam_grove | 2:853f9ecc12df | 136 | // add static resource |
sam_grove | 2:853f9ecc12df | 137 | OptionsBuilder &OptionsBuilder::addResource(const StaticResource *resource) |
sam_grove | 2:853f9ecc12df | 138 | { |
sam_grove | 2:853f9ecc12df | 139 | this->m_static_resources.push_back((StaticResource *)resource); |
sam_grove | 2:853f9ecc12df | 140 | return *this; |
sam_grove | 2:853f9ecc12df | 141 | } |
sam_grove | 2:853f9ecc12df | 142 | |
sam_grove | 2:853f9ecc12df | 143 | // add dynamic resource |
sam_grove | 2:853f9ecc12df | 144 | OptionsBuilder &OptionsBuilder::addResource(const DynamicResource *resource) |
sam_grove | 2:853f9ecc12df | 145 | { |
sam_grove | 2:853f9ecc12df | 146 | this->m_dynamic_resources.push_back((DynamicResource *)resource); |
sam_grove | 2:853f9ecc12df | 147 | return *this; |
sam_grove | 2:853f9ecc12df | 148 | } |
sam_grove | 2:853f9ecc12df | 149 | |
ansond | 15:8ada80242804 | 150 | // set WiFi SSID |
ansond | 15:8ada80242804 | 151 | OptionsBuilder &OptionsBuilder::setWiFiSSID(char *ssid) |
ansond | 15:8ada80242804 | 152 | { |
ansond | 15:8ada80242804 | 153 | this->m_wifi_ssid = string(ssid); |
ansond | 15:8ada80242804 | 154 | return *this; |
ansond | 15:8ada80242804 | 155 | } |
ansond | 15:8ada80242804 | 156 | |
ansond | 15:8ada80242804 | 157 | // set WiFi AuthType |
ansond | 15:8ada80242804 | 158 | OptionsBuilder &OptionsBuilder::setWiFiAuthType(WiFiAuthTypes auth_type) |
ansond | 15:8ada80242804 | 159 | { |
ansond | 15:8ada80242804 | 160 | this->m_wifi_auth_type = auth_type; |
ansond | 15:8ada80242804 | 161 | return *this; |
ansond | 15:8ada80242804 | 162 | } |
ansond | 15:8ada80242804 | 163 | |
ansond | 15:8ada80242804 | 164 | // set WiFi AuthKey |
ansond | 15:8ada80242804 | 165 | OptionsBuilder &OptionsBuilder::setWiFiAuthKey(char *auth_key) |
ansond | 15:8ada80242804 | 166 | { |
ansond | 15:8ada80242804 | 167 | this->m_wifi_auth_key = string(auth_key); |
ansond | 15:8ada80242804 | 168 | return *this; |
ansond | 15:8ada80242804 | 169 | } |
ansond | 15:8ada80242804 | 170 | |
sam_grove | 2:853f9ecc12df | 171 | // build out our immutable self |
sam_grove | 2:853f9ecc12df | 172 | Options *OptionsBuilder::build() |
sam_grove | 2:853f9ecc12df | 173 | { |
sam_grove | 2:853f9ecc12df | 174 | return (Options *)this; |
sam_grove | 2:853f9ecc12df | 175 | } |
sam_grove | 2:853f9ecc12df | 176 | |
sam_grove | 2:853f9ecc12df | 177 | } // namespace Connector |