use rasn::prelude::*;
use crate::types::{Imsi, IsdnAddressString, Lmsi};
#[derive(Debug, Clone, PartialEq, Eq, AsnType, Decode, Encode)]
pub struct UpdateLocationArg {
pub imsi: Imsi,
#[rasn(tag(context, 1))]
pub msc_number: IsdnAddressString,
pub vlr_number: IsdnAddressString,
#[rasn(tag(context, 10))]
pub lmsi: Option<Lmsi>,
#[rasn(tag(context, 6))]
pub vlr_capability: Option<OctetString>,
}
#[derive(Debug, Clone, PartialEq, Eq, AsnType, Decode, Encode)]
pub struct UpdateLocationRes {
pub hlr_number: IsdnAddressString,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, AsnType, Decode, Encode)]
#[rasn(enumerated)]
pub enum CancellationType {
UpdateProcedure = 0,
SubscriptionWithdraw = 1,
InitialAttachProcedure = 2,
}
#[derive(Debug, Clone, PartialEq, Eq, AsnType, Decode, Encode)]
pub struct CancelLocationArg {
pub identity: Imsi,
pub cancellation_type: Option<CancellationType>,
}
#[derive(Debug, Clone, PartialEq, Eq, AsnType, Decode, Encode)]
pub struct CancelLocationRes {}
#[derive(Debug, Clone, PartialEq, Eq, AsnType, Decode, Encode)]
pub struct PurgeMsArg {
pub imsi: Imsi,
#[rasn(tag(context, 0))]
pub vlr_number: Option<IsdnAddressString>,
#[rasn(tag(context, 1))]
pub sgsn_number: Option<IsdnAddressString>,
}
#[derive(Debug, Clone, PartialEq, Eq, AsnType, Decode, Encode)]
pub struct PurgeMsRes {
#[rasn(tag(context, 0))]
pub freeze_tmsi: Option<()>,
#[rasn(tag(context, 1))]
pub freeze_p_tmsi: Option<()>,
}
#[derive(Debug, Clone, PartialEq, Eq, AsnType, Decode, Encode)]
pub struct SendIdentificationArg {
pub tmsi: OctetString,
pub number_of_requested_vectors: Option<Integer>,
}
#[derive(Debug, Clone, PartialEq, Eq, AsnType, Decode, Encode)]
pub struct SendIdentificationRes {
pub imsi: Imsi,
#[rasn(tag(context, 0))]
pub authentication_set_list: Option<OctetString>,
}
pub mod op_codes {
pub const UPDATE_LOCATION: i64 = 2;
pub const CANCEL_LOCATION: i64 = 3;
pub const PURGE_MS: i64 = 67;
pub const SEND_IDENTIFICATION: i64 = 55;
}