/******************************************************************************* Copyright: - 2023- Copyrights of EigenComm Ltd. File name: - imiss.h Description: - Declare the supplementary service API for IMI History: - 2023/04/10, Original created ******************************************************************************/ #ifndef IMI_SS_H #define IMI_SS_H /********************************************************************************* ***************************************************************************** * Includes ***************************************************************************** *********************************************************************************/ #include "imicomm.h" /********************************************************************************* ***************************************************************************** * Macros ***************************************************************************** *********************************************************************************/ #define IMI_STR_NUMBER_MAX_LEN (128) #define IMI_UT_CALL_FWD_NODE_MAX (6) #define IMI_UT_CALL_BARR_NODE_MAX (8) /****************************************************************************** ***************************************************************************** * IMI enum ***************************************************************************** ******************************************************************************/ typedef enum IMI_SS_PRIM_ID_TAG { IMI_SS_PRIM_BASE = 0, /* follow by IMI_CC_PRIM_ID */ IMI_SS_SET_CALL_HOLD_SUPP_REQ = 0x0200, /* ImiSsSetCallHoldSuppReq, AT+CHLD */ IMI_SS_SET_CALL_HOLD_SUPP_CNF, /* ImiSsSetCallHoldSuppCnf */ IMI_SS_SET_CALL_WAITING_REQ, /* ImiSsSetCallWaitingReq, AT+CCWA */ IMI_SS_SET_CALL_WAITING_CNF, /* ImiSsSetCallWaitingCnf */ IMI_SS_SET_CALLID_PRESENT_REQ, /*ImiSsCallIdPresentSetReq*/ IMI_SS_SET_CALLID_PRESENT_CNF, /*ImiSsCallIdPresentSetCnf*/ IMI_SS_GET_CALLID_PRESENT_REQ, /*ImiSsCallIdPresentGetReq*/ IMI_SS_GET_CALLID_PRESENT_CNF, /*ImiSsCallIdPresentGetCnf*/ /*-------SS UT--------*/ IMI_SS_SET_CLCK_SUPP_REQ, /*ImiSsClckSetReq*/ IMI_SS_SET_CLCK_SUPP_CNF, /*ImiSsClckSetCnf*/ IMI_SS_GET_CLCK_SUPP_REQ, /*ImiSsClckGetReq*/ IMI_SS_GET_CLCK_SUPP_CNF, /*ImiSsClckGetCnf*/ IMI_SS_SET_CALL_FORWARD_REQ, /*ImiSsSetCallFwdReq*/ IMI_SS_SET_CALL_FORWARD_CNF, /*ImiSsSetCallFwdCnf*/ IMI_SS_GET_CALL_FORWARD_REQ, /*ImiSsGetCallFwdReq*/ IMI_SS_GET_CALL_FORWARD_CNF, /*ImiSsGetCallFwdCnf*/ /*unsolicited indication*/ IMI_SS_PRIM_END = 0x0fff }IMI_SS_PRIM_ID; typedef enum ImiSsCallHoldSuppModeTag { IMI_SS_REL_ALL_HELD_WAITING_CALL = 0, //:0, release all held calls or waiting call IMI_SS_REL_ACTIVE_ACCEPT_HELD_WAITING_CALL = 1, //:1, release all active calls and accepts the other (held or waiting) call IMI_SS_REL_SPECIFIC_ACTIVE_CALL_X = 2, //:1X, release a specific active call X, X indicated in call Id IMI_SS_HLD_ACTIVE_ACCEPT_HELD_WAITING_CALL = 3, //:2, hold all active calls and accepts the other (held or waiting) call IMI_SS_HLD_ALL_ACTIVE_EXCEPT_CALL_X = 4 //:2X, hold all active calls except call X } ImiSsCallHoldSuppMode; typedef enum ImiSsCallWaitingModeTag { IMI_SS_CALL_WAITING_DISABLE = 0, IMI_SS_CALL_WAITING_ENABLE, IMI_SS_CALL_WAITING_QUERY_STATUS, IMI_SS_CALL_WAITING_UNKNOWN } ImiSsCallWaitingMode; typedef enum ImiSsUtReqMethodType_ENUM { IMI_UT_REQ_INVALID = 0, IMI_UT_REQ_METHOD_GET, IMI_UT_REQ_METHOD_PUT, IMI_UT_REQ_METHOD_POST, IMI_UT_REQ_METHOD_DEL }ImiSsUtReqMethodType; typedef enum ImiSsUtReqModType_ENUM { IMI_UT_MOD_INVALID = 0, IMI_UT_MOD_SIMSERVS, IMI_UT_MOD_OIP, IMI_UT_MOD_TIP, IMI_UT_MOD_OIR, IMI_UT_MOD_TIR, IMI_UT_MOD_CW, IMI_UT_MOD_CDIV, IMI_UT_MOD_ICB, IMI_UT_MOD_OCB, IMI_UT_MOD_MAX = 16, }ImiSsUtReqModType; typedef enum ImiUtCcfcStatus_ENUM { IMI_UT_CCFC_DEACTIVED = 0, IMI_UT_CCFC_ACTIVED }ImiUtCcfcStatus; typedef enum ImiUtCcfcReqOperType_ENUM { IMI_UT_CCFC_REQ_UNCONDITIONAL = 0, IMI_UT_CCFC_REQ_BUSY, IMI_UT_CCFC_REQ_NOREPLY, IMI_UT_CCFC_REQ_NOREACH, IMI_UT_CCFC_REQ_ALL_CDIV, /*ALL call forwarding*/ IMI_UT_CCFC_REQ_ALL_COND_CDIV, /*ALL conditional call forwarding */ IMI_UT_CCFC_REQ_CD, /*communication-deflection*/ IMI_UT_CCFC_REQ_NOT_LOGGEDIN, /*call forwarding not logged-in*/ }ImiUtCcfcReqOperType; typedef enum ImiUtCcfcReqModeType_ENUM { IMI_UT_CCFC_MODE_DISABLE = 0, IMI_UT_CCFC_MODE_ENABLE, IMI_UT_CCFC_MODE_QUERY, IMI_UT_CCFC_MODE_REG, IMI_UT_CCFC_MODE_ERASURE }ImiUtCcfcReqModeType; typedef enum ImiUtCcfcTagNumType_ENUM { IMI_TAGNUM_TYPE_DEF =0, IMI_TAGNUM_LOCAL_TYPE = IMI_TAGNUM_TYPE_DEF, IMI_TAGNUM_GEO_TYPE, }ImiUtCcfcTagNumType; /****************************************************************************** ***************************************************************************** * IMI STRUCT ***************************************************************************** ******************************************************************************/ /****************************************************************************** * IMI_SS_SET_CALL_HOLD_SUPP_REQ * AT+CHLD ******************************************************************************/ typedef struct ImiSsSetCallHoldSuppReqTag { UINT8 mode; //ImiSsCallHoldSuppMode UINT8 callId; //1-6, 0-invalid; //present if mode is IMI_SS_REL_SPECIFIC_ACTIVE_CALL_X or IMI_SS_HLD_ALL_ACTIVE_EXCEPT_CALL_X UINT16 resvd; } ImiSsSetCallHoldSuppReq; //IMI_SS_SET_CALL_HOLD_SUPP_CNF typedef ImiEmptySig ImiSsSetCallHoldSuppCnf; /****************************************************************************** * IMI_SS_SET_CALL_WAITING_REQ * AT+CCWA ******************************************************************************/ typedef struct ImiSsSetCallWaitingReqTag { UINT8 mode; //ImiSsCallWaitingMode BOOL classPresent;//shall be TRUE if mode is not query status UINT8 class; UINT8 resvd; } ImiSsSetCallWaitingReq; //IMI_SS_SET_CALL_WAITING_CNF typedef struct ImiSsSetCallWaitingCnfTag { UINT8 mode; //ImiSsCallWaitingMode /* * status returned for query status mode */ UINT8 voice : 1; UINT8 data : 1; UINT8 fax : 1; UINT8 sms : 1; UINT8 resvd : 4; UINT16 resvd2; } ImiSsSetCallWaitingCnf; /****************************************************************************** * IMI_SS_GET_CALL_FORWARD_REQ * AT+CCFC = operType, modtype(which is equal to 2) ******************************************************************************/ typedef struct ImiSsGetCallFwdReqTag { UINT8 method; /*ImiSsUtReqMethodType*/ UINT8 operType; /*ImiUtCcfcReqOperType*/ UINT8 resv[2]; }ImiSsGetCallFwdReq; typedef struct ImiSsGetPeerCallFwdCnfTag { /* when =2 and command successful: +CCFC: ,[,,[,,[,