00001 00046 #ifndef __LIB3195_BEEPCHANNEL_H_INCLUDED__ 00047 #define __LIB3195_BEEPCHANNEL_H_INCLUDED__ 1 00048 #include "sockets.h" 00049 #include "beepsession.h" 00050 00052 #define SBCHAN_INVALID_CHANNEL -1 00053 #define sbChanCHECKVALIDOBJECT(x) {assert((x) != NULL); assert((x)->OID == OIDsbChan); assert((x)->iState != sbChan_STATE_INVALID);} 00054 00059 enum sbChannelState_ 00060 { 00061 sbChan_STATE_INVALID = 0, 00062 sbChan_STATE_INITIALIZED, 00063 sbChan_STATE_OPEN, 00064 sbChan_STATE_AWAITING_CLOSE, 00065 sbChan_STATE_PENDING_CLOSE, 00066 sbChan_STATE_CLOSED, 00067 sbChan_STATE_BROKEN, 00068 sbChan_STATE_ERR_FREE_NEEDED 00069 }; 00070 typedef enum sbChannelState_ sbChannelState; 00071 00072 struct sbMesgObject; 00073 struct sbSessObject; 00074 struct sbChanObject 00078 { 00079 srObjID OID; 00080 unsigned uChanNum; 00081 unsigned uSeqno; 00082 unsigned uMsgno; 00083 unsigned uTXWin; 00084 unsigned uTXWinLeft; 00085 unsigned uRXWin; 00086 unsigned uRXWinLeft; 00087 sbSockObj* pSock; 00088 struct sbSessObject* pSess; 00089 sbChannelState iState; 00090 void *pProfInstance; 00091 struct sbProfObject *pProf; 00092 }; 00093 typedef struct sbChanObject sbChanObj; 00094 00095 #include "beepmessage.h" 00096 00114 srRetVal sbChanSetChanno(sbChanObj *pThis, int iChanno); 00115 00120 sbChanObj* sbChanConstruct(struct sbSessObject* pSess); 00121 00133 srRetVal sbChanSendMesg(sbChanObj *pThis, struct sbMesgObject* pMesg, char* pszCmd); 00134 00148 srRetVal sbChanActualSendFram(sbChanObj *pThis, struct sbFramObject* pFram); 00149 00150 00155 void sbChanDestroy(sbChanObj* pThis); 00156 00162 srRetVal sbChanUpdateChannelState(sbChanObj* pThis, int iNewState); 00163 00177 srRetVal sbChanAssignProfile(sbChanObj *pThis, struct sbProfObject *pProf); 00178 00184 void sbChanAbort(sbChanObj* pThis); 00185 00193 srRetVal sbChanSendErrResponse(sbChanObj *pThis, unsigned uErrCode, char* pszErrMsg); 00194 00198 srRetVal sbChanSetAwaitingClose(sbChanObj* pThis); 00199 00207 srRetVal sbChanSendSEQ(sbChanObj *pThis, unsigned uAckno, unsigned uWindow); 00208 00213 srRetVal sbChanSendOK(sbChanObj*pThis, void (*OnFrameDestroy)(struct sbFramObject*), void* pUsr); 00214 00218 srRetVal sbChanSetChanClosed(sbChanObj* pThis); 00219 00220 #endif