2025-04-11 09:40:32 +08:00

150 lines
4.8 KiB
C

/*******************************************************************************
Copyright: - 2023- Copyrights of EigenComm Ltd.
File name: - imisms.h
Description: - Declare the SMS API for IMI
History: - 2023/04/10, Original created
******************************************************************************/
#ifndef IMI_SMS_H
#define IMI_SMS_H
#include "imicomm.h"
/******************************************************************************
*****************************************************************************
* IMI enum
*****************************************************************************
******************************************************************************/
typedef enum IMI_SMS_PRIM_ID_TAG
{
IMI_SMS_PRIM_BASE = 0,
IMI_SMS_SEND_MESSAGE_REQ, /* ImiSmsSendMessageReq */
IMI_SMS_SEND_MESSAGE_CNF, /* ImiSmsSendMessageCnf */
IMI_SMS_SEND_SMMA_REQ, /* ImiSmsSendSmmaReq */
IMI_SMS_SEND_SMMA_CNF, /* ImiSmsSendSmmaCnf */
IMI_SMS_SEND_MESSAGE_ABORT_REQ, /* ImiSmsSendMessageAbortReq */
IMI_SMS_SEND_MESSAGE_ABORT_CNF, /* ImiSmsSendMessageAbortCnf */
IMI_SMS_PRIM_END = 0x0fff
}IMI_SMS_PRIM_ID;
/******************************************************************************
*****************************************************************************
* STRUCT
*****************************************************************************
******************************************************************************/
/**
* IMI_SMS_SEND_MESSAGE_REQ
*/
#define IMI_SMS_MAX_PDU_SIZE 180
#define IMI_SMS_MAX_LENGTH_OF_ADDRESS_VALUE 40
typedef struct ImiSmsSendMessageReqTag
{
UINT8 smsId; /* SMS ID */
UINT8 smscLength; /* Destination Service Centre address */
UINT8 smscTypeOfNumber; /* TypeOfNumber */
UINT8 smscNumberPlanId; /* NumberingPlanId */
UINT8 smscAddressValue[IMI_SMS_MAX_LENGTH_OF_ADDRESS_VALUE];
UINT8 smsRef;
UINT8 reserved0;
UINT16 pduLength;
UINT8 pduData[IMI_SMS_MAX_PDU_SIZE];
}ImiSmsSendMessageReq;
typedef struct ImiSmsRpCauseElement_Tag
{
UINT8 cause; /* RpCause */
UINT8 diagnostic;
UINT16 reserved0;
}ImiSmsRpCauseElement;
typedef struct ImiSmsRpUserData_Tag
{
UINT16 length;
UINT16 reserved0;
UINT8 *rpUserData;
}ImiSmsRpUserData;
/**
* IMI_SMS_SEND_MESSAGE_CNF
*/
#define IMI_SMS_RETRY_OVER_SGS 0
#define IMI_SMS_RETRY_OVER_IP 1
#define IMI_SMS_RETRY_SMMA_OVER_SGS 2
#define IMI_SMS_RETRY_SMMA_OVER_IP 3
#define IMI_SMS_NO_RETRY 4
typedef struct ImiSmsSendMessageCnfTag
{
UINT8 shortMsgId;
UINT8 smsRef; /* Message Reference */
UINT8 statusOfReport; /* SmsStatusOfReport */
UINT8 tpCause; /* TpCause */
ImiSmsRpCauseElement rpCause; /* RpCause */
ImiSmsRpUserData rpUserData;
UINT16 tpduRawDatLen;
UINT8 retryType;
UINT8 reserved0;
UINT8 *tpduRawDat;
}ImiSmsSendMessageCnf;
/**
* IMI_SMS_SEND_SMMA_REQ
*/
typedef struct ImiSmsSendSmmaReq_Tag
{
UINT8 smsId; /* SMS ID */
UINT8 smscLength; /* Destination Service Centre address */
UINT8 smscTypeOfNumber; /* TypeOfNumber */
UINT8 smscNumberPlanId; /* NumberingPlanId */
UINT8 smscAddressValue[IMI_SMS_MAX_LENGTH_OF_ADDRESS_VALUE];
UINT8 smsRef;
UINT8 reserved0[3];
}ImiSmsSendSmmaReq;
/**
* IMI_SMS_SEND_SMMA_CNF
*/
typedef ImiSmsSendMessageCnf ImiSmsSendSmmaCnf;
/**
* IMI_SMS_SEND_MESSAGE_ABORT_REQ
*/
typedef struct ImiSmsSendMessageAbortReqTag
{
UINT8 smsId; /* SMS ID */
UINT8 reserved0[3];
}ImiSmsSendMessageAbortReq;
/**
* IMI_SMS_SEND_MESSAGE_ABORT_CNF
*/
typedef struct ImiSmsSendMessageAbortCnfTag
{
UINT8 smsId; /* SMS ID */
UINT8 reserved0[3];
}ImiSmsSendMessageAbortCnf;
/******************************************************************************
******************************************************************************
* extern function
******************************************************************************
******************************************************************************/
void ImaSmsImiSendMessageCnfFunc(ImiSmsSendMessageCnf *pSmsSendMessageCnf);
void ImaSmsImiSendMessageAbortCnfFunc(ImiSmsSendMessageAbortCnf *pSmsSendMessageAbortCnf);
void ImaSmsImiSendSmmaCnfFunc(ImiSmsSendSmmaCnf *pSmsSendSmmaCnf);
#endif