Android AllJoyn Connection with second machine gives error of BusAttachement

0 votes

I have developed application for two different sensors. They are working fine separately but when I try to use them togather and create two diffent buses than Alljoyn gives this exception.

org.alljoyn.services.common.BusAlreadyExistException: The object has been set previously with a BusAttachment.

Below is my source code for connection. Can anyone tell me why I'm having this issue.

private void connect() 
        {           org.alljoyn.bus.alljoyn.DaemonInit.PrepareDaemon(getApplicationContext());

            bus = new BusAttachment("ControlPanelBrowser", BusAttachment.RemoteMessage.Receive);
            bus.registerBusListener(new BusListener());


            Status status = bus.registerBusObject(mControlPanelSignalInterface, Constants.SERVICE_PATH);


            if (status != Status.OK) {

                Log.d(TAG, "Problem while registering bus object");

            }   

            SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
            srpPassword = settings.getString(PREFS_PASSWORD, DEFAULT_SECURED_SRP_PASSWORD);

            SrpAnonymousKeyListener authListener = new SrpAnonymousKeyListener(this, logger, AUTH_MECHANISMS);
            Status authStatus = bus.registerAuthListener(authListener.getAuthMechanismsAsString(), 
                    authListener, getKeyStoreFileName());

            if ( authStatus != Status.OK ) {
                Log.e(TAG, "Failed to register AuthListener");
            }

            status = bus.connect();


            if (Status.OK == status){

                String daemonName = Constants.DAEMON_NAME_PREFIX + ".ControlPanelBrowser.G" + 
                        bus.getGlobalGUIDString();

                int flag = BusAttachment.ALLJOYN_REQUESTNAME_FLAG_DO_NOT_QUEUE;

                Status reqStatus = bus.requestName(daemonName, flag);

                if (reqStatus == Status.OK) {

                    Status adStatus = bus.advertiseName(Constants.DAEMON_QUIET_PREFIX +
                            daemonName, SessionOpts.TRANSPORT_ANY);

                    if (adStatus != Status.OK){
                        bus.releaseName(daemonName);
                        Log.e(TAG, "Failed to advertise daemon name: '" + daemonName + "', Error: '" + status + "'");
                    }
                    else{
                        Log.d(TAG, "Succefully advertised daemon name: '" + daemonName + "'");
                    }
                }
                else {
                    Log.e(TAG, "Failed to request daemon name: '" + daemonName + "', Error: '" + status + "'");
                }
            }


            status = bus.registerSignalHandlers(mControlPanelSignalInterface);

            if (status != Status.OK) {
                Log.d(TAG, "Problem while registering signal handlers");
            }

            // Initialize AboutService

            aboutClient = AboutServiceImpl.getInstance();
            aboutClient.setLogger(logger);
            try {
                aboutClient.startAboutClient(bus);

                for (String iface :  ANNOUNCE_IFACES) {


                    aboutClient.addAnnouncementHandler(this, new String[] {iface});

                }
            } catch (Exception e) {

                logger.error(TAG, "Unable to start AboutService, Error: " + e.getMessage());

            }


        }
Jul 25, 2018 in IoT (Internet of Things) by Matt
• 2,270 points
809 views

1 answer to this question.

0 votes

Why dont you create two Interfaces, one interface for one sensor respectively. then add these two interfaces in a class which implements these two interfaces and the busObject and register an implemntation of this class as a BusObject.

For example

Sensor1_interface.java and Sensor2_interface.java //are my two interface classes

create a new class Sensor_InterfaceList which inplements the two interfaces and the BusObject

class Sensor_InterfaceList implements Sensor1_interface,Sensor2_interface,BusObject
   {
    // implment your interfaces here
    .....
    }
private Sensor_InterfaceList mySensor_InterfaceList;
mySensor_InterfaceList = new Sensor_InterfaceList();
myBus.registerBusObject(mySensor_InterfaceList,"/your/path");

This should solve your problem :)

answered Jul 25, 2018 by anonymous2
• 4,240 points

Related Questions In IoT (Internet of Things)

0 votes
1 answer
0 votes
1 answer

Android Ble GATT_ERROR 133 getting often with samsung devices

I tried the following code #!/usr/bin/python import ibmiotf.device from time ...READ MORE

answered Jul 18, 2018 in IoT (Internet of Things) by anonymous2
• 4,240 points
2,679 views
0 votes
1 answer

Unable to communicate to device with .local domain using android, corova-zeroconf-plugin

Use IP address instead of http://iotdevice.local..Use htt ...READ MORE

answered Aug 2, 2018 in IoT (Internet of Things) by anonymous2
• 4,240 points
1,835 views
0 votes
1 answer
0 votes
1 answer

Creating Android Things' bundle and pushing it over OTA

Here are all the steps necessary to ...READ MORE

answered Jul 6, 2018 in IoT (Internet of Things) by anonymous2
• 4,240 points
831 views
0 votes
1 answer

Restrict Android Internet usage to WiFi without Internet Access

You can check if wifi is connected ...READ MORE

answered Jul 17, 2018 in IoT (Internet of Things) by anonymous2
• 4,240 points
1,837 views
0 votes
1 answer

Connect Android Things based Raspberry Pi 3 to wifi network for the first time!

Hey, I think its alright!  Your Raspberry Pi ...READ MORE

answered Jul 19, 2018 in IoT (Internet of Things) by nirvana
• 3,130 points
1,348 views
0 votes
1 answer

Downloading source code of Android Things

No because AndroidThings is still in preview ...READ MORE

answered Jul 5, 2018 in IoT (Internet of Things) by anonymous2
• 4,240 points
2,138 views
0 votes
1 answer

MQTT protocol connection error

Ok so you need two libraries to ...READ MORE

answered Jul 6, 2018 in IoT (Internet of Things) by anonymous2
• 4,240 points

reshown Jul 6, 2018 by Vardhan 3,297 views
webinar REGISTER FOR FREE WEBINAR X
REGISTER NOW
webinar_success Thank you for registering Join Edureka Meetup community for 100+ Free Webinars each month JOIN MEETUP GROUP