[APMSG_NODE_LOAD] = { .type = BLOB_ATTR_INT32 },
[APMSG_NODE_RRM_NR] = { .type = BLOB_ATTR_NESTED },
[APMSG_NODE_NODE_INFO] = { .type = BLOB_ATTR_NESTED },
+ [APMSG_NODE_CHANNEL] = { .type = BLOB_ATTR_INT32 },
+ [APMSG_NODE_OP_CLASS] = { .type = BLOB_ATTR_INT32 },
};
struct blob_attr *tb[__APMSG_NODE_MAX];
struct blob_attr *cur;
msg->max_assoc = get_int32(tb[APMSG_NODE_MAX_ASSOC]);
msg->rrm_nr = NULL;
+ if (tb[APMSG_NODE_CHANNEL] && tb[APMSG_NODE_OP_CLASS]) {
+ msg->channel = blob_get_int32(tb[APMSG_NODE_CHANNEL]);
+ msg->op_class = blob_get_int32(tb[APMSG_NODE_OP_CLASS]);
+ }
+
cur = tb[APMSG_NODE_RRM_NR];
if (cur && blob_len(cur) >= sizeof(struct blob_attr) &&
blob_len(cur) >= blob_pad_len(blob_data(cur))) {
[APMSG_STA_SEEN] = { .type = BLOB_ATTR_INT32 },
[APMSG_STA_TIMEOUT] = { .type = BLOB_ATTR_INT32 },
[APMSG_STA_CONNECTED] = { .type = BLOB_ATTR_INT8 },
+ [APMSG_STA_LAST_CONNECTED] = { .type = BLOB_ATTR_INT32 },
};
struct blob_attr *tb[__APMSG_STA_MAX];
!tb[APMSG_STA_SIGNAL] ||
!tb[APMSG_STA_SEEN] ||
!tb[APMSG_STA_TIMEOUT] ||
- !tb[APMSG_STA_CONNECTED])
+ !tb[APMSG_STA_CONNECTED] ||
+ !tb[APMSG_STA_LAST_CONNECTED])
return false;
if (blob_len(tb[APMSG_STA_ADDR]) != sizeof(msg->addr))
msg->seen = blob_get_int32(tb[APMSG_STA_SEEN]);
msg->timeout = blob_get_int32(tb[APMSG_STA_TIMEOUT]);
msg->connected = blob_get_int8(tb[APMSG_STA_CONNECTED]);
+ msg->last_connected = blob_get_int32(tb[APMSG_STA_LAST_CONNECTED]);
return true;
}