📄 mcpdu.h
字号:
/*
* Copyright (C) Obigo AB, 2002-2005.
* All rights reserved.
*
* This software is covered by the license agreement between
* the end user and Obigo AB, and may be
* used and copied only in accordance with the terms of the
* said agreement.
*
* Obigo AB assumes no responsibility or
* liability for any errors or inaccuracies in this software,
* or any consequential, incidental or indirect damage arising
* out of the use of the software.
*
*/
#ifndef _MCPDU_H
#define _MCPDU_H
#define LENGTH_QUOTE (unsigned char)31
#define TEXT_QUOTE (unsigned char)127
#define QUOTED_STRING_QUOTE (unsigned char)34
#define SHIFT_DELIMITER (unsigned char)127
#define SHORT_CUT_SHIFT_DELIMITER_MAX_VALUE 31
typedef enum
{
MMS_DELIVERY_TIME_ABSOLUTE = 128,
MMS_DELIVERY_TIME_RELATIVE = 129
} MmsDeliveryTimeType;
typedef enum
{
MMS_EXPIRY_TIME_ABSOLUTE = 128,
MMS_EXPIRY_TIME_RELATIVE = 129
} MmsExpiryTimeType;
typedef enum
{
MMS_M_SEND_REQ = 128,
MMS_M_SEND_CONF = 129,
MMS_M_NOTIFICATION_IND = 130,
MMS_M_NOTIFY_RESP = 131,
MMS_M_RETRIEVE_CONF = 132,
MMS_M_ACKNOWLEDGE_IND = 133,
MMS_M_DELIVERY_IND = 134,
MMS_M_READ_REC_IND = 135,
MMS_M_READ_ORIG_IND = 136,
MMS_M_FORWARD_REQ = 137,
MMS_M_FORWARD_CONF = 138,
MMS_M_MBOX_STORE_REQ = 139,
MMS_M_MBOX_STORE_CONF = 140,
MMS_M_MBOX_VIEW_REQ = 141,
MMS_M_MBOX_VIEW_CONF = 142,
MMS_M_MBOX_UPLOAD_REQ = 143,
MMS_M_MBOX_UPLOAD_CONF = 144,
MMS_M_MBOX_DELETE_REQ = 145,
MMS_M_MBOX_DELETE_CONF = 146,
MMS_M_MBOX_DESCR = 147
} MmsMessageType;
typedef enum
{
MMS_MM_FLAGS_ADD = 128,
MMS_MM_FLAGS_REMOVE = 129,
MMS_MM_FLAGS_FILTER = 130
} MmsMmFlags;
typedef enum
{
MMS_MM_STATE_DRAFT = 128,
MMS_MM_STATE_SENT = 129,
MMS_MM_STATE_NEW = 130,
MMS_MM_STATE_RETRIEVED = 131,
MMS_MM_STATE_FORWARDED = 132
} MmsMmState;
typedef enum
{
MMS_STORE_STATUS_SUCCESS = 128,
MMS_STORE_STATUS_ERROR_TRANSIENT_FAILURE = 192,
MMS_STORE_STATUS_ERROR_TRANSIENT_NETWORK_PROBLEM = 193,
MMS_STORE_STATUS_ERROR_PERMANENT_FAILURE = 224,
MMS_STORE_STATUS_ERROR_PERMANENT_SERVICE_DENIED = 225,
MMS_STORE_STATUS_ERROR_PERMANENT_MSG_FORMAT_CORRUPT = 226,
MMS_STORE_STATUS_ERROR_PERMANENT_MSG_NOT_FOUND = 227,
MMS_STORE_STATUS_ERROR_PERMANENT_MMBOX_FULL = 228
} MmsStoreStatus;
typedef enum
{
MMS_REPLY_CHARGING_DEADLINE_ABSOLUTE = 128,
MMS_REPLY_CHARGING_DEADLINE_RELATIVE = 129
} MmsReplyChargingDeadlineType;
typedef enum
{
MMS_BCC = 0x01,
MMS_CC = 0x02,
X_MMS_CONTENT_LOCATION = 0x03,
MMS_CONTENT_TYPE = 0x04,
MMS_DATE = 0x05,
X_MMS_DELIVERY_REPORT = 0x06,
X_MMS_DELIVERY_TIME = 0x07,
X_MMS_EXPIRY = 0x08,
MMS_FROM = 0x09,
X_MMS_MESSAGE_CLASS = 0x0a,
MMS_MESSAGE_ID = 0x0b,
X_MMS_MESSAGE_TYPE = 0x0c,
X_MMS_VERSION = 0x0d,
X_MMS_MESSAGE_SIZE = 0x0e,
X_MMS_PRIORITY = 0x0f,
X_MMS_READ_REPLY = 0x10,
X_MMS_REPORT_ALLOWED = 0x11,
X_MMS_RESPONSE_STATUS = 0x12,
X_MMS_RESPONSE_TEXT = 0x13,
X_MMS_SENDER_VISIBILITY = 0x14,
X_MMS_STATUS = 0x15,
MMS_SUBJECT = 0x16,
MMS_TO = 0x17,
X_MMS_TRANSACTION_ID = 0x18,
X_MMS_RETRIEVE_STATUS = 0x19,
X_MMS_RETRIEVE_TEXT = 0x1a,
X_MMS_READ_STATUS = 0x1b,
X_MMS_REPLY_CHARGING = 0x1c,
X_MMS_REPLY_CHARGING_DEADLINE = 0x1d,
X_MMS_REPLY_CHARGING_ID = 0x1e,
X_MMS_REPLY_CHARGING_SIZE = 0x1f,
X_MMS_PREVIOUSLY_SENT_BY = 0x20,
X_MMS_PREVIOUSLY_SENT_DATE = 0x21,
X_MMS_STORE = 0x22,
X_MMS_MM_STATE = 0x23,
X_MMS_MM_FLAGS = 0x24,
X_MMS_STORE_STATUS = 0x25,
X_MMS_STORE_STATUS_TEXT = 0x26,
X_MMS_STORED = 0x27,
X_MMS_ATTRIBUTES = 0x28,
X_MMS_TOTALS = 0x29,
X_MMS_MBOX_TOTALS = 0x2a,
X_MMS_QUOTAS = 0x2b,
X_MMS_MBOX_QUOTAS = 0x2c,
X_MMS_MESSAGE_COUNT = 0x2d,
MMS_CONTENT = 0x2e,
X_MMS_START = 0x2f,
MMS_ADDITIONAL_HEADERS = 0x30,
X_MMS_DISTRIBUTION_INDICATOR = 0x31,
X_MMS_ELEMENT_DESCRIPTOR = 0x32,
X_MMS_LIMIT = 0x33,
APPLICATION_HEADER = 0x7f
} MmsHeaderTag;
typedef union
{
UINT8 *attributes;
void *bcc;
void *cc;
void *contentLocation;
void *contentType;
UINT32 date;
UINT8 deliveryReport;
void *deliveryTime;
UINT8 distributionIndicator;
void *elementDescriptor;
void *expiry;
void *from;
UINT32 limit;
void *mboxQuotas;
void *mboxTotals;
void *messageClass;
void *messageCount;
char *messageId;
UINT32 messageSize;
UINT8 messageType;
void *mmFlags;
UINT8 *mmState;
void *previouslySentBy;
void *previouslySentDate;
UINT8 priority;
UINT8 quotas;
UINT8 readReply;
UINT8 readStatus;
UINT8 replyCharging;
void *replyChargingDeadline;
char *replyChargingId;
UINT32 replyChargingSize;
UINT8 reportAllowed;
void *responseStatus;
void *responseText;
UINT8 retrieveStatus;
void *retrieveText;
UINT8 senderVisibility;
UINT32 start;
UINT8 status;
UINT8 store;
UINT8 stored;
UINT8 storeStatus;
void *storeStatusText;
void *subject;
void *to;
UINT8 totals;
char *transactionId;
UINT8 version;
char *applicationHeader;
union
{
UINT8 aUint8;
UINT32 aUint32;
UINT8 *aUint8Ptr;
char *aCharPtr;
void *aVoidPtr;
} raw;
} MmsHeaderValue;
#define SKIP_HIGH_BIT(a) (unsigned char)((a) & (unsigned char)0x7f)
#define SET_HIGH_BIT(a) (unsigned char)((a) | (unsigned char)0x80)
#define IS_CTL(c) (((c) >= 0 && (c) <= 31) || (c) == 127)
#define IS_LWS(c) ((c) == 9 || (c) == 10 || (c) == 13 || (c) == 32)
#define IS_OCTET(c) ((c) >= 0 && (c) <= 255)
#define IS_CHAR(c) ((c) >= 0 && (c) <= 127)
#define IS_SEPARATOR(c) ((c) == '(' || (c) == ')' || (c) == '<' || (c) == '>' || \
(c) == '@' || (c) == ',' || (c) == ';' || (c) == ':' || \
(c) == '\\' || (c) == '"' || (c) == '/' || (c) == '[' || (c) == ']' || \
(c) == '?' || (c) == '=' || (c) == '{' || (c) == '}' || (c) == 32 || (c) == 9)
#define IS_TOKEN(c) (IS_CHAR(c) && !IS_CTL(c) && !IS_SEPARATOR(c))
#define IS_US_ASCII(c) IS_CHAR(c)
#define IS_TEXT(c) (IS_OCTET(c) && !IS_CTL(c))
#define IS_TEXT_QUOTE(c) ((c) == TEXT_QUOTE)
#define IS_TEXT_STRING(c) (IS_TEXT_QUOTE(c) || IS_TEXT(c))
#define IS_QUOTED_STRING_QUOTE(c) ((c) == 34)
#define IS_SHORT_LENGTH(c) ((c) < 31)
#define IS_LENGTH_QUOTE(c) ((c) == LENGTH_QUOTE)
#define IS_SHORT_INTEGER(c) ((c) & 0x80)
#define IS_LONG_INTEGER(c) IS_SHORT_LENGTH(c)
#define IS_INTEGER_VALUE(c) (IS_SHORT_INTEGER(c) || IS_LONG_INTEGER(c))
#define IS_VALUE_LENGTH(c) (IS_SHORT_LENGTH(c) || IS_LENGTH_QUOTE(c))
#define IS_ANY_CHARSET(c) ((c) == 128)
#define IS_EXTENSION_MEDIA(c) (IS_TEXT(c))
#define IS_CONSTRAINED_ENCODING(c) (IS_EXTENSION_MEDIA(c) || IS_SHORT_INTEGER(c))
#define IS_CONSTRAINED_MEDIA(c) (IS_CONSTRAINED_ENCODING(c))
#define IS_SHIFT_DELIMITER(c) ((c) == SHIFT_DELIMITER)
#define IS_SHORT_CUT_SHIFT_DELIMITER(c) ((c) >= 0 && (c) <= 31)
#define IS_SHIFT_SEQUENCE(c) (IS_SHIFT_DELIMITER(c) || IS_SHORT_CUT_SHIFT_DELIMITER(c))
#define IS_WELL_KNOWN_HEADER(c) (IS_SHORT_INTEGER(c))
#define IS_WELL_KNOWN_VALUE(c) (IS_INTEGER_VALUE(c))
#define IS_APPLICATION_HEADER(c) (IS_TOKEN(c))
#define IS_MESSAGE_HEADER(c) (IS_WELL_KNOWN_HEADER(c) || IS_APPLICATION_HEADER(c))
#define IS_POSSIBLE_SHORT_INTEGER(i) ((i) < 0x80)
void *cnvIntegerToUint32( void *from, UINT32 *to, unsigned long size);
UINT8 cnvLenLongInteger(UINT32 n);
UINT8 cnvLenUintvar(UINT32 n);
void *cnvLongIntegerToUint32( void *from, UINT32 *to, unsigned long size);
void *cnvShortIntegerToUchar( void *from, unsigned char *to, unsigned long size);
void *cnvUcharToShortInteger( unsigned char from, void *to, unsigned long size);
void *cnvUintvarToUint32( void *from, UINT32 *to, unsigned long size);
void *cnvUint32ToInteger( UINT32 from, void *to, unsigned long size);
void *cnvUint32ToLongInteger( UINT32 from, void *to, unsigned long size);
void *cnvUint32ToUintvar( UINT32 from, void *to, unsigned long size);
void *cnvUint32ToValueLength( UINT32 from, void *to, unsigned long size);
void *cnvValueLengthToUint32( void *from, UINT32 *to, unsigned long size);
void *mmsGetBody( void *data, unsigned long size);
CMN_BOOL mmsPduAppend( void *header, unsigned long size, unsigned long *length,
MmsHeaderTag tag, unsigned long valueSize, MmsHeaderValue value);
CMN_BOOL mmsPduExtractValue(unsigned char *pos, MmsHeaderTag tag,
MmsHeaderValue *value, unsigned long size);
CMN_BOOL mmsPduGet( void *header, unsigned long size, MmsHeaderTag tag,
MmsHeaderValue *value);
void mmsPduGetMessageClass( void *header, unsigned long size,
MmsMessageClass *mc);
unsigned char *mmsPduNextTag(unsigned char *pos, unsigned long length);
CMN_BOOL mmsPduSanityCheck( void *data, unsigned long size);
unsigned char *mmsPduSkipString(unsigned char *pos, unsigned long length);
CMN_BOOL mmsPduUnrecognized( void *data, unsigned long size);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -