/// <summary> Called to create a PduBindResp object </summary> /// <param name="defaultEncoding"></param> /// <param name="buf"></param> /// <param name="offset"></param> /// <returns> PduBindResp </returns> public static BindSmResp Create(DataCodings defaultEncoding, SmppBuffer buf, ref int offset) { var bindResp = new BindSmResp(defaultEncoding); try { var start_offset = offset; buf.ExtractHeader(bindResp, ref offset); bindResp.SystemId = buf.ExtractCString(ref offset); while (offset - start_offset < bindResp.Length) { bindResp.Optional.Add(buf.ExtractTLV(ref offset)); } } catch { bindResp = null; } return(bindResp); }
/// <summary> Called to create a SubmitSmResp object </summary> /// <param name="defaultEncoding"></param> /// <param name="buf"></param> /// <param name="offset"></param> /// <returns> SubmitSmResp </returns> public static SubmitSmResp Create(DataCodings defaultEncoding, SmppBuffer buf, ref int offset) { var submitSmResp = new SubmitSmResp(defaultEncoding); try { var start_offset = offset; buf.ExtractHeader(submitSmResp, ref offset); if (submitSmResp.Length > HEADER_LENGTH) { submitSmResp.MessageId = buf.ExtractCString(ref offset); while (offset - start_offset < submitSmResp.Length) { submitSmResp.Optional.Add(buf.ExtractTLV(ref offset)); } } } catch { submitSmResp = null; } return(submitSmResp); }
/// <summary> Called to create a CancelSm object </summary> /// <param name="defaultEncoding"></param> /// <param name="buf"></param> /// <param name="offset"></param> /// <returns> CancelSm </returns> internal static CancelSm Create(DataCodings defaultEncoding, SmppBuffer buf, ref int offset) { var cancelSm = new CancelSm(defaultEncoding); try { buf.ExtractHeader(cancelSm, ref offset); cancelSm.ServiceType = buf.ExtractCString(ref offset); cancelSm.MessageId = buf.ExtractCString(ref offset); cancelSm.SourceTon = buf.ExtractByte(ref offset); cancelSm.SourceNpi = buf.ExtractByte(ref offset); cancelSm.SourceAddr = buf.ExtractCString(ref offset); cancelSm.DestTon = buf.ExtractByte(ref offset); cancelSm.DestNpi = buf.ExtractByte(ref offset); cancelSm.DestAddr = buf.ExtractCString(ref offset); } catch { cancelSm = null; } return(cancelSm); }
/// <summary> Called to create a PduBind object </summary> /// <param name="defaultEncoding"></param> /// <param name="buf"></param> /// <param name="offset"></param> /// <returns> BindSm </returns> public static BindSm Create(DataCodings defaultEncoding, SmppBuffer buf, ref int offset) { BindSm bindSm = new BindSm(defaultEncoding); try { int start_offset = offset; buf.ExtractHeader(bindSm, ref offset); bindSm.SystemId = buf.ExtractCString(ref offset); bindSm.Password = buf.ExtractCString(ref offset); bindSm.SystemType = buf.ExtractCString(ref offset); bindSm.InterfaceVersion = buf.ExtractByte(ref offset); bindSm.AddrTon = buf.ExtractByte(ref offset); bindSm.AddrNpi = buf.ExtractByte(ref offset); bindSm.AddressRange = buf.ExtractCString(ref offset); } catch { bindSm = null; } return(bindSm); }
/// <summary> Called to create a AlertNotification object </summary> /// <param name="defaultEncoding"></param> /// <param name="buf"></param> /// <param name="offset"></param> /// <returns> AlertNotification </returns> public static AlertNotification Create(DataCodings defaultEncoding, SmppBuffer buf, ref int offset) { AlertNotification alertNotification = new AlertNotification(defaultEncoding); try { int start_offset = offset; buf.ExtractHeader(alertNotification, ref offset); alertNotification.SourceAddrTon = buf.ExtractByte(ref offset); alertNotification.SourceAddrNpi = buf.ExtractByte(ref offset); alertNotification.SourceAddr = buf.ExtractCString(ref offset); alertNotification.EsmeAddrTon = buf.ExtractByte(ref offset); alertNotification.EsmeAddrNpi = buf.ExtractByte(ref offset); alertNotification.EsmeAddr = buf.ExtractCString(ref offset); while (offset - start_offset < alertNotification.Length) { alertNotification.Optional.Add(buf.ExtractTLV(ref offset)); } } catch { alertNotification = null; } return(alertNotification); }
/// <summary> Called to create a DeliverSmResp object </summary> /// <param name="defaultEncoding"></param> /// <param name="buf"></param> /// <param name="offset"></param> /// <returns> DeliverSmResp </returns> public static DeliverSmResp Create(DataCodings defaultEncoding, SmppBuffer buf, ref int offset) { DeliverSmResp deliverSmResp = new DeliverSmResp(defaultEncoding); try { int start_offset = offset; buf.ExtractHeader(deliverSmResp, ref offset); if (deliverSmResp.Length > Header.HEADER_LENGTH) { deliverSmResp.MessageId = buf.ExtractCString(ref offset); while (offset - start_offset < deliverSmResp.Length) { deliverSmResp.Optional.Add(buf.ExtractTLV(ref offset)); } } } catch { deliverSmResp = null; } return(deliverSmResp); }
/// <summary> Called to create a SubmitMultiResp object </summary> /// <param name="defaultEncoding"></param> /// <param name="buf"></param> /// <param name="offset"></param> /// <returns> SubmitMultiResp </returns> public static SubmitMultiSmResp Create(DataCodings defaultEncoding, SmppBuffer buf, ref int offset) { SubmitMultiSmResp submitMultiResp = new SubmitMultiSmResp(defaultEncoding); try { int start_offset = offset; buf.ExtractHeader(submitMultiResp, ref offset); if (submitMultiResp.Length > Header.HEADER_LENGTH) { submitMultiResp.MessageId = buf.ExtractCString(ref offset); submitMultiResp.UnsuccessDestinationAddresses = buf.ExtractUnsuccessDestinationAddresses(ref offset); while (offset - start_offset < submitMultiResp.Length) { submitMultiResp.Optional.Add(buf.ExtractTLV(ref offset)); } } } catch { submitMultiResp = null; } return(submitMultiResp); }
/// <summary> Called to create a EnquireLinkResp object </summary> /// <param name="defaultEncoding"></param> /// <param name="buf"></param> /// <param name="offset"></param> /// <returns> EnquireLinkResp </returns> public static EnquireLinkSmResp Create(DataCodings defaultEncoding, SmppBuffer buf, ref int offset) { var enquireLinkResp = new EnquireLinkSmResp(defaultEncoding); try { buf.ExtractHeader(enquireLinkResp, ref offset); } catch { enquireLinkResp = null; } return(enquireLinkResp); }
/// <summary> Called to create a PduUnBindResp object </summary> /// <param name="defaultEncoding"></param> /// <param name="buf"></param> /// <param name="offset"></param> /// <returns> PduUnBindResp </returns> internal static UnBindSmResp Create(DataCodings defaultEncoding, SmppBuffer buf, ref int offset) { UnBindSmResp res = new UnBindSmResp(defaultEncoding); try { buf.ExtractHeader(res, ref offset); } catch { res = null; } return(res); }
/// <summary> Called to create a new EnquireLink object </summary> /// <param name="defaultEncoding"></param> /// <param name="buf"></param> /// <param name="offset"></param> /// <returns> EnquireLink </returns> public static EnquireLinkSm Create(DataCodings defaultEncoding, SmppBuffer buf, ref int offset) { EnquireLinkSm enquireLink = new EnquireLinkSm(defaultEncoding); try { buf.ExtractHeader(enquireLink, ref offset); } catch { enquireLink = null; } return(enquireLink); }
/// <summary> Called to create a PduUnBind object </summary> /// <param name="defaultEncoding"></param> /// <param name="buf"></param> /// <param name="offset"></param> /// <returns> PduUnBind </returns> public static UnBindSm Create(DataCodings defaultEncoding, SmppBuffer buf, ref int offset) { var unBind = new UnBindSm(defaultEncoding); try { buf.ExtractHeader(unBind, ref offset); } catch { unBind = null; } return(unBind); }
/// <summary> Called to create a GenericNack object </summary> /// <param name="defaultEncoding"></param> /// <param name="buf"></param> /// <param name="offset"></param> /// <returns> GenericNack </returns> public static GenericNackSm Create(DataCodings defaultEncoding, SmppBuffer buf, ref int offset) { GenericNackSm genericNack = new GenericNackSm(defaultEncoding); try { buf.ExtractHeader(genericNack, ref offset); } catch { genericNack = null; } return(genericNack); }
/// <summary> Called to create a CancelSmResp object </summary> /// <param name="defaultEncoding"></param> /// <param name="buf"></param> /// <param name="offset"></param> /// <returns> CancelSmResp </returns> internal static CancelSmResp Create(DataCodings defaultEncoding, SmppBuffer buf, ref int offset) { CancelSmResp cancelSmResp = new CancelSmResp(defaultEncoding); try { buf.ExtractHeader(cancelSmResp, ref offset); } catch { cancelSmResp = null; } return(cancelSmResp); }
/// <summary> Called to create a SubmitMulti object </summary> /// <param name="defaultEncoding"></param> /// <param name="buf"></param> /// <param name="offset"></param> /// <returns> SubmitMulti </returns> public static SubmitMultiSm Create(DataCodings defaultEncoding, SmppBuffer buf, ref int offset) { SubmitMultiSm submitMulti = new SubmitMultiSm(defaultEncoding); try { int start_offset = offset; buf.ExtractHeader(submitMulti, ref offset); submitMulti.ServiceType = buf.ExtractCString(ref offset); submitMulti.SourceTon = buf.ExtractByte(ref offset); submitMulti.SourceNpi = buf.ExtractByte(ref offset); submitMulti.SourceAddr = buf.ExtractCString(ref offset); submitMulti.DestinationAddresses = buf.ExtractDestinationAddresses(ref offset); submitMulti.EsmClass = buf.ExtractByte(ref offset); submitMulti.ProtocolId = buf.ExtractByte(ref offset); submitMulti.PriorityFlag = buf.ExtractByte(ref offset); submitMulti.ScheduleDeliveryTime = buf.ExtractCString(ref offset); submitMulti.ValidityPeriod = buf.ExtractCString(ref offset); submitMulti.RegisteredDelivery = buf.ExtractByte(ref offset); submitMulti.ReplaceIfPresent = buf.ExtractByte(ref offset); submitMulti.DataCoding = (DataCodings)buf.ExtractByte(ref offset); submitMulti.DefaultMsgId = buf.ExtractByte(ref offset); submitMulti.ShortMessageLength = buf.ExtractByte(ref offset); if (submitMulti.ShortMessageLength > 0) { submitMulti.UserDataBuffer = new SmppBuffer(defaultEncoding, buf.ExtractByteArray(ref offset, submitMulti.ShortMessageLength)); } while (offset - start_offset < submitMulti.Length) { submitMulti.Optional.Add(buf.ExtractTLV(ref offset)); } } catch { submitMulti = null; } return(submitMulti); }
/// <summary> Called to create a QuerySm object </summary> /// <param name="defaultEncoding"></param> /// <param name="buf"></param> /// <param name="offset"></param> /// <returns> QuerySm </returns> public static QuerySm Create(DataCodings defaultEncoding, SmppBuffer buf, ref int offset) { QuerySm querySm = new QuerySm(defaultEncoding); try { buf.ExtractHeader(querySm, ref offset); querySm.MessageId = buf.ExtractCString(ref offset); querySm.SourceTon = buf.ExtractByte(ref offset); querySm.SourceNpi = buf.ExtractByte(ref offset); querySm.SourceAddr = buf.ExtractCString(ref offset); } catch { querySm = null; } return(querySm); }
/// <summary> Called to create a QuerySmResp object </summary> /// <param name="defaultEncoding"></param> /// <param name="buf"></param> /// <param name="offset"></param> /// <returns> QuerySmResp </returns> public static QuerySmResp Create(DataCodings defaultEncoding, SmppBuffer buf, ref int offset) { QuerySmResp querySmResp = new QuerySmResp(defaultEncoding); try { buf.ExtractHeader(querySmResp, ref offset); querySmResp.MessageId = buf.ExtractCString(ref offset); querySmResp.FinalDateString = buf.ExtractCString(ref offset); querySmResp.MessageState = (MessageState)buf.ExtractByte(ref offset); querySmResp.ErrorCode = buf.ExtractByte(ref offset); } catch { querySmResp = null; } return(querySmResp); }
/// <summary> Called to create a SubmitSm object </summary> /// <param name="defaultEncoding"></param> /// <param name="buf"></param> /// <param name="offset"></param> /// <returns> SubmitSm </returns> public static SubmitSm Create(DataCodings defaultEncoding, SmppBuffer buf, ref int offset) { SubmitSm submitSm = new SubmitSm(defaultEncoding); try { int start_offset = offset; buf.ExtractHeader(submitSm, ref offset); submitSm.ServiceType = buf.ExtractCString(ref offset); submitSm.SourceTon = buf.ExtractByte(ref offset); submitSm.SourceNpi = buf.ExtractByte(ref offset); submitSm.SourceAddr = buf.ExtractCString(ref offset); submitSm.DestTon = buf.ExtractByte(ref offset); submitSm.DestNpi = buf.ExtractByte(ref offset); submitSm.DestAddr = buf.ExtractCString(ref offset); submitSm.EsmClass = buf.ExtractByte(ref offset); submitSm.ProtocolId = buf.ExtractByte(ref offset); submitSm.PriorityFlag = buf.ExtractByte(ref offset); submitSm.ScheduleDeliveryTime = buf.ExtractCString(ref offset); submitSm.ValidityPeriod = buf.ExtractCString(ref offset); submitSm.RegisteredDelivery = buf.ExtractByte(ref offset); submitSm.ReplaceIfPresent = buf.ExtractByte(ref offset); submitSm.DataCoding = (DataCodings)buf.ExtractByte(ref offset); submitSm.DefaultMsgId = buf.ExtractByte(ref offset); submitSm.ShortMessageLength = buf.ExtractByte(ref offset); if (submitSm.ShortMessageLength > 0) { submitSm.UserDataBuffer = new SmppBuffer(defaultEncoding, buf.ExtractByteArray(ref offset, submitSm.ShortMessageLength)); } while (offset - start_offset < submitSm.Length) { submitSm.Optional.Add(buf.ExtractTLV(ref offset)); } if (submitSm.ShortMessageLength == 0) { if (submitSm.Optional != null && submitSm.Optional.Count > 0) { TLV tlv_payload = submitSm.Optional[OptionalTags.MessagePayload]; if (tlv_payload != null) { submitSm.UserDataBuffer = new SmppBuffer(defaultEncoding, tlv_payload.Value); } TLV tlv_globalSeq = submitSm.Optional[OptionalTags.SarMsgRefNum]; if (tlv_globalSeq != null) { submitSm.MessageReferenceNumber = SmppBuffer.BytesToShort(tlv_globalSeq.Value, 0); } TLV tlv_pocketsNumber = submitSm.Optional[OptionalTags.SarTotalSegments]; if (tlv_pocketsNumber != null) { submitSm.TotalSegments = tlv_pocketsNumber.Value[0]; } TLV tlv_localSeq = submitSm.Optional[OptionalTags.SarSegmentSeqnum]; if (tlv_localSeq != null) { submitSm.SeqmentNumber = tlv_localSeq.Value[0]; } } } if (submitSm.UserDataBuffer != null && submitSm.UserDataBuffer.Length > 0) { bool hasUDHI = submitSm.MessageFeature == GSMSpecificFeatures.UDHI || submitSm.MessageFeature == GSMSpecificFeatures.UDHIandReplyPath; submitSm.UserData = UserData.Create(submitSm.UserDataBuffer, hasUDHI); if (submitSm.UserData.Headers.Count > 0) { UserDataHeader udh = submitSm.UserData.Headers[InformationElementIdentifiers.ConcatenatedShortMessages8bit]; if (udh != null) { submitSm.MessageReferenceNumber = udh.Data[0]; submitSm.TotalSegments = udh.Data[1]; submitSm.SeqmentNumber = udh.Data[2]; } udh = submitSm.UserData.Headers[InformationElementIdentifiers.ConcatenatedShortMessage16bit]; if (udh != null) { submitSm.MessageReferenceNumber = SmppBuffer.BytesToShort(udh.Data, 0); submitSm.TotalSegments = udh.Data[2]; submitSm.SeqmentNumber = udh.Data[3]; } } } else { submitSm.UserData = UserData.Create(); } } catch { submitSm = null; } return(submitSm); }
/// <summary> Called to create a DataSm object </summary> /// <param name="defaultEncoding"></param> /// <param name="buf"></param> /// <param name="offset"></param> /// <returns> DataSm </returns> public static DataSm Create(DataCodings defaultEncoding, SmppBuffer buf, ref int offset) { DataSm dataSm = new DataSm(defaultEncoding); try { int start_offset = offset; buf.ExtractHeader(dataSm, ref offset); dataSm.ServiceType = buf.ExtractCString(ref offset); dataSm.SourceTon = buf.ExtractByte(ref offset); dataSm.SourceNpi = buf.ExtractByte(ref offset); dataSm.SourceAddr = buf.ExtractCString(ref offset); dataSm.DestTon = buf.ExtractByte(ref offset); dataSm.DestNpi = buf.ExtractByte(ref offset); dataSm.DestAddr = buf.ExtractCString(ref offset); dataSm.EsmClass = buf.ExtractByte(ref offset); dataSm.RegisteredDelivery = buf.ExtractByte(ref offset); dataSm.DataCoding = (DataCodings)buf.ExtractByte(ref offset); if (offset - start_offset < dataSm.Length) { if (dataSm.Optional == null) { dataSm.Optional = new TLVCollection(); } while (offset - start_offset < dataSm.Length) { dataSm.Optional.Add(buf.ExtractTLV(ref offset)); } } if (dataSm.Optional != null && dataSm.Optional.Count > 0) { TLV tlv_payload = dataSm.Optional[OptionalTags.MessagePayload]; if (tlv_payload != null) { dataSm.UserDataBuffer = new SmppBuffer(defaultEncoding, tlv_payload.Value); } TLV tlv_globalSeq = dataSm.Optional[OptionalTags.SarMsgRefNum]; if (tlv_globalSeq != null) { dataSm.MessageReferenceNumber = SmppBuffer.BytesToShort(tlv_globalSeq.Value, 0); } TLV tlv_pocketsNumber = dataSm.Optional[OptionalTags.SarTotalSegments]; if (tlv_pocketsNumber != null) { dataSm.TotalSegments = tlv_pocketsNumber.Value[0]; } TLV tlv_localSeq = dataSm.Optional[OptionalTags.SarSegmentSeqnum]; if (tlv_localSeq != null) { dataSm.SequenceNumber = tlv_localSeq.Value[0]; } } if (dataSm.UserDataBuffer != null && dataSm.UserDataBuffer.Length > 0) { dataSm.UserData = UserData.Create(dataSm.UserDataBuffer, dataSm.MessageFeature == GSMSpecificFeatures.UDHI); } else { dataSm.UserData = UserData.Create(); } } catch { dataSm = null; } return(dataSm); }