GIsiVersion version;
uint8_t resource;
uint8_t last_utid;
+ uint16_t object;
unsigned subscriptions;
unsigned registrations;
gboolean reachable;
return;
switch (code) {
+ case COMM_ISA_ENTITY_NOT_REACHABLE_RESP:
+ mux->reachable = FALSE;
+ msg->error = ENOENT;
+ break;
+
case COMM_ISI_VERSION_GET_RESP:
if (g_isi_msg_data_get_byte(msg, 1, &major) &&
mux->version.major = major;
mux->version.minor = minor;
}
- mux->version_pending = FALSE;
- break;
-
- case COMM_ISA_ENTITY_NOT_REACHABLE_RESP:
- mux->reachable = FALSE;
- msg->error = ENOENT;
- break;
+ /* fall through */
case 0x00:
/*
* 0x00 message as a response. Work around this modem
* wart.
*/
+ mux->object = g_isi_msg_object(msg);
mux->version_pending = FALSE;
+ mux->reachable = TRUE;
break;
}
msg->version = &mux->version;
if (!mux)
return TRUE;
- /*
- * For now, assume any message received means that the
- * resource is reachable
- */
- mux->reachable = TRUE;
-
if (g_isi_msg_id(&msg) == COMMON_MESSAGE)
common_message_decode(mux, &msg);
struct sockaddr_pn addr = {
.spn_resource = mux->resource,
+ .spn_dev = mux->object >> 8,
+ .spn_obj = mux->object & 0xff,
};
GIsiMessage msg = {
.version = &mux->version,