Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: IoT_LED_demo ServoTest uWater_Project hackathon ... more
Diff: api/Endpoint.cpp
- Revision:
- 0:b438482ebbfc
- Child:
- 1:cabdd0350707
diff -r 000000000000 -r b438482ebbfc api/Endpoint.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/api/Endpoint.cpp Tue Jan 27 22:23:51 2015 +0000
@@ -0,0 +1,114 @@
+/**
+ * @file Endpoint.cpp
+ * @brief mbed CoAP Endpoint base class
+ * @author Doug Anson/Chris Paola
+ * @version 1.0
+ * @see
+ *
+ * Copyright (c) 2014
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ #include "Endpoint.h"
+
+ // support for temporary mbedEndpointLib calls...
+ #include "mbedEndpointLib.h"
+
+ // Connector namespace
+ namespace Connector {
+ // Constructor
+ Endpoint::Endpoint(const Logger *logger, const Options *options) {
+ this->m_logger = (Logger *)logger;
+ this->m_options = (Options *)options;
+ }
+
+ // Copy Constructor
+ Endpoint::Endpoint(const Endpoint &ep) {
+ this->m_logger = ep.m_logger;
+ this->m_options = ep.m_options;
+ }
+
+ // Destructor
+ Endpoint::~Endpoint() {
+ }
+
+ // plumb network
+ void Endpoint::plumbNetwork(bool canActAsRouterNode) {
+ // call into mbedEndpointLib for now...
+ init_network(canActAsRouterNode);
+ }
+
+ // initialize the endpoint
+ void Endpoint::initialize() {
+ // Create the NSDL Resource Pointer...
+ std::printf("Endpoint::initialize(): initializing NSP resource pointer...\r\n");
+ sn_nsdl_resource_info_s *resource_ptr = (sn_nsdl_resource_info_s*)nsdl_alloc(sizeof(sn_nsdl_resource_info_s));
+ if(!resource_ptr) return;
+ memset(resource_ptr, 0, sizeof(sn_nsdl_resource_info_s));
+
+ resource_ptr->resource_parameters_ptr = (sn_nsdl_resource_parameters_s*)nsdl_alloc(sizeof(sn_nsdl_resource_parameters_s));
+ if(!resource_ptr->resource_parameters_ptr) {
+ nsdl_free(resource_ptr);
+ return;
+ }
+ memset(resource_ptr->resource_parameters_ptr, 0, sizeof(sn_nsdl_resource_parameters_s));
+
+ // Loop through Static Resources and bind each of them...
+ std::printf("Endpoint::initialize(): adding static resources...\r\n");
+ const StaticResourcesList *static_resources = this->m_options->getStaticResourceList();
+ for(int i=0;i<static_resources->size();++i) {
+ std::printf("Endpoint::initialize(): binding static resource: [%s]...\r\n",static_resources->at(i)->getName().c_str());
+ static_resources->at(i)->bind(resource_ptr);
+ }
+
+ // Loop through Dynamic Resources and bind each of them...
+ std::printf("Endpoint::initialize(): adding dynamic resources...\r\n");
+ const DynamicResourcesList *dynamic_resources = this->m_options->getDynamicResourceList();
+ for(int i=0;i<dynamic_resources->size();++i) {
+ std::printf("Endpoint::initialize(): binding dynamic resource: [%s]...\r\n",dynamic_resources->at(i)->getName().c_str());
+ dynamic_resources->at(i)->bind(resource_ptr);
+ }
+
+ // initialize the Network
+ this->initNetwork();
+
+ // clean up
+ nsdl_free(resource_ptr->resource_parameters_ptr);
+ nsdl_free(resource_ptr);
+ }
+
+ // initialize the NSDL Network
+ void Endpoint::initNetwork() {
+ // register with NSP
+ DBG("Calling NSP_registration()...\r\n");
+ NSP_registration();
+ DBG("NSP_registration() completed\r\n");
+ }
+
+ // start the endpoint's main loop
+ void Endpoint::startTasklet() {
+ // mbedEndpointLib tasklet creation...
+ int main_tasklet_id = arm_ns_tasklet_create(&tasklet_main);
+ if(main_tasklet_id < 0) {
+ //Tasklet cerate fail
+ DBG("startTasklet: Tasklet creation failed...\r\n");
+ return;
+ }
+
+ // mbedEndpointLib event dispatching
+ DBG("startTasklet: Beginning event dispatch...\r\n");
+ event_dispatch();
+ return;
+ }
+}
\ No newline at end of file
