/* This is similar to calling BusObject constructor. */ QStatus AJ_CALL bus_object_init() { QStatus status = ER_OK; QCC_BOOL foundMember = QCC_FALSE; alljoyn_interfacedescription_member my_ping_member, my_delayed_ping_member, my_time_ping_member, my_signal_member; alljoyn_interfacedescription intf = NULL; alljoyn_interfacedescription valuesintf = NULL; alljoyn_busobject_methodentry methodEntries[3]; intf = alljoyn_busattachment_getinterface(g_msgBus, INTERFACE_NAME); valuesintf = alljoyn_busattachment_getinterface(g_msgBus, INTERFACE_VALUE_NAME); if (!intf) { printf("ERROR - Could not fetch %s interface from the bus. \n", INTERFACE_NAME); return ER_FAIL; } if (!valuesintf) { printf("ERROR - Could not fetch %s interface from the bus. \n", INTERFACE_VALUE_NAME); return ER_FAIL; } /* Add interfaces to the bus object. */ alljoyn_busobject_addinterface(g_testObj, intf); alljoyn_busobject_addinterface(g_testObj, valuesintf); /*Get the members. */ foundMember = alljoyn_interfacedescription_getmember(intf, "my_signal", &my_signal_member); if (!foundMember) { printf("ERROR - Could not fetch %s member from %s interface. \n", "my_signal", INTERFACE_NAME); return ER_FAIL; } foundMember = QCC_FALSE; foundMember = alljoyn_interfacedescription_getmember(intf, "my_ping", &my_ping_member); if (!foundMember) { printf("ERROR - Could not fetch %s member from %s interface. \n", "my_ping", INTERFACE_NAME); return ER_FAIL; } foundMember = QCC_FALSE; foundMember = alljoyn_interfacedescription_getmember(intf, "delayed_ping", &my_delayed_ping_member); if (!foundMember) { printf("ERROR - Could not fetch %s member from %s interface. \n", "delayed_ping", INTERFACE_NAME); return ER_FAIL; } foundMember = QCC_FALSE; foundMember = alljoyn_interfacedescription_getmember(intf, "time_ping", &my_time_ping_member); if (!foundMember) { printf("ERROR - Could not fetch %s member from %s interface. \n", "time_ping", INTERFACE_NAME); return ER_FAIL; } /* Register a signal handler. */ status = alljoyn_busattachment_registersignalhandler(g_msgBus, &signal_handler, my_signal_member, NULL); if (ER_OK != status) { printf("Failed to register signal handler with %s", QCC_StatusText(status)); return status; } /* Register Method handlers. */ methodEntries[0].member = &my_ping_member; methodEntries[0].method_handler = ping; methodEntries[1].member = &my_delayed_ping_member; methodEntries[1].method_handler = delayed_ping; methodEntries[2].member = &my_time_ping_member; methodEntries[2].method_handler = time_ping; status = alljoyn_busobject_addmethodhandlers(g_testObj, methodEntries, sizeof(methodEntries) / sizeof(methodEntries[0])); if (ER_OK != status) { printf("Failed to register method handlers because of %s\n", QCC_StatusText(status)); return status; } return status; }
int CDECL_CALL main(void) { alljoyn_busattachment bus; alljoyn_observer obs; alljoyn_observerlistener listener; alljoyn_interfacedescription intf; alljoyn_interfacedescription_member member; QCC_BOOL done; const char* intfname = INTF_NAME; if (alljoyn_init() != ER_OK) { return 1; } #ifdef ROUTER if (alljoyn_routerinit() != ER_OK) { alljoyn_shutdown(); return 1; } #endif bus = alljoyn_busattachment_create("door_consumer_c", QCC_TRUE); setup_busattachment(bus); obs = alljoyn_observer_create(bus, &intfname, 1); listener_ctx.observer = obs; listener_ctx.bus = bus; listener = alljoyn_observerlistener_create(&listener_cbs, &listener_ctx); alljoyn_observer_registerlistener(obs, listener, QCC_TRUE); intf = alljoyn_busattachment_getinterface(bus, INTF_NAME); alljoyn_interfacedescription_getmember(intf, "PersonPassedThrough", &member); alljoyn_busattachment_registersignalhandler(bus, person_passed_through, member, NULL); done = QCC_FALSE; while (!done) { char input[200]; char* str; printf("> "); fflush(stdout); str = fgets(input, sizeof(input), stdin); if (str == NULL) { break; } str = strchr(input, '\n'); if (str) { *str = '\0'; } done = !parse(bus, obs, input); } // Cleanup alljoyn_observer_destroy(obs); alljoyn_observerlistener_destroy(listener); /* Deallocate bus */ if (bus) { alljoyn_busattachment deleteMe = bus; bus = NULL; alljoyn_busattachment_destroy(deleteMe); } #ifdef ROUTER alljoyn_routershutdown(); #endif alljoyn_shutdown(); return 0; }