/*************************************************************************** Name : NCUPARMS.C Comment : Functions: (see Prototypes just below) Copyright (c) Microsoft Corp. 1991, 1992, 1993 Revision Log Date Name Description -------- ----- --------------------------------------------------------- ***************************************************************************/ #include "prep.h" #include "modemint.h" #include "fcomint.h" #include "fdebug.h" ///RSL #include "glbproto.h" #define faxTlog(m) DEBUGMSG(ZONE_MD, m) #define FILEID FILEID_NCUPARMS void iNCUParamsReset(PThrdGlbl pTG) { _fmemset(&(pTG->NCUParams), 0, sizeof(NCUPARAMS)); pTG->NCUParams.uSize = sizeof(pTG->NCUParams); // These are used to set S regs etc. // -1 means leave modem at default pTG->NCUParams.DialtoneTimeout = -1; pTG->NCUParams.DialPauseTime = pTG->NCUParams.FlashTime = -1; pTG->NCUParams.DialBlind = -1; pTG->NCUParams.SpeakerVolume = pTG->NCUParams.SpeakerControl= -1; pTG->NCUParams.SpeakerRing = -1; // should be used in answer pTG->NCUParams.RingsBeforeAnswer = 0; // should be used in Dial pTG->NCUParams.AnswerTimeout = 60; // used in Dial pTG->NCUParams.chDialModifier = 'T'; pTG->fNCUParamsChanged =FALSE; // to indicate the we need to reset params } void FComInitGlobals(PThrdGlbl pTG) { _fmemset(&pTG->FComStatus, 0, sizeof(FCOM_STATUS)); _fmemset(&pTG->FComModem, 0, sizeof(FCOM_MODEM)); pTG->fNCUAbort = 0; _fmemset(&pTG->Comm, 0, sizeof(pTG->Comm)); // +++ fComInit = 0; } BOOL NCUSetParams(PThrdGlbl pTG, USHORT uLine, LPNCUPARAMS lpNCUParams) { BG_CHK(lpNCUParams); // BG_CHK(DDI.fLineInUse == 1); // (MyDebugPrint(pTG, "In NCUSetParams fModemInit=%d fModemOpen=%d fLineInUse=%d\r\n", FComStatus.fModemInit, DDI.fModemOpen, DDI.fLineInUse)); // BG_CHK(FComStatus.fModemInit); // Copy params into our local NCUparams struct pTG->NCUParams = *lpNCUParams; /*** all will be set on next ReInit. Since all have to ***************** do with dial that's soon enough *********************************** return iModemSetNCUParams( pTG->NCUParams.DialPauseTime, pTG->NCUParams.SpeakerControl, pTG->NCUParams.SpeakerVolume, pTG->NCUParams.DialBlind, pTG->NCUParams.SpeakerRing); ************************************************************************/ // ignoring DialtoneTimeout and AnswerTimeout because we have // problems with S7 and answering correctly (no answer vs voice etc) // also Pulse/Tone I think is being used correctly in Dial (C2 & C1) pTG->fNCUParamsChanged =TRUE; // to indicate the we need to reset params // next time we call/answer... // To-do // Use RingsBeforeAnswer in Class2Answer and Modem answer // and we have to set RingAloud--how? return TRUE; } BOOL ModemGetCaps(PThrdGlbl pTG, USHORT uModem, LPMODEMCAPS lpMdmCaps) { BG_CHK(lpMdmCaps); // BG_CHK(DDI.fModemOpen == 1); // (MyDebugPrint(pTG, "In ModemGetCaps fModemInit=%d fModemOpen=%d fLineInUse=%d\r\n", FComStatus.fModemInit, DDI.fModemOpen, DDI.fLineInUse)); BG_CHK(pTG->FComStatus.fModemInit); *lpMdmCaps = pTG->FComModem.CurrMdmCaps; return TRUE; } void NCUAbort(PThrdGlbl pTG, USHORT uLine, BOOL fEnable) { // BG_CHK(DDI.fLineInUse == 1); // (MyDebugPrint(pTG, "In NCUAbort fModemInit=%d fModemOpen=%d fLineInUse=%d\r\n", FComStatus.fModemInit, DDI.fModemOpen, DDI.fLineInUse)); BG_CHK(pTG->FComStatus.fModemInit || !fEnable); if(!fEnable) pTG->fNCUAbort = 0; else if(pTG->FComStatus.fInAnswer || pTG->FComStatus.fInDial) pTG->fNCUAbort = 2; else pTG->fNCUAbort = 1; return; }