/*-------------------------------------------------------------------------------------------------------------------- * ------------------------------------------------------------------------------------------------------------------- * * Filename: cmux_api.h * * Description: API interface prototypes for cmux * * History: * Sep 4, 2017 - Rong Jin Creation of file * * Notes: * ******************************************************************************/ #ifndef __CMUX_API_H__ #define __CMUX_API_H__ #include "osa.h" #include "teldef.h" #include "mi_api.h" #include "uart.h" #include "dialer_task.h" #ifdef CRANE_MCU_DONGLE #define CMUX_EXTEND_AT #else #undef CMUX_EXTEND_AT #endif //#define ATNET_SSL #define MAKE_MI_REQ_HANDLE( atHandle, reqId ) MAKE_CI_REQ_HANDLE( atHandle, reqId ) #ifndef LTEONLY_THIN_SINGLE_SIM_2MFLASH #define MAX_CMUX_CHANNEL 6 #else #define MAX_CMUX_CHANNEL 2 #endif #define MAX_CHANNEL_SEND_BUF utlAT_MAX_LINE_LENGTH #define AT_COMMAND_MODE 0 #define NON_TRANSPARENT_MDOE 1 #define TRANSPARENT_MDOE 2 #define TYPE_USERPWD "USERPWD" #define TYPE_APN "APN" #define TYPE_CFGT "CFGT" #define TYPE_CFGP "CFGP" #define TYPE_AUTH "AUTH" #define FTP_CFG_ACCOUNT "account" #define FTP_CFG_FILETYPE "filetype" #define FTP_CFG_TRANSMODE "transmode" #define FTP_CFG_CONTEXTID "contextid" #define FTP_CFG_RSPTIMEOUT "rsptimeout" #define FTP_CFG_SSLTYPE "ssltype" #define FTP_CFG_SSLCTXID "sslctxid" #define CMUXDBG(fmt,args...) CPUartLogPrintf(fmt, ##args) enum acceptAction { ACCEPT_ALLOW, ACCEPT_DENY }; enum transportMode { NON_TRANSPARENT, TRANSPARENT }; enum netType { TCP_CLIENT, TCP_SERVER, UDP_CLIENT }; enum viewMode { HEX_MODE, TEXT_MODE }; enum serviceID { SVCID_DIALER, SVCID_NET0, SVCID_NET1, SVCID_NET2, SVCID_NET3, SVCID_NET4, SVCID_NET5, SVCID_FOTA, SVCID_FTP, SVCID_FTPA, SVCID_NBIOT, SVCID_MAX }; enum miRequestMsg { MI_REQUEST_MSG, MI_RESPONSE_MSG, MI_FOTA_REQUEST_MSG, MI_FOTA_RESPONSE_MSG, MI_FTPA_REQUEST_MSG, MI_FTPA_RESPONSE_MSG, MI_TRANSPORT_REQUEST_MSG, }; enum channelType { CHANNEL_INIT, CHANNEL_NET, CHANNEL_FTP, CHANNEL_FOTA, }; enum pdpActiveStatus { PDP_STATUS_DEACTIVED, PDP_STATUS_ACTIVED }; enum apnHandleStatus { APN_ACTIVE_NOT_ALLOWED = 1, /*APN has been actived by this channel*/ APN_HAS_ACTIVED, /*APN has been actived by other channel */ APN_NOT_ACTIVED, /*No channel actived the APN*/ APN_DEACTIV_NOT_ALLOWED, APN_DEACTIV_ONLY_CLEAR_INFO, APN_DEACTIVE }; enum AsrOpenServiceType { ASR_SERVICE_TCP, ASR_SERVICE_UDP, ASR_SERVICE_TCP_LISTENER, ASR_SERVICE_UDP_SERVICE, ASR_SERVICE_MAX }; enum SSLCfgParameType { SSL_CFG_VERSION, SSL_CFG_CIPHERSUITE, SSL_CFG_CACERT, SSL_CFG_CLIENTCERT, SSL_CFG_CLIENTKEY, SSL_CFG_SECLEVEL, SSL_CFG_IGNORELOCALTIME, SSL_CFG_NEGOTIATETIME }; struct pdpParam { struct pdpUserPswd userPswd; CHAR apn[MAX_STRING_LEN]; CHAR ip_type[MAX_STRING_LEN]; INT32 auth; INT32 cfgp; INT32 cfgt; INT32 conNum; UINT32 atHandle; BOOL isDefault; }; struct pdpIpInfo { INT32 status; CHAR ipStr[MAX_STRING_LEN]; CHAR gateStr[MAX_STRING_LEN]; CHAR DNS1[MAX_STRING_LEN]; CHAR DNS2[MAX_STRING_LEN]; }; struct netSvcParam { UINT8 socketID;/*accept socket*/ UINT8 mode; UINT8 type; UINT8 action;/*if type: tcp/udp server, check action*/ UINT8 transMode; struct pdpParam pdpCfg; struct pdpIpInfo ipInfo; }; struct createDataCtrl { UINT8 socketID;/*socket*/ UINT8 type; /*0:TCP client, 1:TCP server, 2:UCP client*/ }; struct writeDataCtrl { UINT32 totalWriteLen; UINT32 writeLen; UINT32 transferLen; UINT8 waitForWrite; UINT8 ftpPutMode; UINT8 socketID; UINT8 ftpPutA; UINT32 atHandle; UINT32 lastDataTick; UINT32 startPos; CHAR fileName[FTP_MAX_STRING_LEN]; CHAR localName[FTP_MAX_STRING_LEN]; INT32 cnf; }; struct channelAtp { UINT32 atp; struct netSvcParam svc; struct writeDataCtrl dataCtrl; struct createDataCtrl createCtrl; char writeBuf[ MAX_CHANNEL_SEND_BUF]; OSAMsgQRef msgQ; OSAMutexRef lock; UINT8 transMode; UINT8 SocketId; enum channelType type; }; struct cmuxChannelController { struct channelAtp channel[MAX_CMUX_CHANNEL]; CHAR defaultApn[MAX_STRING_LEN]; UINT8 urc; UINT8 configured; }; struct serviceGrp { enum serviceID svcID; OSAMsgQRef msgQRef; UINT32 sAtp; }; struct miApiMsg { UINT32 msgID; void *pArgs; UINT32 len; }; struct miRequestArgs { UINT32 primID; UINT32 requestHandle; void *param; }; struct TIGX_INFO { CHAR version[MAX_STRING_LEN]; CHAR module_info[MAX_STRING_LEN]; CHAR manufacture_id[MAX_STRING_LEN]; CHAR model[MAX_STRING_LEN]; CHAR firmwareVer[MAX_STRING_LEN]; CHAR firmwareDate[MAX_STRING_LEN]; CHAR hardwareVer[MAX_STRING_LEN]; CHAR hardwareDate[MAX_STRING_LEN]; }; struct miSSLCfgReq { UINT8 ssl_ctx_id; UINT8 ssl_ctg_type; INT32 value; UINT8 path[MAX_STRING_LEN]; }; MiReturnCode setPdpUserReq(UINT32 atHandle, struct pdpSetParam *reqParas); MiReturnCode setPdpApnReq(UINT32 atHandle, struct pdpSetParam *reqParas); MiReturnCode setPdpAuthReq(UINT32 atHandle, struct pdpSetParam *reqParas); MiReturnCode setPdpCfgtReq(UINT32 atHandle, struct pdpSetParam *reqParas); MiReturnCode setPdpCfgpReq(UINT32 atHandle, struct pdpSetParam *reqParas); MiReturnCode setPdpActReq(UINT32 atHandle, struct pdpActiveStateReq *reqParas); MiReturnCode setNetIpfilterReq(UINT32 atHandle, struct netSetIpfilterReq *reqParas); MiReturnCode setNetServiceReq(UINT32 atHandle, struct netSetServiceReq *reqParas); MiReturnCode setNetOpenReq(UINT32 atHandle, struct netSetSocketOpenReq *reqParas); MiReturnCode setNetDataReadReq(UINT32 atHandle, struct netSocketReadReq *reqParas); MiReturnCode setNetWriteReq(UINT32 atHandle, struct netSocketWriteReq *reqParas); MiReturnCode setNetCloseReq(UINT32 atHandle, struct netSocketCloseReq *reqParas); MiReturnCode setNetAckReq(UINT32 atHandle, struct netSocketAckReq *reqParas); MiReturnCode setNetAcceptReq(UINT32 atHandle, struct netSocketAcceptReq *reqParas); MiReturnCode setNetCreateReq(UINT32 atHandle, struct netCreateReq *reqParas); MiReturnCode setFtpOpenReq(UINT32 atHandle, struct ftpSetOpenReq *reqParas); MiReturnCode setFtpCloseReq(UINT32 atHandle, void *reqParas); MiReturnCode setFtpSizeReq(UINT32 atHandle, struct ftpSetGenericReq *reqParas); MiReturnCode setFtpGetFileReq(UINT32 atHandle, struct ftpSetFileGetReq *reqParas); MiReturnCode setFtpPutFileReq(UINT32 atHandle, struct ftpSetFilePutReq *reqParas); #if 0 MiReturnCode setFtpPutFileDataReq(UINT32 atHandle, struct ftpSetFilePutDataReq *reqParas); #endif MiReturnCode getDialerNoParamReq(UINT32 atHandle, UINT32 primID); MiReturnCode getNetNoParamReq(UINT32 atHandle, UINT32 primID); MiReturnCode getFtpNoParamReq(UINT32 atHandle, UINT32 primID); MiReturnCode setSysResetNoParamReq(UINT32 atHandle, UINT32 primID); MiReturnCode getNetIpfilterReq(UINT32 atHandle, UINT32 primID); MiReturnCode setAsrOpenReq(UINT32 atHandle, struct asrOpenReq *reqParas); MiReturnCode setAsrCloseReq(UINT32 atHandle, struct netSocketCloseReq *reqParas); MiReturnCode setAsrStateReq(UINT32 atHandle, struct asrStateReq *reqParas); MiReturnCode setAsrSendReq(UINT32 atHandle, struct asrSocketSendReq *reqParas); MiReturnCode setAsrQueryReadReq(UINT32 atHandle, struct netSocketReadReq *reqParas); MiReturnCode setAsrDataReadReq(UINT32 atHandle, struct netSocketReadReq *reqParas); MiReturnCode setAsrSendHexReq(UINT32 atHandle, struct asrSendHexReq *reqParas); MiReturnCode setAsrSwTmdReq(UINT32 atHandle, struct asrSwTmdReq *reqParas); MiReturnCode setSSLCfgReq(UINT32 atHandle, struct miSSLCfgReq *reqParas); MiReturnCode getSSLCfgReq(UINT32 atHandle, struct miSSLCfgReq *reqParas); void init_e20_config(void); struct asrSetCfg * getAsrCfgReq(void); MiReturnCode setAsrCfgReq(UINT8 type, int cfg_value,int retrans_value); int setAsrEchoSendData(int echo_mode); int getAsrEchoSendData(void); UINT32 cmuxGetChannelIndex(UINT32 sAtpIndex); UINT32 cmuxIsTransportAtpIndex(UINT32 sAtpIndex); INT32 cmuxSetAtpIndex(UINT32 chanIndex, UINT32 sAtpIndex); INT32 cmuxSetFtpAtpIndex(UINT32 chanIndex, UINT32 sAtpIndex); INT32 cmuxSetFotaAtpIndex(UINT32 chanIndex, UINT32 sAtpIndex); INT32 cmuxSetNetSvcParam(UINT32 chanIndex, struct netSetServiceReq *paras); BOOL cmuxIsSocketBindChannel(UINT32 chanIndex, UINT8 socket); INT32 cmuxSetDataCtrl(UINT32 chanIndex, UINT32 atHandle, UINT8 socketID, UINT32 totalLen, UINT8 ftpPutMode, struct ftpSetFilePutReq *putData); INT32 cmuxSetNetAcceptCtrl(UINT32 chanIndex, struct netSocketAcceptCnf *paras); INT32 processCmuxChannelData(UINT32 chanIndex, char *buf, INT32 len); void initMsgQRef(UINT32 svcID,OSAMsgQRef msgQ); void init_cmux_channelCtrl(void); struct cmuxChannelController * get_cmux_channelCtrl(void); INT32 cmuxSetMode(UINT32 chanIndex, UINT8 mode); INT32 cmuxSetModeWithSocketID(UINT32 chanIndex, UINT8 mode,UINT8 socketId); int get_ipsec_test_enable(void); void set_ipsec_test_enable(int enable); void *get_tigx_info(void); void init_tigx_info(void); void set_tigx_info(char type); void get_order_key(char *dst); char *get_tigx_key(void); void set_my_sys_info_urc_sAtp(UINT32 urcValue , UINT32 sAtpIndex); UINT32 get_my_sys_info_urc_sAtp(UINT32 sAtpIndex); void sysinfourc_ind_reg_status(UINT8 status,UINT8 act,UINT16 NetworkCode); void sysinfourc_ind_saved_reg_status(void); void atcfun_reset_led(void); void atcfun_reset_device(void); void set_E20_error_num(int err); int is_E20_module_type(void); int get_E20_error_num(void); //void cmux_set_data_to_control_mode(UINT32 xid); void cmux_set_ftp_resp_timeout(UINT32 atHandle, UINT32 timeout); BOOL cmuxIsNetDataTransMode(UINT32 sAtpIndex,char *buf, int len); BOOL cmuxSwitchToCommandMode(CHAR *data, INT32 dataLen); BOOL cmuxSetCommandMode(UINT32 chanIndex); MiReturnCode setNetTransWriteDataReq(UINT32 chanIndex, struct netSocketWriteDataReq *reqParas); MiReturnCode setNetTransWriteDataReq_directly2net(UINT8 SocketId, char *buf, int len); MiReturnCode DetachCloseSocketReq(UINT32 reqHandle); INT32 dialerReportNokToCmux(INT32 conNum); INT32 dialerResponseToCmux(DialerResponseData *rsp); MiReturnCode setNetWriteDataReq(UINT32 atHandle, struct netSocketWriteDataReq *reqParas); void sendCmuxData(UINT32 sAtpIndex, char *data, UINT32 dataLen); MiReturnCode setFotaReq(UINT32 atHandle, struct fotaSetOpenReq *reqParas); #ifdef QUECTEL_MINIFOTA_SUPPORT MiReturnCode quec_minisys_fota_req(UINT32 atHandle, struct fotaGetProCnf *reqParas, UINT32 msgId); #endif MiReturnCode setSocketLEDReq(UINT32 atHandle, struct setSocketLEDReq *reqParas); UINT8 cmuxGetUrc(void); MiReturnCode setNetUrcReq(UINT32 atHandle, struct netSetUrcReq *reqParas); INT32 cmuxGetPdpStatus(UINT32 chanIndex, UINT8 *status); #ifndef NO_EXTEND_MY_Q_AT MiReturnCode getCtxConfigReq(UINT32 atHandle, UINT32 contextID); MiReturnCode setCtxConfigReq(UINT32 atHandle, struct asrCtxConfigReq *reqParas); #endif MiReturnCode getFtpCfgReqA(UINT32 atHandle, UINT8 type); MiReturnCode setFtpCfgReqA(UINT32 atHandle, struct ftpSetOpenReq *reqParas); MiReturnCode setFtpOpenReqA(UINT32 atHandle, struct ftpSetGenericReq *reqParas); MiReturnCode setFtpCloseReqA(UINT32 atHandle); MiReturnCode setFtpCwdReqA(UINT32 atHandle, struct ftpSetGenericReq *reqParas); MiReturnCode setFtpPwdReqA(UINT32 atHandle); MiReturnCode setFtpGetFileReqA(UINT32 atHandle, struct ftpSetFileGetReq *reqParas); MiReturnCode setFtpSizeReqA(UINT32 atHandle, struct ftpSetGenericReq *reqParas); MiReturnCode setFtpMkdirReqA(UINT32 atHandle, struct ftpSetGenericReq *reqParas); MiReturnCode setFtpDelReqA(UINT32 atHandle, struct ftpSetGenericReq *reqParas); MiReturnCode setFtpRmdirReqA(UINT32 atHandle, struct ftpSetGenericReq *reqParas); MiReturnCode setFtpMdtmReqA(UINT32 atHandle, struct ftpSetGenericReq *reqParas); MiReturnCode setFtpRenameReqA(UINT32 atHandle, struct ftpSetGenericReq *reqParas); MiReturnCode setFtpListReqA(UINT32 atHandle, struct ftpSetListReq *reqParas); MiReturnCode setFtpStatReqA(UINT32 atHandle); MiReturnCode setFtpPutFileReqA(UINT32 atHandle, struct ftpSetGetPutReq *reqParas); MiReturnCode setFtpLenReqA(UINT32 atHandle); void HexStrToByte(const char *src, char *dst,int src_len); INT32 cmuxClearDataCtrl(UINT32 chanIndex); struct pdpIpInfo * cmuxGetPdpInfo(UINT32 chanIndex); INT32 cmuxGetPdpIpStr(UINT32 chanIndex, CHAR *ip); #endif