Revision history [back]

click to hide/show revision 1
initial version

ER_BUS_BAD_ VALUE_TYPE from Signal() with multiple arguments

Hi,

I am trying to send a signal with multiple arguments; an integer and a string. But I am getting an error from BusObject::Signal() method like below.

   2.153 ****** ERROR ALLJOYN external14312     ...re\src\Message_Gen.cc:1030 |
MarshalMessage: SIGNAL[11] com.se.Bus.Discovery.DeviceStatusChanged: ER_BUS_BAD_
VALUE_TYPE

I added a signal to the interface like this.

testIntf->AddSignal("DeviceStatusChanged", "us", "Branch,DeviceStatus", 0);

When I print an XML of the interface I get this.

<interface name="com.se.Bus.Discovery">
  <signal name="DeviceStatusChanged">
    <arg name="Branch" type="u" direction="out"/>
    <arg name="DeviceStatus" type="s" direction="out"/>
  </signal>

I sent a signal like this.

MsgArg deviceStatusChangedArg("(us)", i + 1, deviceStatusArray[i]);
uint8_t flags = 0;
busObject->Signal(NULL, s_sessionId, *deviceStatusChangedSignalMember, &deviceStatusChangedArg, 2, 0, flags);

If I print the MsgArg before sending the signal, I get this.

<struct>
  <uint32>5</uint32>
  <string>Inactive</string>
</struct>

Does anyone know what I miss here? When I tried the same thing with a single argument it worked perfectly.

Thanks in advance.