use smpp_codec::pdus::BroadcastSm;
use smpp_codec::tlv::{tags, Tlv};
fn main() {
println!("=== SMPP Broadcast SM Example ===");
let area_tlv = Tlv::new(
tags::BROADCAST_AREA_IDENTIFIER,
vec![0x01, 0x00, 0x05], );
let payload = b"Emergency Alert: Weather Warning".to_vec();
let mut req = BroadcastSm::new(2001, "ServiceAlert".to_string(), payload.clone(), area_tlv);
req.priority_flag = 3;
let mut buffer = Vec::new();
match req.encode(&mut buffer) {
Ok(_) => println!(
"Successfully encoded BroadcastSm PDU: {} bytes",
buffer.len()
),
Err(e) => eprintln!("Failed to encode PDU: {:?}", e),
}
match BroadcastSm::decode(&buffer) {
Ok(decoded) => {
println!("Successfully decoded PDU.");
println!(" Sequence: {}", decoded.sequence_number);
println!(" Source: {}", decoded.source_addr);
let has_payload = decoded
.optional_params
.iter()
.any(|t| t.tag == tags::MESSAGE_PAYLOAD);
println!(" Has Payload TLV: {}", has_payload);
}
Err(e) => eprintln!("Failed to decode PDU: {:?}", e),
}
}