Skip to content
This repository was archived by the owner on Apr 24, 2019. It is now read-only.

Commit 9916bca

Browse files
Yogesh PandeYogesh Pande
Yogesh Pande
authored and
Yogesh Pande
committed
Initializing event loop in main.cpp
1 parent 03a213b commit 9916bca

File tree

2 files changed

+49
-13
lines changed

2 files changed

+49
-13
lines changed

main.cpp

+42-13
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@
1717
#include <string>
1818
#include <sstream>
1919
#include <vector>
20+
#include "mbed-trace/mbed_trace.h"
21+
#include "eventOS_scheduler.h"
22+
#include "eventOS_event.h"
23+
#include "nsdynmemLIB.h"
24+
#include "platform/arm_hal_timer.h"
25+
#include "ns_event_loop.h"
2026

2127
#include "security.h"
2228

@@ -48,6 +54,9 @@ LoWPANNDInterface mesh;
4854
ThreadInterface mesh;
4955
#endif
5056

57+
#define HEAP_SIZE 32500
58+
static uint8_t app_stack_heap[HEAP_SIZE + 1];
59+
5160
Serial output(USBTX, USBRX);
5261

5362
// These are example resource values for the Device Object
@@ -178,10 +187,6 @@ class ButtonResource {
178187
return btn_object;
179188
}
180189

181-
void button_clicked() {
182-
output.printf("\n\rButton clicked\r\n");
183-
}
184-
185190
/*
186191
* When you press the button, we read the current value of the click counter
187192
* from mbed Device Connector, then up the value with one.
@@ -210,13 +215,24 @@ class ButtonResource {
210215
// Network interaction must be performed outside of interrupt context
211216
Semaphore updates(0);
212217
volatile bool registered = false;
218+
volatile bool clicked = false;
213219
osThreadId mainThread;
214220

215221
void unregister() {
216222
registered = false;
217223
updates.release();
218224
}
219225

226+
void button_clicked() {
227+
clicked = true;
228+
updates.release();
229+
}
230+
231+
// debug printf function
232+
void trace_printer(const char* str) {
233+
printf("%s\r\n", str);
234+
}
235+
220236
// Status indication
221237
Ticker status_ticker;
222238
DigitalOut status_led(LED1);
@@ -235,6 +251,16 @@ int main() {
235251

236252
output.printf("Starting mbed Client example...\r\n");
237253

254+
mbed_trace_init();
255+
mbed_trace_print_function_set(trace_printer);
256+
257+
ns_dyn_mem_init(app_stack_heap, HEAP_SIZE,
258+
NULL, 0);
259+
platform_timer_enable();
260+
eventOS_scheduler_init();
261+
ns_event_loop_thread_create();
262+
ns_event_loop_thread_start();
263+
238264
NetworkStack *network_stack = 0;
239265
#if defined WIFI
240266
output.printf("\n\rUsing WiFi \r\n");
@@ -263,16 +289,16 @@ int main() {
263289
}
264290

265291
// we create our button and LED resources
266-
ButtonResource *button_resource = new ButtonResource();
267-
LedResource *led_resource = new LedResource();
292+
ButtonResource button_resource;
293+
LedResource led_resource;
268294

269295
// On press of SW3 button on K64F board, example application
270296
// will call unregister API towards mbed Device Connector
271297
//unreg_button.fall(&mbed_client,&MbedClient::test_unregister);
272298
unreg_button.fall(&unregister);
273299

274300
// Observation Button (SW2) press will send update of endpoint resource values to connector
275-
obs_button.fall(button_resource, &ButtonResource::handle_button_click);
301+
obs_button.fall(&button_clicked);
276302

277303
// Create endpoint interface to manage register and unregister
278304
mbed_client.create_interface(network_stack);
@@ -286,8 +312,8 @@ int main() {
286312

287313
// Add objects to list
288314
object_list.push_back(device_object);
289-
object_list.push_back(button_resource->get_object());
290-
object_list.push_back(led_resource->get_object());
315+
object_list.push_back(button_resource.get_object());
316+
object_list.push_back(led_resource.get_object());
291317

292318
// Set endpoint registration object
293319
mbed_client.set_register_object(register_object);
@@ -298,14 +324,17 @@ int main() {
298324

299325
while (true) {
300326
updates.wait(25000);
301-
302-
if (!registered) {
327+
if(registered) {
328+
mbed_client.test_update_register();
329+
}else {
303330
break;
304331
}
332+
if(clicked) {
333+
clicked = false;
334+
button_resource.handle_button_click();
335+
}
305336
}
306337

307338
mbed_client.test_unregister();
308339
status_ticker.detach();
309340
}
310-
311-

simpleclient.h

+7
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,13 @@ class MbedClient: public M2MInterfaceObserver {
267267
case M2MInterface::NotAllowed:
268268
trace_printer("[ERROR:] M2MInterface::NotAllowed");
269269
break;
270+
case M2MInterface::SecureConnectionFailed:
271+
trace_printer("[ERROR:] M2MInterface::SecureConnectionFailed");
272+
break;
273+
case M2MInterface::DnsResolvingFailed:
274+
trace_printer("[ERROR:] M2MInterface::DnsResolvingFailed");
275+
break;
276+
270277
default:
271278
break;
272279
}

0 commit comments

Comments
 (0)