Skip to content

Commit

Permalink
Merge branch 'issue218' into smsc_39_merge_clone
Browse files Browse the repository at this point in the history
  • Loading branch information
satanatoly committed Jul 5, 2017
2 parents 600bd65 + b99f2df commit 843e47b
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import org.apache.log4j.Logger;
import org.mobicents.protocols.ss7.map.api.smstpdu.DataCodingScheme;
import org.mobicents.protocols.ss7.map.smstpdu.DataCodingSchemeImpl;
import org.mobicents.smsc.mproc.DeliveryReceiptData;

/**
*
Expand Down Expand Up @@ -76,7 +77,8 @@ public static void generateCdr(Sms smsEvent, String status, String reason, boole
boolean messageIsSplitted, boolean lastSegment, boolean calculateMsgPartsLenCdr, boolean delayParametersInCdr) {
// Format is
// SUBMIT_DATE,SOURCE_ADDRESS,SOURCE_TON,SOURCE_NPI,DESTINATION_ADDRESS,DESTINATION_TON,DESTINATION_NPI,STATUS,SYSTEM-ID,MESSAGE-ID,
// VLR, IMSI, CorrelationID, First 20 char of SMS, REASON
// VLR, IMSI, CorrelationID, First 20 char of SMS, REASON, DELIVERY_RECEIPT_MESSAGE_STATUS, DELIVERY_RECEIPT_MESSAGE_STATE_TLV,
// DELIVERY_RECEIPT_MESSAGE_ERR

if (!generateCdr)
return;
Expand Down Expand Up @@ -166,6 +168,21 @@ public static void generateCdr(Sms smsEvent, String status, String reason, boole
.append("\"")
.append(getEscapedString(reason))
.append("\"");

DeliveryReceiptData deliveryReceiptData = MessageUtil.parseDeliveryReceipt(smsEvent.getShortMessageText(),
smsEvent.getTlvSet());
if (deliveryReceiptData != null) {
String st = deliveryReceiptData.getStatus();
int tlvMessageState = deliveryReceiptData.getTlvMessageState();

sb.append(CdrGenerator.CDR_SEPARATOR)
.append(st != null ? st : CdrGenerator.CDR_EMPTY);
sb.append(CdrGenerator.CDR_SEPARATOR)
.append(tlvMessageState != 0 ? tlvMessageState : CdrGenerator.CDR_EMPTY);
sb.append(CdrGenerator.CDR_SEPARATOR)
.append(deliveryReceiptData.getError());
}

CdrGenerator.generateCdr(sb.toString());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -850,10 +850,10 @@ public static DeliveryReceiptData parseDeliveryReceipt(String msg, TlvSet tlvSet
}
tlv = tlvSet.getOptionalParameter(SmppConstants.TAG_MSG_STATE);
if (tlv != null) {
byte[] data = tlv.getValue();
if (data.length > 0) {
int val = data[0] & 0xFF;
deliveryReceiptData.setTlvMessageState(val);
try {
byte val = tlv.getValueAsByte();
deliveryReceiptData.setTlvMessageState(new Integer(val));
} catch (TlvConvertException e) {
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import org.mobicents.protocols.ss7.map.datacoding.Gsm7EncodingStyle;
import org.mobicents.protocols.ss7.map.smstpdu.DataCodingSchemeImpl;
import org.mobicents.smsc.library.ErrorCode;
import org.mobicents.smsc.library.MessageState;
import org.mobicents.smsc.library.MessageUtil;
import org.mobicents.smsc.tools.smppsimulator.SmppSimulatorParameters.DeliveryResponseGenerating;

Expand Down Expand Up @@ -211,6 +212,20 @@ public PduResponse firePduRequestReceived(PduRequest pduRequest) {
msgId2 = msgId2 + "XYZ";
msgId3 = null;
}
MessageState msgState = null;

if (this.testingForm.getSmppSimulatorParameters().isIdResponseTlvMessageState()) {
if (this.testingForm.getSmppSimulatorParameters().isRejectIncomingDeliveryMessage())
//message will have message_state set to REJECTED (value 8)
msgState = MessageState.REJECTED;
else if (this.testingForm.getSmppSimulatorParameters().getDeliveryResponseGenerating().equals(DeliveryResponseGenerating.Error8)) {
//message will have message_state set to UNDELIVERABLE (value 5)
msgState = MessageState.UNDELIVERABLE;
} else {
//message should have message_state set to DELIVERED (value 2)
msgState = MessageState.DELIVERED;
}
}

((BaseSmResp) resp).setMessageId(msgId);

Expand All @@ -222,7 +237,7 @@ public PduResponse firePduRequestReceived(PduRequest pduRequest) {
this.testingForm.getExecutor().schedule(
new DeliveryReceiptSender(
this.testingForm.getSmppSimulatorParameters().getDeliveryResponseGenerating(), new Date(),
msgId2, msgId3), delay, TimeUnit.MILLISECONDS);
msgId2, msgId3, msgState), delay, TimeUnit.MILLISECONDS);
}

testingForm.addMessage("PduResponseSent: " + resp.getName(), resp.toString());
Expand Down Expand Up @@ -303,13 +318,15 @@ public class DeliveryReceiptSender implements Runnable {
private Date submitDate;
private String messageId;
private String messageIdTlv;
private MessageState messageStateTlv;

public DeliveryReceiptSender(DeliveryResponseGenerating deliveryResponseGenerating, Date submitDate, String messageId,
String messageIdTlv) {
String messageIdTlv, MessageState messageStateTlv) {
this.deliveryResponseGenerating = deliveryResponseGenerating;
this.submitDate = submitDate;
this.messageId = messageId;
this.messageIdTlv = messageIdTlv;
this.messageStateTlv = messageStateTlv;
}

@Override
Expand Down Expand Up @@ -370,6 +387,13 @@ public void run() {
Tlv tlv = new Tlv(SmppConstants.TAG_RECEIPTED_MSG_ID, data, "rec_msg_id");
pdu.addOptionalParameter(tlv);
}

if (messageStateTlv != null) {
byte[] data = new byte[1];
data[0] = (byte)messageStateTlv.getCode();
Tlv tlv = new Tlv(SmppConstants.TAG_MSG_STATE, data, "msg_state");
pdu.addOptionalParameter(tlv);
}

try {
pdu.setShortMessage(buf);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ public class SmppMessageParamForm extends JDialog {
private JRadioButton rbDR_Error8;
private JCheckBox cbDRAfter2Min;
private JCheckBox cbIdResponseTlv;
private JCheckBox cbIdResponseTlvMessageState;
private JCheckBox cbWrongMessageIdInDlr;
private final ButtonGroup buttonGroup_2 = new ButtonGroup();

Expand Down Expand Up @@ -359,7 +360,7 @@ public void itemStateChanged(ItemEvent arg0) {
panel_resp.setLayout(null);

cbRejectIncomingDeliveryMessage = new JCheckBox("Rejecting of incoming SMPP delivery messages");
cbRejectIncomingDeliveryMessage.setBounds(6, 7, 320, 23);
cbRejectIncomingDeliveryMessage.setBounds(6, 7, 400, 23);
panel_resp.add(cbRejectIncomingDeliveryMessage);

rbDR_Success = new JRadioButton("Success receipt");
Expand Down Expand Up @@ -388,9 +389,13 @@ public void itemStateChanged(ItemEvent arg0) {
cbIdResponseTlv = new JCheckBox("Tlv fields usage in delivery receipt");
cbIdResponseTlv.setBounds(6, 125, 364, 23);
panel_resp.add(cbIdResponseTlv);

cbIdResponseTlvMessageState = new JCheckBox("Tlv \"Message State\" in delivery receipt");
cbIdResponseTlvMessageState.setBounds(6, 151, 364, 23);
panel_resp.add(cbIdResponseTlvMessageState);

cbWrongMessageIdInDlr = new JCheckBox("Wrong messageId in delivery receipt");
cbWrongMessageIdInDlr.setBounds(6, 151, 364, 23);
cbWrongMessageIdInDlr.setBounds(6, 177, 364, 23);
panel_resp.add(cbWrongMessageIdInDlr);

JPanel panel_bulk = new JPanel();
Expand Down Expand Up @@ -608,6 +613,7 @@ else if (data.getSmppEncoding() == 1)
this.cbRejectIncomingDeliveryMessage.setSelected(this.data.isRejectIncomingDeliveryMessage());
this.cbDRAfter2Min.setSelected(this.data.isDeliveryResponseAfter2Min());
this.cbIdResponseTlv.setSelected(this.data.isIdResponseTlv());
this.cbIdResponseTlvMessageState.setSelected(this.data.isIdResponseTlvMessageState());
this.cbWrongMessageIdInDlr.setSelected(this.data.isWrongMessageIdInDlr());
switch (this.data.getDeliveryResponseGenerating()) {
case No:
Expand Down Expand Up @@ -726,6 +732,7 @@ else if (this.rbUnicode.isSelected())
this.data.setRejectIncomingDeliveryMessage(this.cbRejectIncomingDeliveryMessage.isSelected());
this.data.setDeliveryResponseAfter2Min(this.cbDRAfter2Min.isSelected());
this.data.setIdResponseTlv(this.cbIdResponseTlv.isSelected());
this.data.setIdResponseTlvMessageState(this.cbIdResponseTlvMessageState.isSelected());
this.data.setWrongMessageIdInDlr(this.cbWrongMessageIdInDlr.isSelected());

if (rbDR_No.isSelected())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ public class SmppSimulatorParameters {
private DeliveryResponseGenerating deliveryResponseGenerating = DeliveryResponseGenerating.No;
private boolean deliveryResponseAfter2Min = false;
private boolean idResponseTlv = false;
private boolean idResponseTlvMessageState = false;
private boolean wrongMessageIdInDlr = false;

private TON sourceTon = TON.International;
Expand Down Expand Up @@ -387,6 +388,14 @@ public boolean isIdResponseTlv() {
public void setIdResponseTlv(boolean hexMessageIdResponse) {
this.idResponseTlv = hexMessageIdResponse;
}

public boolean isIdResponseTlvMessageState() {
return idResponseTlvMessageState;
}

public void setIdResponseTlvMessageState(boolean hexMessageIdResponseMessageState) {
this.idResponseTlvMessageState = hexMessageIdResponseMessageState;
}

public boolean isWrongMessageIdInDlr() {
return wrongMessageIdInDlr;
Expand Down

0 comments on commit 843e47b

Please sign in to comment.