srsue/extnas: implement forwarding of paging messages
This commit is contained in:
parent
cf09156b5a
commit
e2d5c2c21d
|
@ -38,6 +38,7 @@ namespace proto {
|
|||
RRCTL_PLMN_SELECT,
|
||||
RRCTL_CONN_ESTABLISH,
|
||||
RRCTL_CONN_RELEASE,
|
||||
RRCTL_PAGING,
|
||||
};
|
||||
|
||||
enum msg_disc {
|
||||
|
@ -84,10 +85,20 @@ namespace proto {
|
|||
uint8_t pdu[0];
|
||||
} __attribute__((packed));
|
||||
|
||||
struct __mmec_m_tmsi {
|
||||
uint8_t mmec;
|
||||
uint32_t m_tmsi;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct msg_paging_ind {
|
||||
struct __mmec_m_tmsi ueid;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct msg {
|
||||
struct msg_hdr hdr;
|
||||
union {
|
||||
struct msg_data data;
|
||||
struct msg_paging_ind paging_ind;
|
||||
struct msg_plmn_search_res plmn_search_res;
|
||||
struct msg_plmn_select_req plmn_select_req;
|
||||
struct msg_conn_establish_req conn_establish_req;
|
||||
|
@ -129,6 +140,9 @@ void enc_data_ind(srslte::byte_buffer_t& buf,
|
|||
const uint8_t *pdu, size_t pdu_len,
|
||||
uint32_t lcid);
|
||||
|
||||
void enc_paging_ind(srslte::byte_buffer_t& buf,
|
||||
srslte::s_tmsi_t* ue_identity);
|
||||
|
||||
} // namespace codec
|
||||
|
||||
} // namespace rrctl
|
||||
|
|
|
@ -225,8 +225,14 @@ void nas_ext::left_rrc_connected() {}
|
|||
|
||||
bool nas_ext::paging(srslte::s_tmsi_t* ue_identity)
|
||||
{
|
||||
srslte::byte_buffer_t msg;
|
||||
|
||||
nas_log->info("Received paging from RRC\n");
|
||||
// TODO: send PAGING.ind to the external entity
|
||||
|
||||
rrctl::codec::enc_paging_ind(msg, ue_identity);
|
||||
iface->write(msg);
|
||||
|
||||
// TODO: what are we supposed to return?
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -53,6 +53,9 @@ std::string msg_hdr_desc(proto::msg_type type, proto::msg_disc disc, uint16_t le
|
|||
case RRCTL_DATA:
|
||||
desc += "Data (PDU)";
|
||||
break;
|
||||
case RRCTL_PAGING:
|
||||
desc += "Paging";
|
||||
break;
|
||||
default:
|
||||
desc += "<UNKNOWN>";
|
||||
}
|
||||
|
@ -195,6 +198,18 @@ void enc_data_ind(srslte::byte_buffer_t& buf,
|
|||
buf.append_bytes(pdu, pdu_len);
|
||||
}
|
||||
|
||||
void enc_paging_ind(srslte::byte_buffer_t& buf,
|
||||
srslte::s_tmsi_t* ue_identity)
|
||||
{
|
||||
struct proto::msg_paging_ind msg;
|
||||
|
||||
msg.ueid.m_tmsi = htonl(ue_identity->m_tmsi);
|
||||
msg.ueid.mmec = ue_identity->mmec;
|
||||
|
||||
enc_hdr(buf, proto::RRCTL_PAGING, proto::RRCTL_IND, sizeof(msg));
|
||||
buf.append_bytes((const uint8_t*) &msg, sizeof(msg));
|
||||
}
|
||||
|
||||
} // namespace codec
|
||||
|
||||
} // namespace rrctl
|
||||
|
|
Loading…
Reference in New Issue