/************************************************************************* module :[Check Lamp] function :[] return :[ OK 1: ランプエラー無し NG 0: ランプエラー ] common :[なし] comment :[ Must decide R0F value for black level!!!! ] condition :[なし] machine :[V53] language :[MSC] keyword :[DIPP] date :[1994/5/11] author :[S.Kawasaki] *************************************************************************/ UBYTE DIPP_STx_CheckLamp(void) { /* TBD R0F Value for Lamp Check */ DIPP_Reset(); /** DIPP-ASソフトリセット */ DIPP_InitialSet(); /** DIPP-AS初期設定 */ DIPP_SetBitDIPPST(IDP_BIT_ON); /** DIPP-AS読み取り開始 */ #if (PRO_ENERGY_SAVE == ENABLE) /* 2001/11/30 T.Takagi */ PC_24V_On(); #endif LampOn(); /** ランプオン */ wai_tsk(1); DIPP_SetBitPEAKE(IDP_BIT_ON); /** ピーク値検出回路を動作 */ wai_tsk(2); /** WCOM ONまで10mS(2ライン分)待ちます */ if((IdpInputByte(DIPP_SR_PORT)&DIPP_SR_FLEXG) == DIPP_SR_FLEXG) { /** ステータスレジスタをリード */ DIPP_SetBitPEAKE(IDP_BIT_OFF); /** ピーク値検出回路停止(ピーク値固定) */ DIPP_SetBitDIPPST(IDP_BIT_OFF); /** DIPP-AS読み取り終了 */ return(NG); } else { DIPP_SetBitPEAKE(IDP_BIT_OFF); /** ピーク値検出回路停止(ピーク値固定) */ DIPP_SetBitDIPPST(IDP_BIT_OFF); /** DIPP-AS読み取り終了 */ return(OK); } }
/*----------------------*/ void MDM_FactoryFuncRelaySet(void) { /* DPリレーON 1996/11/26 */ DP_RelayOn(); wai_tsk(1); S_RelayOn(); /* Relay Spike Niose For Switching(FRA DEU) 1996/11/26 */ AnalogSwitchRXA_Set(); CML_RelayOn(); wai_tsk(10); /* 100ms */ #if defined (KEISATSU) /* 警察FAX Added by SMuratec 李 2005/10/12 */ if ( !ModemRelaySetting() ){ /** 標準ラインに接続された場合 */ H_RelayOn(); } else { /** 拡張ラインに接続された場合 */ L_RelayOn(); } #else /* defined (KEISATSU) */ H_RelayOn(); L_RelayOn(); #endif /* defined (KEISATSU) */ S_RelayOff(); /* Add by TH92115 1994/08/29 */ /* スピーカーの設定 */ if (CHK_LineMonitor()) { MonitorSpeakerOn(); } }
/*----------------------------------------*/ void ATD_CheckStopTask(void) { MESSAGE_t msg; while(!SYS_FaxComStopSwitch()) { wai_tsk(20); } msg.Item = FROM_AUTODIAL; msg.Message = MSG_DETECT_STOP; snd_msg(mbxno.FCM_Task, &msg); wai_tsk(0xFFFF); }
/************************************************************************* module :[サービスファンクション用モデムソフトリセット処理] function :[ 1. ] return :[] common :[] condition :[] comment :[] date :[1994/05/06] author :[曽根岡拓] *************************************************************************/ void MDM_SoftResetModem(void) { /* ソフトリセット */ MDM_SetIO(POS_SFRES,ON); MDM_SetIO(POS_NEWC,ON); wai_tsk(400/10); }
WORD ListOpen(void) { #if (0) ** /* SAKAKI */ ** UWORD i, j; ** ** PRN_PrinterOpen(); ** ImageLineStartPoint = 16;/******16******/ ** for (i = 0; i < PRINT_IMAGE_BUF_LINE; i++) { ** for (j = 0; j < PRINT_IMAGE_BUF_SIZE; j++) { ** PRN_ImageBuffer1[i][j] = 0xff; ** } ** } ** PRN_StandbyToPrint(); ** while ((PRN_Control.Command == PRN_PAGECUT_REQ) || (PRN_Control.Command == PRN_FEED_IN_REQ)) { /* 記録紙カット引き戻しの終了を待つ */ ** wai_tsk(2); ** } ** PageStartLineB4WhiteLineSet(); ** PRN_Control.PrintMode = SYS_NORMAL; ** SetPrintModeParameterEveryPage(); ** PRN_Control.PrintSize = SYS_DOCUMENT_A4_SIZE; ** PRN_Control.PaperSize = SYS_A4_PAPER; ** SetPrintSizeParameterEveryPage(); ** /*1ページ開始*/ ** PRN_OnePageStart(); ** if (PRN_PrintHaltRequest() == NG) { ** ListClose(); ** }
/************************************************************************* module :[SCIのデータ転送パラメータの設定] function :[ ] return :[なし] common :[ ] condition :[ ] comment :[なし] machine :[SH7043] language :[SHC] keyword :[CL1] date :[1999/01/31] author :[平尾 英典] *************************************************************************/ void SciSetParameter(void) { ParityModeSet(); StopBitLengthSet(); ClkSelectAndBitRateRegSet(0); CharacterLengthSet(); wai_tsk(1); /* 1Bit期間経過 */ }
/************************************************************************* module :[SCIの初期化] function :[ ] return :[なし] common :[ ] condition :[ ] comment :[なし] machine :[SH7043] language :[SHC] keyword :[CL1] date :[1999/01/11] author :[平尾 英典] *************************************************************************/ void SciInitialize(void) { RsDriver.sci_scr = 0x00; Output(SCI_SCR1, RsDriver.sci_scr); /* TE,RE Clear 調歩同期、内部クロック */ ParityModeSet(); StopBitLengthSet(); ClkSelectAndBitRateRegSet(0); CharacterLengthSet(); wai_tsk(1); /* 1Bit期間経過 */ }
/************************************************************************* module :[高速ランプチェック] function :[ 1. ADFスキャナ送信1ページ目でのランプチェック 2. LampOn,DIPP_Reset,DIPP_InitialSetの後にcallする 3. 動作はIDP_NO1固定 ] return :[ TRUE 正常 FALSE 光源異常 ] common :[] condition :[ ランプの点灯とDIPPの初期化は必ず行っておくこと ] comment :[] machine :[SH7043] language :[SHC] keyword :[IDP] date :[1997/03/31] author :[竹内茂樹] *************************************************************************/ UBYTE DIPP_QuickCheckLamp( void ) { DIPP_SetBitDIPPST( IDP_BIT_ON ); /** DIPP-AS読み取り開始 */ wai_tsk( 2 ); /** WCOM ONまで100mS(2ライン分)待ちます */ DIPP_SetBitPEAKE( IDP_BIT_ON ); /** ピーク値検出回路を動作 */ wai_tsk( 2 ); /** WCOM ONまで10mS(2ライン分)待ちます */ if((IdpInputByte(DIPP_SR_PORT)&DIPP_SR_FLEXG) == DIPP_SR_FLEXG) { /** 光源異常 */ DIPP_SetBitPEAKE( IDP_BIT_OFF ); /** ピーク値検出回路停止 */ DIPP_SetBitDIPPST( IDP_BIT_OFF ); /** DIPP-AS読み取り終了 */ return( FALSE ); } else { DIPP_SetBitPEAKE( IDP_BIT_OFF ); /** ピーク値検出回路停止 */ DIPP_SetBitDIPPST( IDP_BIT_OFF ); /** DIPP-AS読み取り終了 */ return( TRUE ); } }
/************************************************************************* module :[ミラーを待機位置へ移動] function :[ 1. スキャナモーターをFBS側に切替える 2. ミラーをホームセンサ上へ指定スピードで移動する 3. モーターの起動を行う 4. モーターの停止等の制御は割込みで行う 5. 割込みからの移動の終了/エラーをイベントで待つ ] return :[ MIRROR_MOVE_OK 0 正常終了 MIRROR_MOVE_ERROR 1 エラーで終了 ] common :[] condition :[] comment :[ 引数 加速指定(加速する:TRUE/一定速:FALSE) ] machine :[SH7043] language :[MS-C(Ver.6.0)] keyword :[SCN] date :[1996/06/25] author :[竹内茂樹] *************************************************************************/ UBYTE MirrorMoveToReady( UBYTE is_speed_up) /* モーター加速指定 */ { /** 状態を初期化 */ SCN_MirrorMoveStatus = MIRROR_MOVE_OK; SCN_WatchEndSensorStatus = WATCH_ES_DISABLE; /** ミラーが既に待機位置(移動先)にあるなら、何もしない */ if (SCN_MirrorCarriageStatus == MIRROR_READY) { return (SCN_MirrorMoveStatus); } /** スキャナモーターをFBS側に切替える */ SCN_SetMotorDrive( SCN_FBS ); /** ホームセンサ上にミラーキャリッジがなければ、ホームセンサへ移動する */ if (!HS()) { SCN_MirrorCarriageStatus = MIRROR_MOVE_TO_HS; SCN_MirrorMotorPulseCount = 0; /* ミラー用のパルスカウンタを0クリア */ SCN_IsMirrorMoveEnd = FALSE; SCN_SetHS_ON_Int( SCN_ENABLE ); /* ホームセンサON割り込み許可 */ SCN_SetHS_OFF_Int( SCN_DISABLE ); /* ホームセンサOFF割り込み禁止 */ SCN_SetMotorClockwise( SCN_ENABLE ); /* モーター正転 */ SCN_StartMirror( is_speed_up ); /* 加速/一定速 でミラー起動 */ /** ミラー移動の終了を待つ */ CMN_DisableInterrupt(); if (!SCN_IsMirrorMoveEnd) { wai_evt( EVT_MIRROR_MOVE_END ); } CMN_EnableInterrupt(); /** スキャナモータの回転方向を変えるために待つ */ wai_tsk( SCN_MotorChangeInterval ); if (SCN_MirrorReadyPosition == READY_POSITION_ADF) { return(MirrorMoveToADF()); } else { return(SCN_MirrorMoveStatus); } } else { SCN_MirrorCarriageStatus = MIRROR_HS_ON; if (SCN_MirrorReadyPosition == READY_POSITION_ADF) { return(MirrorMoveToADF()); } else { return(SCN_MirrorMoveStatus); } } }
void MDM_FactoryStopCheck(void) { MESSAGE_t *msg; switch (SYS_FactoryFuncStatus) { case TEST_TONE: MDM_SingleToneOff(); break; case TEST_FSK: SYS_PixStopFlag = 1; rcv_msg(mbxno.FIP, &msg); if (tskno_MDM_FskTest != 0xFFFF) { del_tsk(&tskno_MDM_FskTest); } MDM_SetIO(POS_RTS,OFF); break; case TEST_G3: SYS_PixStopFlag = 1; rcv_msg(mbxno.FIP, &msg); if (tskno_MDM_PixTest != 0xFFFF) { del_tsk(&tskno_MDM_PixTest); } MDM_SetIO(POS_RTS,OFF); break; /* #if defined(POPLAR_F) */ #if (PRO_VOICE_ANSWER == ENABLE) && (PRO_MODEM == R288F) /* NTT音声応答 && ORANGE以外のモデム Modified by J.Kishida 2002/09/09 */ case TEST_VOICE: SelectMELorTX(); SYS_PixStopFlag = 1; rcv_msg(mbxno.FIP, &msg); if (tskno_MDM_VoiceTest != 0xFFFF) { del_tsk(&tskno_MDM_VoiceTest); } break; case TEST_VOICE2: StopSendingMelodyToLine(); break; #else case TEST_VOICE: StopSendingMelodyToLine(); break; #endif case TEST_V34: MDM_SetIO(POS_DTR,OFF); MDM_SetIO(POS_L3ACT,OFF); MDM_SetIO(POS_EXL3,OFF); MDM_SetIO(POS_NEWC,ON); break; default: break; } wai_tsk(10); /* 100ms */ }
/************************************************************************* module :[ミラーをADF読取り位置へ移動] function :[ 1. スキャナモーターをFBS側に切替える 2. ADF読取り位置にミラーを一定速で移動する 3. モーターの起動を行う 4. モーターの停止等の制御は割込みで行う 5. 割込みからの移動の終了/エラーをイベントで待つ ] return :[ MIRROR_MOVE_OK 0 正常終了 MIRROR_MOVE_ERROR 1 エラーで終了 MIRROR_MOVE_LAMP_ERROR 2 ランプ異常で終了 ] common :[] condition :[] comment :[] machine :[SH7043] language :[MS-C(Ver.6.0)] keyword :[SCN] date :[1996/06/25] author :[竹内茂樹] *************************************************************************/ UBYTE MirrorMoveToADF( void ) { /** 状態を初期化 */ SCN_MirrorMoveStatus = MIRROR_MOVE_OK; SCN_WatchEndSensorStatus = WATCH_ES_DISABLE; /** ミラーが既にADF読み取り位置(移動先)にあるなら、何もしない */ if (SCN_MirrorCarriageStatus == MIRROR_ADF_READY) { SYS_IsMirrorScanReady = TRUE; return (SCN_MirrorMoveStatus); } SYS_IsMirrorScanReady = FALSE; /** スキャナモーターをFBS側に切替える (ミラーを動かすため) */ SCN_SetMotorDrive( SCN_FBS ); /** ミラーキャリッジを「ADF読取り位置への移動」にする */ SCN_MirrorCarriageStatus = MIRROR_MOVE_TO_ADF; /** ミラー用のパルスカウンタを0クリア */ SCN_MirrorMotorPulseCount = 0; /** ES〜ADFステップ数をセット */ SCN_StepFromES_Off = (SYB_MachineParameter[11] + CHK_UNI_ADF_AdjustStep()) * 10; /** ホームセンサON割込み/OFF割込み共に禁止する ** エンドセンサのONを監視する ** 往動方向、スルーアップでモーター起動 */ SCN_IsMirrorMoveEnd = FALSE; SCN_SetHS_ON_Int( SCN_DISABLE ); SCN_SetHS_OFF_Int( SCN_DISABLE ); SCN_SetScanStartInt( SCN_DISABLE ); SCN_SetScanEndInt( SCN_DISABLE ); SCN_WatchEndSensorStatus = WATCH_ES_ON; SCN_SetMotorClockwise( SCN_DISABLE ); /* モーター逆転 */ SCN_StartMirror( TRUE ); /** ミラー移動の終了を待つ */ CMN_DisableInterrupt(); if (!SCN_IsMirrorMoveEnd) { wai_evt( EVT_MIRROR_MOVE_END ); } CMN_EnableInterrupt(); /** スキャナモータの回転方向を変えるために待つ */ wai_tsk( SCN_MotorChangeInterval ); return (SCN_MirrorMoveStatus); }
/************************************************************* * BY: M.HARADA * DATE: Mon 15 Feb. 1993 * ROUTINE NAME: FaxTimer() * DESCRIPTION: 通信用タイマー * RETURNS: 無し * CALLED BY: 色々 * 変更履歴: 1994/12/6 M.H. 引き数(set_timer)が0のときは、タイムカウントしないように変更。 ***************************************************************/ void FaxTimer( UWORD set_timer ) { UWORD start_timer; UWORD timer; set_timer = set_timer / 10; start_timer = SYS_GeneralTimer; timer = ( UWORD )1; if(set_timer != 0){ while(( UWORD )( SYS_GeneralTimer - start_timer ) < ( set_timer )){ wai_tsk(timer); } } }
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ module :[疑似ベル/呼出ブザーON] function :[ 1.疑似ベル/呼出ブザーのON期間をつくる ] return :[ なし ] common :[ ] condition :[] comment :[] machine :[V53,RISC(SH),H8/300] language :[MS-C(Ver.6.0),H8/300(日立マイコン)] keyword :[NCU] date :[1995/12/27] author :[坂本直史] +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ void GRB_RingAndBellOn(void) { /*-------------------------------------------------*/ /** 疑似ベルOFF・呼出ブザーON(16Hz変調) */ /*-------------------------------------------------*/ /* ICHOUの仕様に合わせる JPN仕様のカプラはFAX側のブザーならさない 1997/09/08 By T.Yamaguchi */ #if (PRO_NCU_TYPE == ANZU_USA_TYPE) || (PRO_NCU_TYPE == ANZU_GBR_TYPE) BuzzerOnSetting(SYS_SPK_OUT_FAKERINGER); #if defined (HINOKI) || defined (HINOKI2) || defined(HINOKI3) || defined(SATSUKI2) || defined(STOCKHM2) /* HINOKI2 2001/11/12 T.Takagi */ bell_on(); /* by H.Hirao 1999/01/30 */ #else SCN_SetBuzzer(SCN_ENABLE); #endif #endif GenerateRingKeyOff(); wai_tsk(3); /*-------------------------------------------------*/ /** 疑似ベルON・呼出ブザーOFF(16Hz変調) */ /*-------------------------------------------------*/ /*--------------------------*/ /** 呼出ブザー周波数の設定 */ /*--------------------------*/ /* ICHOUの仕様に合わせる JPN仕様のカプラはFAX側のブザーならさない 1997/09/08 By T.Yamaguchi */ #if (PRO_NCU_TYPE == ANZU_USA_TYPE) || (PRO_NCU_TYPE == ANZU_GBR_TYPE) SCN_SetBuzzerFrequency(VOICE_ALARM_FREQ); BuzzerOffSetting(SYS_SPK_OUT_FAKERINGER); #if defined (HINOKI) || defined (HINOKI2) || defined(HINOKI3) || defined(SATSUKI2) || defined(STOCKHM2) /* HINOKI2 2001/11/12 T.Takagi */ bell_off(); /* by H.Hirao 1999/01/30 */ #else SCN_SetBuzzer(SCN_DISABLE); #endif #endif GenerateRingKeyOn(); wai_tsk(3); }
/************************************************************************* module :[音声送出タスク] function :[ 1. ] return :[] common :[] condition :[] comment :[] date :[1999/10/14] author :[村田] *************************************************************************/ void MDM_VoiceTxTask(void) { MESSAGE_t Modem; UWORD phase; UWORD timer; UWORD ret; phase = 1; ret = 1; /* リセット */ MDM_AnswerLSI_Initialize(); wai_tsk(100); SelectVOL(); while (1) { CMN_SetFraseAnswerLSI((UWORD)phase); wai_tsk(2); if (MDM_WaitVoiceNAR((UWORD)10) == 0) { break; } CMN_AnswerLSIOn(); MDM_WaitST(); CMN_AnswerLSIOff(); if (MDM_WaitVoiceNAR((UWORD)10) == 0) { /* 鳴り始め*/ break; } wai_tsk(2); CMN_SetFraseAnswerLSI((UWORD)6); /* 無音セット */ wai_tsk(2); CMN_AnswerLSIOn(); MDM_WaitST(); CMN_AnswerLSIOff(); if (MDM_WaitVoiceNAR((UWORD)1500) == 0) { /* 無音鳴り始め */ break; } wai_tsk(100); phase++; if (phase >= 6) { phase = 1; } } SelectMELorTX(); MDM_AnswerLSI_Initialize(); Modem.Message = MSG_MODEM_STOP; snd_msg(mbxno.FIP, &Modem); /** オペレーションタスクへメッセージ送信 */ wai_tsk(0xffff); /** 無限タスクウェイト */ }
mrb_value mrb_ssp_delay2_delay(mrb_state *mrb, mrb_value self) { ER retval; mrb_int tout; mrb_value argv; mrb_get_args(mrb, "o", &argv); tout = mrb_fixnum(argv); #if 0 printf("mrb_ssp_delay2 tout = %d\n",tout); #endif // int ai = mrb_gc_arena_save(mrb); retval = wai_tsk(); // mrb_gc_arena_restore(mrb, ai); return argv; }
/************************************************************************* module :[ミラーをFBS待機位置へ移動] function :[ 1. スキャナモーターをFBS側に切替える 2. FBS読取り待機位置(HS上)にミラーを高速で移動する 3. モーターの起動を行う 4. モーターの停止等の制御は割込みで行う 5. 割込みからの移動の終了/エラーをイベントで待つ ] return :[ MIRROR_MOVE_OK 0 正常終了 MIRROR_MOVE_ERROR 1 エラーで終了 ] common :[] condition :[] comment :[ FBS読取り用のランプチェックを移動中に行うために ここでランプを点灯しピーク値検出回路を動作させる 所定位置に来た時のモーター割り込み内でDIPPの 光源異常レジスタを読み込む ] machine :[SH7043] language :[MS-C(Ver.6.0)] keyword :[SCN] date :[1996/06/25] author :[竹内茂樹] *************************************************************************/ UBYTE MirrorMoveToFBS( void ) { /** 状態を初期化 */ SCN_MirrorMoveStatus = MIRROR_MOVE_OK; SCN_WatchEndSensorStatus = WATCH_ES_ON; /* ミラーが既にFBS読み取り待機位置(移動先)にあるなら、何もしない */ /* 静電気などで途中で止まった時のためにホームセンサを直接見る 1997/08/21 s.takeuchi */ if ((SCN_MirrorCarriageStatus == MIRROR_HS_ON) && HS()) { /* 1997/08/21 s.takeuchi */ SYS_IsMirrorScanReady = TRUE; return (SCN_MirrorMoveStatus); } SYS_IsMirrorScanReady = FALSE; /** スキャナモーターをFBS側に切替える */ SCN_SetMotorDrive( SCN_FBS ); SCN_MirrorCarriageStatus = MIRROR_MOVE_TO_HS; SCN_MirrorMotorPulseCount = 0; /* ミラー用のパルスカウンタを0クリア */ SCN_IsMirrorMoveEnd = FALSE; SCN_SetHS_ON_Int( SCN_ENABLE ); /* ホームセンサON割り込み許可 */ SCN_SetHS_OFF_Int( SCN_DISABLE ); /* ホームセンサOFF割り込み禁止 */ SCN_SetMotorClockwise( SCN_ENABLE ); /* モーター正転 */ /* 大分のFBS ASSY検査でHS側でミラーがぶつかるため低速に変更 ** T.Nose 1998/02/20 */ SCN_StartMirror( FALSE ); /** ミラー移動の終了を待つ */ CMN_DisableInterrupt(); if (!SCN_IsMirrorMoveEnd) { wai_evt( EVT_MIRROR_MOVE_END ); } CMN_EnableInterrupt(); /** スキャナモータの回転方向を変えるために待つ */ wai_tsk( SCN_MotorChangeInterval ); return (SCN_MirrorMoveStatus); }
UBYTE MDM_WaitVoiceNAR(UWORD timer) { UWORD count; count = 0; while (1) { if (NAR()) { return (1); } if (SYS_PixStopFlag == 1) { return (0); } wai_tsk(1); count++; if (count > timer) { return (1); } } }
/* * for Copy */ void OpenPrtImageBuf4Copy(void) { IsPrintFinish = FALSE; #if (0) /* 1998/12/15 by T.Soneoka */ ** InzPrtImageBuf(); #endif #if (0) /* 1998/12/15 by T.Soneoka */ ** while (Paper.Position != PAPER_POS_PRINTING) { #else while (!EnablePrintDataMake) {/* プリントデータ作成開始許可になるまで待ちます 1998/12/15 by T.Soneoka */ #endif if (PrinterError != 0 || PrinterStopProcess) { /* Error またはストップならば抜ける */ break; } wai_tsk(10); } } void ClosePrtImageBuf4Copy(void) { UBYTE nextpage_check; nextpage_check = FALSE; if (PrinterUseMode == PRINT_SCOPY) { if (IsDocument) { nextpage_check = TRUE; } IsPrintFinish = TRUE; #if defined(SATSUKI2) /* 壁掛け設定用に追加 by Y.Kano 2003/10/08 */ if (CHK_WallHangSetting()) { /** 壁掛け設定 */ /* Add by Y.kano 2003/10/08 */ do { if (PrinterError != 0 || PrinterStopProcess) { /* Error またはストップならば抜ける */ break; } else { wai_tsk(1); } /* リアルタイムコピー時は、ここで次の原稿があるかないか見るようにします 1999/1/19 by T.Soneoka */ if (nextpage_check) { if (QueryDs1On()) { if (NoNextDocument == TRUE) { IsDocument = FALSE; } else { IsDocument = TRUE; } } else { IsDocument = FALSE; } } } while ((Paper.Position == PAPER_POS_PRINTING) || (Paper.Position == PAPER_POS_MOVE_TO_CUT)); } else { do { if (PrinterError != 0 || PrinterStopProcess) { /* Error またはストップならば抜ける */ break; } else { wai_tsk(1); } /* リアルタイムコピー時は、ここで次の原稿があるかないか見るようにします 1999/1/19 by T.Soneoka */ if (nextpage_check) { if (QueryDs1On()) { if (NoNextDocument == TRUE) { IsDocument = FALSE; } else { IsDocument = TRUE; } } else { IsDocument = FALSE; } } } while ((Paper.Position == PAPER_POS_PRINTING) || (Paper.Position == PAPER_POS_MOVE_TO_CUT) || (Paper.Position == PAPER_POS_MOVE_TO_PS2)); } #else /* SATSUKI2以外 */ do { if (PrinterError != 0 || PrinterStopProcess) { /* Error またはストップならば抜ける */ break; } else { wai_tsk(1); } /* リアルタイムコピー時は、ここで次の原稿があるかないか見るようにします 1999/1/19 by T.Soneoka */ if (nextpage_check) { #if (0) ** /* 仕様変更 ** ** 読み取り中において、DS2がOFFした時点でDS1もOFFしていれば、今読んだ原稿が ** ** 最終原稿であるという風に変更 ** ** by O.kimoto 1999/03/08 ** */ ** if (QueryDs1On()) { ** IsDocument = TRUE; ** } else { ** IsDocument = FALSE; ** } #else if (QueryDs1On()) { if (NoNextDocument == TRUE) { IsDocument = FALSE; } else { IsDocument = TRUE; } } else { IsDocument = FALSE; } #endif } } while ((Paper.Position == PAPER_POS_PRINTING) || (Paper.Position == PAPER_POS_MOVE_TO_CUT) || (Paper.Position == PAPER_POS_MOVE_TO_PS2)); #endif /* End of defined(SATSUKI2) */ /* Endmark3 ** エンドマーク検出時に、1ページ余分に排出されるので、ここで、次原稿無しに強制的にします。 ** by O.Kimoto 1999/02/19 */ if (EndMarkDetect == TRUE) { IsDocument = FALSE; } } else { if (Paper.Phase == PAPER_PHASE_PRINT) {
void FaxcomRelayControl(void) #endif { /* モデム初期設定 */ #if (PRO_MODEM == ORANGE3) FilterRXA_Set(); AnalogSwitchRXA_Set(); #endif #if (PRO_MODEM == R288F) /* POPLAR_H 搭載の R288F のアナログ入力は、モデム基盤上の ** 外部回路で TONE/RXA を切り替える。 ** H.Kubo 1997/11/12 */ AnalogSwitchRXA_Set(); #endif #if defined(GBR) /* 受信完了アラーム鳴動停止処理追加 1996/08/14 Eguchi */ if (SYS_AudibleAlarmStatus & 0x02) { /** 受信完了アラーム鳴動中 */ SYS_AudibleAlarmStatus &= ~0x01; /** 受信完了アラーム鳴動要求クリア */ } #endif #if (PRO_NCU_TYPE == ANZU_GBR_TYPE ) /* 1996/07/08 By N.Sakamoto */ DP_RelayOn(); wai_tsk(1); #endif #if defined(FRA) || defined(DEU) || defined(EC1) || defined(EUR) /* by M.HARADA '96/11/14 */ /* 欧州仕様追加 by M.H 1999/09/15 */ S_RelayOn(); wai_tsk(1); /* 追加 M.H 98/05/06 */ #endif #if (PRO_LINENUMBER == TWICE_LINE) /* 疑似2回線仕様 by T.Soneoka 1997/11/20 */ if (SYS_InternalLineNumber == SYS_STD_LINE_COM) { /** 標準ラインにて送信時 */ #if defined (KEISATSU) /* 警察FAX Added by SMuratec 李 2005/10/10 */ SYS_RingCounter = 0; #endif /* defined (KEISATSU) */ ModemRelay_Off(); /** モデムリレーOFF */ } else { /** 拡張ラインにて送信時 */ #if defined (KEISATSU) /* 警察FAX Added by SMuratec 李 2005/10/10 */ SYS_RingCounterExt = 0; #endif /* defined (KEISATSU) */ ModemRelay_On(); /** モデムリレーON */ } #endif #if defined(JPN) /* RDC200400326 By O.Oshima 2004/09/27 */ if (FaxComTXorRX_Sign != TX_COM_MODE) { if (!(CML_RelaySetting())) { S_RelayOn(); } } #endif CML_RelayOn(); if (CHK_LineMonitor() || CHK_UNI_UntilReceiveDISLineON()) { MonitorSpeakerOn(); /* モニタスピーカーON CMLと同時にONする様に変更 95.12.07 t.yamaguchi */ } #if defined(JPN) /* RDC200400326 By O.Oshima 2004/09/27 */ if (FaxComTXorRX_Sign != TX_COM_MODE) { if (S_RelaySetting()) { wai_tsk(CHK_S_RelayOffTime()/10); } } #endif #if defined(FRA) || defined(DEU) || defined(EC1) || defined(EUR) /* by M.HARADA '96/11/14 */ /* 欧州仕様追加 by M.H 1999/09/15 */ #else wai_tsk(10); /* 100ms */ #endif #if (PRO_NCU_TYPE == ANZU_USA_TYPE ) || (PRO_NCU_TYPE == ANZU_GBR_TYPE ) H_RelayOn(); L_RelayOn(); /* ANZUのカプラにはLリレーはない 95.12.07 t.yamaguchi */ #if defined(FRA) || defined(DEU) || defined(EC1) || defined(EUR) /* by M.HARADA '96/11/14 */ /* 欧州仕様追加 by M.H 1999/09/15 */ wai_tsk(1); #endif S_RelayOff(); /* Add by TH92115 1994/08/29 */ #endif #if (PRO_NCU_TYPE == POPLAR_TYPE) || (PRO_NCU_TYPE == SAKAKI_TYPE) || (PRO_NCU_TYPE == HINOKI_TYPE) #if (PRO_LINENUMBER == TWICE_LINE) /* 疑似2回線仕様 by T.Soneoka 1997/11/20 */ if (SYS_InternalLineNumber == SYS_STD_LINE_COM) { /** 標準ラインにて送信時 */ if (!CHK_Phone2ExtLineOn()) { /** PHONE2リレー設定が標準ラインの場合 */ H_RelayOn(); /** HリレーON */ L_RelayOn(); /** LリレーON */ } else { H_RelayOn(); /** HリレーON */ /** Lリレー触りません */ } } else { /** 拡張ラインにて交信時 */ if (!CHK_Phone2ExtLineOn()) { /** PHONE2リレー設定が標準ラインの場合 */ /** H、Lリレー触りません */ } else { /** Hリレー触りません */ L_RelayOn(); /** LリレーON */ } } #else H_RelayOn(); L_RelayOn(); #endif S_RelayOff(); T_RelayOff(); /* ICHOU変更 送信時、TELから聞こえるスキャナモータ音を消すため by T.Soneoka 1997/05/07 */ #if (PRO_LINENUMBER == TWICE_LINE) /* 疑似2回線仕様 by T.Soneoka 1998/05/18 */ CONT_24V_Off(); #else CONT_24V_On();/*CONT_24V_Off();疑似回線電圧0V By Y.Suzuki 1998/05/14*/ #endif #if defined (HINOKI2) || defined(SATSUKI2) || defined(STOCKHM2) || defined(HINOKI3) /* ** HINOKI2でメモリ送信時、スキャン終了24VOff→ここで24VOn→メインで24VOff ** となり、リレーを引く音が3回聞こえてしまう。 ** HINOKI2ではNCUに常時24V供給されているので、ここで24VOnする必要はない ** 2002/02/05 T.Takagi */ #else PC_24V_On(); #endif /* end of (defined HINOKI2) */ #endif /* end of (PRO_LINENUMBER == TWICE_LINE) */ #if (PRO_MODEM == R288F) /* Added by H.Kubo 1997/08/04 */ /* test */ if (SLT_DEBUG) { UWORD cnt; UWORD timer; cnt = 0; timer = SYS_GeneralTimer; MDM_SetIO(POS_DTR, OFF); MDM_SetIO(POS_DATA, OFF); MDM_SetIO(POS_RTH, RTH_LOWEST); MDM_SetIO(POS_NEWC, ON); while (1) { wai_tsk(1); if ((UWORD)(SYS_GeneralTimer - timer) > 500) { /*cast by M.Kotani 97/10/08*/ break; } if (MDM_GetIO(POS_FED)) { cnt++; if (cnt > 10) { timer = SYS_GeneralTimer; cnt = 0; } } else { cnt = 0; } } } /* end test */ #endif /* (PRO_MODEM == R288F) */ }
/* * Name: Document Store Task * Create: Mon Dec 29 15:29:01 1997 by ishiyama * Synopsis: * #include "scn_task.h" * void DocStorTask(void); * Description: * 原稿蓄積タスク * コピーの場合は,1スタックで原稿読取り幅を変えない仕様 * 送信の場合は、ページごとに変える * Return Value: * void * Change Log: */ void DocStoreTask(void) { MESSAGE_t StoreTaskMsg; /* 送信メッセージ用エリア */ MESSAGE_t *RcvMessage; /* 受信メッセージ用エリア */ BOOL PageLoop; /* 1Page 読取り処理継続 TRUE:継続,FALSE:中断 */ tskno_SCN_WatchDocFeedTask = 0xffff; tskno_SCN_ScanPage = 0xffff; tskno_SCN_StorePage = 0xffff; tskno_SCN_DocOutTask = 0xffff; tskno_SCN_DummyTask = 0xffff; /* エンコードタスクからのイベント待ちのタスク、リスケジューラを走らせるため 1999/03/16 by T.Soneoka */ SYS_MachineStatus[SYS_STOP_SWITCH_STATUS] &= ~(SYS_STOP_DOC_STORE); /** 原稿蓄積の停止要求をクリア */ SYS_DualRestrictionStatus &= ~0x04; /* 原稿蓄積中断中解除 1999/01/21 by T.Soneoka */ SYS_StorePause = TRUE; /* 表示用 1999/1/14 by T.Soneoka */ ScannerMode = SCANNER_DOC_SCAN_MODE; OpenScanner(); /* 読取りのための初期設定 */ ExecutePushStamp = FALSE; #if (PRO_STAMP == ENABLE) SetStampExec(); #endif IniMemWriteParameter(); /* 画像メモリのオープンパラメータをセットします */ PageLoop = QueryDs1On(); if (!PageLoop) { /* 先頭ページの読取り開始時に原稿が抜かれていた場合は繰込み不良で終了する */ StoreTaskMsg.Message = MSG_DOCSTORE_FEED_ERROR; } while (PageLoop) { /* Page Loop */ /* ** 受信中、原稿蓄積中をデュアル制限のため排他制御します added by H.Hirao 1998/12/26 */ while (1) { CMN_DisableInterrupt(); if (SYS_MachineStatus[SYS_COVER_STATUS] & SYS_COVER_SCANNER_OPEN) { CMN_EnableInterrupt(); StoreTaskMsg.Item = FROM_DOCSTORE; #if (0) ** /* D86-016 メインへ送るメッセージ間違いBy O.Kimoto 1999/02/08 */ ** StoreTaskMsg.Message = MSG_SCN_DOCSTORE_TOP_COVER_OPEN; #else StoreTaskMsg.Message = MSG_SCN_DOCSTORE_DOC_ERROR; #endif snd_msg(mbxno.MAN_Task, &StoreTaskMsg); rcv_msg(mbxno.SCN_Task, &SCN_Msg); wai_tsk(0xffff); } if (SYS_DocumentStoreStopSwitch()) { CMN_EnableInterrupt(); StoreTaskMsg.Item = FROM_DOCSTORE; StoreTaskMsg.Message = MSG_SCN_DOCSTORE_STOPSW_ON; /* ** スキャンクローズで原稿排出中は回線引きっぱなしになる不具合 ** 1999/02/01 by T.Soneoka */ #if (0) ** /* 原稿排出処理 */ ** if (SCN_Close((UBYTE)0) != SCN_DOC_EXIT_OK) { ** StoreTaskMsg.Message = MSG_SCN_DOCSTORE_DOC_ERROR; ** } #else /* 原稿排出処理 */ if (SCN_Close((UBYTE)FROM_DOCSTORE) != SCN_DOC_EXIT_OK) { StoreTaskMsg.Message = MSG_SCN_DOCSTORE_DOC_ERROR; } #endif snd_msg(mbxno.MAN_Task, &StoreTaskMsg); rcv_msg(mbxno.SCN_Task, &SCN_Msg); wai_tsk(0xffff); } /* if (((SYS_DualRestrictionStatus & 0x01) == 0x01) || (SYS_MachineStatus[SYS_RESOURCE_STATUS] & SYS_PRE_LINE_BUSY)) { @* 受信中 */ #if (PRO_CLASS1 == ENABLE) && (PRO_RS_INTERNAL == ENABLE) /* by H.Hirao 1999/03/03 */ /* CL1_RestrictionStatusResetTimer added by H.Hirao 1999/05/12 */ if (((SYS_DualRestrictionStatus & 0x01) == 0x01) || (CL1_DualRestrictionStatus & CL1_CLASS1_IN_USE) || SYS_CalledRequestForDocStore || (SYS_CL1_Status & (CL1_CALLED | CL1_FNET_CALLED | CL1_DIALIN_CALLED | CL1_RECEIVE | CL1_SEND | CL1_LOCALSCAN | CL1_LOCALPRINT | CL1_AUTOINIT)) || CL1_RestrictionStatusResetTimer) { #else if (((SYS_DualRestrictionStatus & 0x01) == 0x01) || SYS_CalledRequestForDocStore) { /* 受信中 または 原稿蓄積中にCI検出 changed by H.hirao 1998/12/28 */ #endif #if (PRO_CLASS1 == ENABLE) && (PRO_RS_INTERNAL == ENABLE) /* ローカルスキャン原稿は、待ちあわせしない by H.Hirao 1999/05/12 */ if (SCN_StoreData.Item == SYS_MEM_CLASS1_TX_FILE) { CL1_DualRestrictionStatus |= CL1_SCANNER_IN_USE; CMN_EnableInterrupt(); break; } #endif /* ** DUAL制限変更のため ** 強制メモリ受信以外のときは、スキャナを停止処理をいれます ** 1999/02/18 by T.Soneoka */ #if (0) ** SYS_DualRestrictionStatus |= 0x04; /* 原稿蓄積中断中セット 1999/01/21 by T.Soneoka */ #else if ((CHK_UNI_V17ReceiveType() != V17_MRX_TO_MRX) || (CHK_UNI_V34ReceiveType() != V34_MRX_TO_MRX)) { SYS_DualRestrictionStatus |= 0x04; /* 原稿蓄積中断中セット 1999/01/21 by T.Soneoka */ } #endif CMN_EnableInterrupt(); wai_tsk(100); } else { /* ** DUAL制限変更のため ** 強制メモリ受信以外のときは、スキャナを停止処理をいれます ** 1999/02/18 by T.Soneoka */ #if (0) ** SYS_DualRestrictionStatus |= 0x02; /* 原稿蓄積中セット */ #else if ((CHK_UNI_V17ReceiveType() != V17_MRX_TO_MRX) || (CHK_UNI_V34ReceiveType() != V34_MRX_TO_MRX)) { SYS_DualRestrictionStatus |= 0x02; /* 原稿蓄積中セット */ } #endif #if (PRO_CLASS1 == ENABLE) && (PRO_RS_INTERNAL == ENABLE) CL1_DualRestrictionStatus |= CL1_SCANNER_IN_USE; /* スキャン中セット added by H.Hirao 1999/03/04 */ #endif CMN_EnableInterrupt(); break; } } SYS_DualRestrictionStatus &= ~0x04; /* 原稿蓄積中断中解除 1999/01/21 by T.Soneoka */ PageLoop = FALSE; /* default 設定 */ #if (PRO_STAMP == ENABLE) EnablePushStampEvent = TRUE; /* 済みスタンプ押下イベント許可フラグ初期化 */ #endif /* * コピーの読み取りではADFの1スタックで原稿サイズを変えないため、 * コピーの場合は先頭ページの場合だけ、読取り原稿サイズをセットする * その他の場合は、毎ページ読取り原稿サイズをセットする */ if (SYS_DocumentStoreItem == SYS_MEM_MULTI_COPY_FILE) { if (SYS_DocumentStorePage == 1) { SYS_DocumentScanSize = CMN_GetDocumentScanSize(); } } else { SYS_DocumentScanSize = CMN_GetDocumentScanSize(); } SetScanPageAttribute(CurrentPage); /* 現在の Document の属性を設定 */ SCN_StoreData.Code = CurrentPage->Code; SCN_StoreData.Mode = CurrentPage->Mode; /* ** メモリコピー、B4−>A4蓄積処理追加 ** 1999/02/17 by T.Soneoka */ if ((!CHK_UNI_ReductionPrint()) && (SYS_DocumentStoreItem == SYS_MEM_MULTI_COPY_FILE)) { if (SYS_DocumentStorePage == 1) { if (QueryReduction() == REDUCTION_B4_A4) { SCN_StoreData.Size = SYS_DOCUMENT_A4_SIZE; } else { SCN_StoreData.Size = CurrentPage->Size; } } #if (PRO_CLASS1 == ENABLE) /* by H.Hirao 1999/03/23 */ } else if (QueryClass1Tx()) { if (QueryReduction() == REDUCTION_B4_A4) { SCN_StoreData.Size = SYS_DOCUMENT_A4_SIZE; } else { SCN_StoreData.Size = CurrentPage->Size; } #endif } else { SCN_StoreData.Size = CurrentPage->Size; } SleepDocStoreSubTask = FALSE; /* Sub Task を Sleep 状態にするフラグ */ cre_tsk(&tskno_SCN_WatchDocFeedTask, TSK_SCN_WATCHDOCUMENTFEEDTASK, &mbxno.SCN_Task); /* フィーダーエラー監視タスク起動 */ cre_tsk(&tskno_SCN_ScanPage, TSK_SCN_SCANPAGE, 0); /* 原稿読取りタスク起動 */ InzStorePageResource(); /* Task が途中で Delete されることを考慮 */ cre_tsk(&tskno_SCN_StorePage, TSK_SCN_STOREPAGE, 0);/* 原稿1ページ蓄積タスク起動 */ /* エンコードタスクからのイベント待ちをするタスク、リスケジューラを走らせるため 1999/03/16 by T.Soneoka */ cre_tsk(&tskno_SCN_DummyTask, TSK_SCN_DUMMYTASK, 0);/* 原稿1ページ蓄積タスク起動 */ SCN_Open(); /* 読取り開始 */ rcv_msg(mbxno.SCN_Task, &RcvMessage); /* 蓄積関連タスクの状況をメッセージで待ち受け */ CloseScanPage(); /* 読取り終了 */ if (tskno_SCN_StorePage != 0xffff) { del_tsk(&tskno_SCN_StorePage); /* 原稿1ページ蓄積タスク終了 */ } if (tskno_SCN_ScanPage != 0xffff) { del_tsk(&tskno_SCN_ScanPage); /* 原稿読取りタスク終了 */ } if (tskno_SCN_WatchDocFeedTask != 0xffff) { del_tsk(&tskno_SCN_WatchDocFeedTask); /* フィーダーエラー監視タスク終了 */ } /* エンコードタスクからのイベント待ちをするタスク、リスケジューラを走らせるため 1999/03/16 by T.Soneoka */ if (tskno_SCN_DummyTask != 0xffff) { del_tsk(&tskno_SCN_DummyTask); } CMN_DisableInterrupt(); SYS_DualRestrictionStatus &= ~(0x02); #if (PRO_CLASS1 == ENABLE) && (PRO_RS_INTERNAL == ENABLE) CL1_DualRestrictionStatus &= ~CL1_SCANNER_IN_USE; /* スキャン中リセット added by H.Hirao 1999/03/04 */ #endif CMN_EnableInterrupt(); /* * メッセージの変換と1ページの後処理 */ switch (RcvMessage->Message) { case MSG_DOCSTORE_MEMORY_OVER: /* メモリオーバー from StorePageTask */ StoreTaskMsg.Message = MSG_SCN_DOCSTORE_MEM_OVER; break; case MSG_DOCSTORE_STOPSW_ON: /* 停止要求 from StorePageTask */ StoreTaskMsg.Message = MSG_SCN_DOCSTORE_STOPSW_ON; break; case MSG_DOCSTORE_OK: /* 蓄積正常終了 from StorePageTask */ StoreTaskMsg.Message = MSG_SCN_DOCSTORE_OK; SYB_LifeMonitor.ScanCount++; /** ライフモニタの読取り枚数加算 */ #if (PRO_STAMP == ENABLE) PushStamp(); /* 済みスタンプ処理 and モータ再スタート処理 */ #endif if (QueryDs1On() /* DS1がOnで */ && (QueryDocPosition() != DOC_POS_NO_DOCUMENT)) { /* 次ページが登録されていれば */ /* 枚数指定されていて、且つ指定枚数以上の原稿がADF上にある場合の処理が抜けていた by O.Kimoto 1998/12/17 */ if (!CheckExceedDocPageNum()) { PageLoop = TRUE; /* 次ページ処理継続 */ IncPage(); /* ** 割り込みの中で次原稿の登録をここでやるように修正します ** 割り込みの中で次原稿登録(CurrentPageとNextPageのつけ替え)した場合、 ** 次原稿登録したが、現在の原稿読み取り終了時に、次原稿読み取りしない場合(原稿枚数指定)、 ** SCN_Close()で排出処理をコールすると、次原稿まで排出されてしまう為 ** ここでしたほうがすっきりする ** 1999/02/10 by T.Soneoka */ if (NextPage != NULL) { DeleteDocObj(&CurrentPage); CurrentPage = NextPage; NextPage = NULL; } else { /* ** 最終原稿蓄積中に次の原稿をセットされると、 ** 次原稿の登録もされていないので読み取りにいってしまう ** 次原稿ある場合は、ここで登録するようにします */ DeleteDocObj(&CurrentPage); /* 上記処理を3回するとCurrentPageが取れなくなる不具合 1999/03/05 by T.Soneoka */ CurrentPage = CreateDocObj(); NextPage = NULL; } } /* 仕様変更 ** 読み取り中において、DS2がOFFした時点でDS1もOFFしていれば、今読んだ原稿が ** 最終原稿であるという風に変更 ** by O.kimoto 1999/03/08 */ else { if (!CheckNeedDocPageNum()) { StoreTaskMsg.Message = MSG_SCN_DOCSTORE_STR_PAGE_ERROR; } } } else { if (!CheckNeedDocPageNum()) { StoreTaskMsg.Message = MSG_SCN_DOCSTORE_STR_PAGE_ERROR; } } WaitDocChanged(); /* 原稿が切り替わるまで待ち合わせします */ break; case MSG_DOCSTORE_MAXLINE_OVER: /* 1m原稿長制限 from WatchDocFeedTask */ StoreTaskMsg.Message = MSG_SCN_DOCSTORE_MAXLINE_OVER; MEM_ClearBreak(&SCN_IndexData); /* 蓄積途中のファイルをクリア 1999/02/25 by T.Soneoka */ break; case MSG_DOCSTORE_COVER_OPEN: /* カバーオープン from WatchDocFeedTask */ #if (0) ** /* 蓄積中にスキャナーカバーがあいた場合は、JAMリカバーオペレーションを起動させるために ** ** メインへは、「MSG_SCN_DOCSTORE_DOC_ERROR」を通知しなければならない。 ** ** by O.Kimoto 1999/03/08 ** */ ** StoreTaskMsg.Message = MSG_SCN_DOCSTORE_TOP_COVER_OPEN; #else StoreTaskMsg.Message = MSG_SCN_DOCSTORE_DOC_ERROR; #endif MEM_ClearBreak(&SCN_IndexData); /* 蓄積途中のファイルをクリア 1999/02/25 by T.Soneoka */ break; case MSG_DOCSTORE_FEED_ERROR: /* 繰込み不良 from WatchDocFeedTask */ StoreTaskMsg.Message = MSG_SCN_DOCSTORE_DOC_ERROR; MEM_ClearBreak(&SCN_IndexData); /* 蓄積途中のファイルをクリア 1999/02/25 by T.Soneoka */ break; default: /* not reached */ break; } } /* Page Loop End */ SYS_StorePause = FALSE; /* 表示用 1999/1/14 by T.Soneoka */ /* ** スキャンクローズで原稿排出中は回線引きっぱなしになる不具合 ** 1999/02/01 by T.Soneoka */ #if (0) ** /* 原稿排出処理 */ ** if (SCN_Close((UBYTE)0) != SCN_DOC_EXIT_OK) { ** StoreTaskMsg.Message = MSG_SCN_DOCSTORE_DOC_ERROR; ** }
/************************************************************************* module :[CNG TX or Detect2100Hz DetectDIS_Tone] function :[ 1. Be called Before V8 Mode ] commom :[ CED Tone Detect Time = 300ms, because into V8 Mode ] condition :[] comment :[] return :[] machine :[V53] language :[MS-C(Ver6.0)] keyword :[FCM] date :[1996/03/21] author :[村田] *************************************************************************/ UBYTE FCM_AfterToneCheck(void) { MESSAGE_t *receive; /* rcv_msg()で受信データをセットする*/ struct Timer10msData_t TimeUp; struct Timer10msData_t CNG_OFF_TimeUp; struct Timer10msData_t ToneKeepTimeUp; struct ToneDetectMailBoxData_t DisToneDetectMailBox; #if 0 /* Deleted by H.Kubo 1997/08/08 */ // struct ToneDetectMailBoxData_t CedToneDetectMailBox; #endif /* 0 */ WORD message; UBYTE ReturnValue; /* トーン検出結果 */ #if (PRO_TX_SPEED == V34) /* Added by H.Kubo 1998/01/08 */ #if (PRO_MODEM == R288F) || (PRO_MODEM == MN195006) struct ToneDetectMailBoxData_t BusyToneDetectMailBox; /* 1998/01/09 */ UBYTE filter_type; /* filter_type = FSK_FILTER; */ /* 後ろに移します。 by H.Kubo 1998/05/21 */ #endif /* (PRO_MODEM == R288F) */ #endif /* (PRO_TX_SPEED == V34) */ #if (PRO_MODEM == MN195006) /* 松下モデム評価用 *//* 2002/01/25 K.Doukuni */ UBYTE debug1_start; UBYTE debug2_start; UBYTE debug_end; UBYTE debug_memorize1; UBYTE debug_memorize2; UBYTE debug_memorize3; UBYTE debug_memorize4; UBYTE debug_memorize5; #endif tskno_ced_tsk = 0xFFFF; tskno_dis_tsk = 0xFFFF; tskno_timeup_tsk = 0xFFFF; tskno_cngoff_timeup_tsk = 0xFFFF; tskno_stop_tsk = 0xFFFF; tskno_tonekeep_timeup_tsk = 0xFFFF; tskno_answer_tone_tsk = 0xFFFF; tskno_bt_tsk = 0xFFFF; /* by H.Kubo 1998/01/09 */ CNG_StopFlag = 0; /*CNG送出:0 CNG停止:1*/ ReturnValue = 0xFF; message = 0; /* 極反検出後に検出されたトーンの種類を記録する。*/ FCM_ToneAfterDetectDCE = AD_NOT_YET_DETECTED; /* added by H.Kubo 1997/11/29 */ SYS_V8DetectATV25Flag = 0; /** V25 Answer Tone Flag */ /* 1996/05/10 モデム初期化時に一瞬[ATV25] Bitがたつためここでクルアする */ ToneDetectTaskInitial(); /** ATDタスクIDの初期化 */ #if (0) /* for ループの中でやっている。 deleted by H.Kubo 1997/11/29 */ @@ MDM_FilterSet(FSK_FILTER); /* T.B.D detect CED ? */ #endif /* (0) */ for (;;) { FaxTransmit1080Hz(); #if (PRO_MODEM == MN195006) /* 松下モデム評価用 *//* 2002/01/25 K.Doukuni */ /* ** 松下モデム テストルーチン1 : トーン検出テスト */ debug1_start = 0; if (debug1_start) { /* defaultフィルタによるTONAL/DTMF検出 */ debug_end = 0; debug_memorize1 = debug_memorize2 = debug_memorize3 = debug_memorize4 = debug_memorize5 = 0; MDM_ToneModeConfig(); /* TONAL-5 ORG */ while (!debug_end) { if (debug_memorize1 != DEBUG_IsToneDetected) { /* トーン検出したか */ debug_memorize1 = DEBUG_IsToneDetected; } if (debug_memorize2 != DEBUG_ToneFreqDetectedByMN) { /* トーナル信号の周波数情報 */ debug_memorize2 = DEBUG_ToneFreqDetectedByMN; } if (debug_memorize3 != DEBUG_IsDTMFDetected) { /* DTMF検出したか */ debug_memorize3 = DEBUG_IsDTMFDetected; } if (debug_memorize4 != DEBUG_DTMFDetectedByMN_H) { /* DTMF(高域)周波数情報 */ debug_memorize4 = DEBUG_DTMFDetectedByMN_H; } if (debug_memorize5 != DEBUG_DTMFDetectedByMN_L) { /* DTMF(低域)周波数情報 */ debug_memorize5 = DEBUG_DTMFDetectedByMN_L; } MDM_MeasureReceiveLevel = (UWORD)MDMD_GetRES_AGCVAL(); wai_tsk(2); debug_end = 0; } MDM_SetToneDetectModeExit(); wai_tsk(100); outp(0,0); /* debug終わり */ } /* ** 松下モデム テストルーチン2 : カスタムフィルタテスト */ debug2_start = 0; if (debug2_start) { debug_end = 0; /* ** custom filter セット */ MDM_FilterSet(0xFF); /* 0xFF : テスト時しか使いません */ MDM_ToneModeConfig(); while (!debug_end) { if (debug_memorize1 != DEBUG_IsToneDetected) { /* トーン検出したか */ debug_memorize1 = DEBUG_IsToneDetected; } if (debug_memorize2 != DEBUG_ToneFreqDetectedByMN) { /* トーナル信号の周波数情報 */ debug_memorize2 = DEBUG_ToneFreqDetectedByMN; } MDM_MeasureReceiveLevel = (UWORD)MDMD_GetRES_AGCVAL(); wai_tsk(2); debug_end = 0; } MDM_SetToneDetectModeExit(); wai_tsk(100); outp(0,0); /* debug終わり */ } #endif /* CNGの間隔が4秒周期になっている不具合修正 ** CNGのON送出後、フィルターのセットをしてからOFFのタイマー(3秒)を起動しているが、 ** フィルターのセットにかなり時間がかかっており、結果的に4秒周期ぐらいになっている。 ** よって、OFFタイマータスクの起動をON送出直後に移動します。 ** by O.Kimoto 1999/04/23 */ /*-----------------------------*/ /*CNG OFF 3秒タイムアップ検出タスク生成*/ /*-----------------------------*/ if (tskno_cngoff_timeup_tsk == 0xFFFF) { CNG_OFF_TimeUp.Time = 300; /* 3秒 */ CNG_OFF_TimeUp.SendMBX = mbxno.FCM_Task; CNG_OFF_TimeUp.ReturnValue = TIMEUP_CNGOFF; cre_tsk(&tskno_cngoff_timeup_tsk, TSK_CMN_MAN_TIMER10MSTASK, &CNG_OFF_TimeUp); } #if (PRO_MODEM == MN195006) MDM_ToneModeConfig(); /* TONAL-5 config */ #else /* #if 0 /@ 1996/03/27 V21コンフィグでもATV25は反応するので削除 */ /* 1996/04/08 外線で、ATV25が検出しにくかったので、やっぱり、とりあえず * トーンモードにコンフィグするようにした */ MDM_SetIO(POS_CONF, TX_SINGLE_TONE); MDM_SetIO(POS_NEWC, ON);/* re config tone mode for ATV25detector */ /* #endif */ /*------------------------------*/ /*フィルターのトーン周波数検出範囲を設定*/ /*------------------------------*/ #if 0 /* 1998/03/27 Y.Murata */ // MDM_FilterSet(FSK_FILTER); /* T.B.D detect CED ? */ #endif /* ATV25の誤検出を吸収するため、フィルターCで、2100成分を検出するので、こっちが正解 */ #if 0 /* filter_type に正しいフィルタを設定しなくてはいけない。 Changed by H.Kubo 1998/05/21 */ @@ MDM_FilterSet(AFTER_DIAL_FILTER); #else filter_type = AFTER_DIAL_FILTER; MDM_FilterSet(filter_type); #endif #endif /*------------------*/ /*ストップキー検出タスク */ /*------------------*/ if (tskno_stop_tsk == 0xFFFF) { cre_tsk(&tskno_stop_tsk, TSK_ATD_CHECKSTOPTASK, 0); } /*------------------*/ /*タイムアップ検出タスク生成*/ /*------------------*/ if (tskno_timeup_tsk == 0xFFFF) { TimeUp.Time = 3500; /* T1 Time Over */ TimeUp.SendMBX = mbxno.FCM_Task; TimeUp.ReturnValue = TIMEUP; cre_tsk(&tskno_timeup_tsk, TSK_CMN_MAN_TIMER10MSTASK, &TimeUp); } #if (0) ** /* CNGの間隔が4秒周期になっている不具合修正 ** ** CNGのON送出後、フィルターのセットをしてからOFFのタイマー(3秒)を起動しているが、 ** ** フィルターのセットにかなり時間がかかっており、結果的に4秒周期ぐらいになっている。 ** ** よって、OFFタイマータスクの起動をON送出直後に移動します。 ** ** by O.Kimoto 1999/04/23 ** */ ** /*-----------------------------*/ ** /*CNG OFF 3秒タイムアップ検出タスク生成*/ ** /*-----------------------------*/ ** if (tskno_cngoff_timeup_tsk == 0xFFFF) { ** CNG_OFF_TimeUp.Time = 300; /* 3秒 */ ** CNG_OFF_TimeUp.SendMBX = mbxno.FCM_Task; ** CNG_OFF_TimeUp.ReturnValue = TIMEUP_CNGOFF; ** cre_tsk(&tskno_cngoff_timeup_tsk, TSK_CMN_MAN_TIMER10MSTASK, &CNG_OFF_TimeUp); ** } #endif /*-------------------------------*/ /*2100Hzトーン検出タスク生成(連続トーン)*/ /*-------------------------------*/ /* T.B.D */ #if (0) ** /* 日立の特許回避(CED検出) ** ** 下記タスクの生成は元々コメントになっていましたが、念のために! ** ** By O.Kimoto 1998/04/14 ** */ ** if (tskno_ced_tsk == 0xFFFF) { ** CedToneDetectMailBox.ToneType = CED_TONE; ** CedToneDetectMailBox.SendMBX = mbxno.FCM_Task; ** cre_tsk(&tskno_ced_tsk, TSK_ATD_TONEDETECTPATTERN0TASK, &CedToneDetectMailBox); ** }
/*-----------------------------------------------*/ UBYTE AfterDial_ToneDetect(void) { MESSAGE_t *ad_receive; /* rcv_msg()で受信データをセットする*/ UWORD ad_message = 0; UBYTE return_value = 0xFF; /* トーン検出結果 */ #if defined(FRA) UBYTE FRA_RBT_Det_Flag; #endif struct Timer10msData_t TimeUp; struct Timer10msData_t CNG_OFF_TimeUp; struct Timer10msData_t ToneKeepTimeUp; struct ToneDetectMailBoxData_t BusyToneDetectMailBox; struct ToneDetectMailBoxData_t ConToneDetectMailBox; struct ToneDetectMailBoxData_t DisToneDetectMailBox; struct ToneDetectMailBoxData_t CedToneDetectMailBox; #if (PRO_TX_SPEED == V34) /* Added by H.Kubo 1998/01/08 */ #if (PRO_MODEM == R288F) || (PRO_MODEM == MN195006) UBYTE filter_type; #endif /* (PRO_MODEM == R288F) */ #endif /* (PRO_TX_SPEED == V34) */ #if (PRO_SPEED_EX == ENABLE) struct ToneDetectMailBoxData_t ASToneDetectMailBox; /* | SendMBX | ToneType | */ #endif #if (PRO_MODEM == ORANGE3) /* ATD_FilterOnOffDetectTaskへの引き数の型が合っていない T.Nose 1996/06/01 */ UBYTE tone_detect_type; tone_detect_type = AFTER_DIAL_DETECT; tskno_freq_check = 0xffff; #endif tskno_bt = 0xffff; tskno_ct = 0xffff; tskno_ced = 0xffff; tskno_dis = 0xffff; tskno_ad_dse = 0xffff; tskno_ad_timeup = 0xff; tskno_cngoff_timeup = 0xff; tskno_tonekeep_timeup = 0xff; /* tskno_ad_timeup = 0xffff; */ /* tskno_cngoff_timeup = 0xffff; */ /* tskno_tonekeep_timeup = 0xffff; */ tskno_ad_stop = 0xffff; #if (PRO_SPEED_EX == ENABLE) tskno_as_tn = 0xffff; /* 着信トーン検出 */ #endif #if (PRO_TX_SPEED == V34) /* Added by H.Kubo 1997/07/19 */ #if (PRO_MODEM == R288F) || (PRO_MODEM == MN195006) tskno_ad_answer_tone = 0xffff; filter_type = AFTER_DIAL_FILTER; #endif /* (PRO_MODEM == R288F) */ #endif /* (PRO_TX_SPEED == V34) */ CNG_StopFlag = 0; /*CNG送出:0 CNG停止:1*/ #if (PRO_TX_SPEED == V34) /* Added by H.Kubo 1997/07/19 */ #if (PRO_MODEM == R288F) || (PRO_MODEM == MN195006) SYS_V8DetectATV25Flag = 0; /** V25 Answer Tone Flag */ #endif /* (PRO_MODEM == R288F) */ #endif /* (PRO_TX_SPEED == V34) */ /* #if defined(DEU) */ /* by M.H '97/03/21 for CNG Tx timing from holding the line (1.5 +- 1sec) */ /* ** ダイヤル後一発目のCNGを出すまでの時間は1.5s±1.0s ** DEUのみの規格だが標準で入れておく Jun.12.1997 By T.Yamaguchi */ wai_tsk(130); /* #endif */ /*------------------------------*/ /*フィルターのトーン周波数検出範囲を設定*/ /*------------------------------*/ MDM_FilterSet(AFTER_DIAL_FILTER); /*---------------*/ /*トーン検出&CNG送出*/ /*---------------*/ for (;;) { /*--------------*/ /*CNG送出(500ms)*/ /*--------------*/ MDM_ToneTx(TONE_1080HZ, 500); #if (PRO_MODEM == R288F) || (PRO_MODEM == MN195006) /* Added by H.Kubo 1997/07/19 */ /* CNGの送出間隔が正しくON/OFF=0.5秒/3秒にならない。 ** 原因は、CNGのONを送出後、OFFのタイマーを起動するまでに時間がかかりすぎている為 ** よって、CNGのOFFタイマーの起動はON送出直後に移動させます。 ** By O.Kimoto 1999/04/22 */ if (tskno_cngoff_timeup == 0xFF) { #if defined(FRA) || defined(DEU) || defined(EUR) /* add by M.HARADA '97/1/8 */ /* 欧州仕様追加 by M.H 1999/09/16 */ CNG_OFF_TimeUp.Time = 280; /* close to 3秒 */ #else CNG_OFF_TimeUp.Time = 300; /* 3秒 */ #endif CNG_OFF_TimeUp.SendMBX = mbxno.FCM_Task; CNG_OFF_TimeUp.ReturnValue = TIMEUP_CNGOFF; CMN_MultiTimer10msStart(&tskno_cngoff_timeup, &CNG_OFF_TimeUp); } #if defined(FRA) else{ debug_debug = 0; } #endif /* ダイヤルトーン検出用フィルターをセットする前に ** CONFの値をV.8からV.21に戻しておきます。 ** 1997/05/27 Y.Murata */ /*---------------------------------------*/ /* re config tone mode for ATV25detector */ /*---------------------------------------*/ MDM_ToneModeConfig(); #endif /* (PRO_MODEM == R288F) */ /*------------------------------*/ /*フィルターのトーン周波数検出範囲を設定*/ /*------------------------------*/ MDM_FilterSet(AFTER_DIAL_FILTER); /*------------------*/ /*ストップキー検出タスク */ /*------------------*/ if (tskno_ad_stop == 0xFFFF) { cre_tsk(&tskno_ad_stop, TSK_ATD_CHECKSTOPTASK, 0); } /*------------------*/ /*タイムアップ検出タスク生成*/ /*------------------*/ /* if (tskno_ad_timeup == 0xFFFF) { 1996/12/12 By T.Yamaguchi */ if (tskno_ad_timeup == 0xFF) { if (CHK_AFTER_DIAL_DELAY_TIME()) { /* By M.Tachibana 1997/06/09 */ TimeUp.Time = ((UWORD)CHK_AFTER_DIAL_DELAY_TIME()*100); /*着信検出時間*/ } else { TimeUp.Time = ((struct ToneParameters_t *)CTRY_BusyTone())->MaxDetectTime; /*着信検出時間*/ } TimeUp.SendMBX = mbxno.FCM_Task; TimeUp.ReturnValue = TIMEUP; CMN_MultiTimer10msStart(&tskno_ad_timeup, &TimeUp); /* cre_tsk(&tskno_ad_timeup, TSK_CMN_MAN_TIMER10MSTASK, &TimeUp); */ } /*-----------------------------*/ /*CNG OFF 3秒タイムアップ検出タスク生成*/ /*-----------------------------*/ #if (PRO_MODEM != R288F) && (PRO_MODEM == MN195006) /* Add By O.Kimoto 1999/04/22 */ /* if (tskno_cngoff_timeup == 0xFFFF) { */ if (tskno_cngoff_timeup == 0xFF) { #if defined(FRA) || defined(DEU) || defined(EUR) /* add by M.HARADA '97/1/8 */ /* 欧州仕様追加 by M.H 1999/09/16 */ CNG_OFF_TimeUp.Time = 280; /* close to 3秒 */ #else CNG_OFF_TimeUp.Time = 300; /* 3秒 */ #endif CNG_OFF_TimeUp.SendMBX = mbxno.FCM_Task; CNG_OFF_TimeUp.ReturnValue = TIMEUP_CNGOFF; CMN_MultiTimer10msStart(&tskno_cngoff_timeup, &CNG_OFF_TimeUp); /* cre_tsk(&tskno_cngoff_timeup, TSK_CMN_MAN_TIMER10MSTASK, &CNG_OFF_TimeUp); */ } #if defined(FRA) else{ debug_debug = 0; } #endif #endif /*-------------------*/ /*ビジ-トーン検出タスク生成*/ /*-------------------*/ if(FCM_PtnrChkBusyToneDetect()) { if (((struct ToneParameters_t far *)CTRY_BusyTone())->DetectCycle) { if (tskno_bt == 0xFFFF) { BusyToneDetectMailBox.ToneType = BUSYTONE; BusyToneDetectMailBox.SendMBX = mbxno.FCM_Task; switch (((struct ToneParameters_t far *)CTRY_BusyTone())->TonePattern) { case 0: /*トーンのパターンが連続の時*/ cre_tsk(&tskno_bt, TSK_ATD_TONEDETECTPATTERN0TASK, &BusyToneDetectMailBox); break; case 1: /*トーンのパターンが ON-OFF の時*/ case 2: /*トーンのパターンが ON-OFF-ON-OFF の時*/ case 3: /*トーンのパターンが ON-OFF-ON-OFF-ON-OFF の時*/ cre_tsk(&tskno_bt, TSK_ATD_TONEDETECTPATTERN1TASK, &BusyToneDetectMailBox); break; } } } } /*-----------------------*/ /*コンジェスショントーン検出タスク生成*/ /*-----------------------*/ #if defined(FRA) if (CHK_UNI_HumanAnswerClear()) { #endif if(CHK_UNI_ConToneDetect()) { if (((struct ToneParameters_t far *)CTRY_CongestionTone())->DetectCycle) { if (tskno_ct == 0xFFFF) { ConToneDetectMailBox.ToneType = CONTONE; ConToneDetectMailBox.SendMBX = mbxno.FCM_Task; switch (((struct ToneParameters_t far *)CTRY_CongestionTone())->TonePattern) { case 0: /*トーンのパターンが連続の時*/ cre_tsk(&tskno_ct, TSK_ATD_TONEDETECTPATTERN0TASK, &ConToneDetectMailBox); break; case 1: /*トーンのパターンが ON-OFF の時*/ case 2: /*トーンのパターンが ON-OFF-ON-OFF の時*/ case 3: /*トーンのパターンが ON-OFF-ON-OFF-ON-OFF の時*/ cre_tsk(&tskno_ct, TSK_ATD_TONEDETECTPATTERN1TASK, &ConToneDetectMailBox); break; } } } } #if defined(FRA) } #endif #if (PRO_TX_SPEED == V34) /* Added by H.Kubo 1997/07/19 */ /*---------------------------------*/ /** V25アンサートーンタスク生成 */ /* CEDトーン検出タスク生成(連続トーン) */ /*---------------------------------*/ #if (PRO_MODEM == R288F) || (PRO_MODEM == MN195006) #if (0) ** /* V.8ハンドシェーク中のノイズ対策 by O.Kimoto 1999/04/13 */ ** #if (PRO_CED_DETECT == ENABLE) /* 日立特許回避。Clover2 から移植。By H.Kubo 1998/07/08 */ ** if (CHK_CED_Detect()) { ** #else ** if (CHK_CED_Detect() && (CMN_GetDataSignalingRate() & DATA_SIGNALING_RATE_V34_BIT)) { ** #endif #else #if (PRO_CED_DETECT == ENABLE) /* 日立特許回避。Clover2 から移植。By H.Kubo 1998/07/08 */ if (CHK_CED_Detect() && (SYB_MemorySwitch[MEMORY_SW_B3] & INHIBIT_DETECT_ANSAM)) { #else if (CHK_CED_Detect() && (CMN_GetDataSignalingRate() & DATA_SIGNALING_RATE_V34_BIT) && !FCM_OverrideANSam()) { #endif #endif if (tskno_ad_answer_tone == 0xffff) { cre_tsk(&tskno_ad_answer_tone, TSK_ATD_DETECTANSWERTONEV25TASK, &filter_type); } } #else /* (PRO_MODEM == R288F) */ #error "Need a method to detect V25 answer tone and CED." #endif /* (PRO_MODEM == R288F) */ #else /* (PRO_TX_SPEED == V34) */ /*----------------------------*/ /*CEDトーン検出タスク生成(連続トーン)*/ /*----------------------------*/ #if (PRO_CED_DETECT == ENABLE) /* 日立特許回避 By M.Tachibana 1998/04/14 */ if (CHK_CED_Detect()) { if (tskno_ced == 0xFFFF) { CedToneDetectMailBox.ToneType = CED_TONE; CedToneDetectMailBox.SendMBX = mbxno.FCM_Task; cre_tsk(&tskno_ced, TSK_ATD_TONEDETECTPATTERN0TASK, &CedToneDetectMailBox); } } #endif #endif /* (PRO_TX_SPEED == V34) */ /*-----------------*/ /*DISトーン検出タスク生成*/ /*-----------------*/ if (tskno_dis == 0xFFFF) { DisToneDetectMailBox.ToneType = DIS_TONE; DisToneDetectMailBox.SendMBX = mbxno.FCM_Task; cre_tsk(&tskno_dis, TSK_ATD_TONEDETECTPATTERN0TASK, &DisToneDetectMailBox); } #if (PRO_SPEED_EX == ENABLE) /*------------------------*/ /*極性反転(DSE)検出タスク生成*/ /*------------------------*/ if ((CHK_UNI_SpeedHandshakeEx() == 0) &&(CHK_UNI_DSE_Detect())) { /* 個別A0 */ if (tskno_ad_dse == 0xFFFF) { cre_tsk(&tskno_ad_dse, TSK_ATD_CHECKDSETASK, 0); } } /*--------------------------*/ /*着信後トーン検出(短縮用)*/ /*--------------------------*/ if ((SpeedHandshakeRomCheck() == TRUE) && (CHK_UNI_SpeedHandshakeEx() != 0)) { if (tskno_as_tn == 0xFFFF) { ASToneDetectMailBox.ToneType = SPD_TONE; ASToneDetectMailBox.SendMBX = mbxno.FCM_Task; cre_tsk(&tskno_as_tn, TSK_ATD_CHECKTONETASK, &ASToneDetectMailBox); } } #else /*------------------------*/ /*極性反転(DSE)検出タスク生成*/ /*------------------------*/ #if (PRO_MODEM == R288F) || (PRO_MODEM == MN195006) /* Ported from CLOVER by H.Kubo 1997/11/04 */ /* Class1動作時は極反検出は行いません By O.Kimoto 1997/06/02 */ if (!CMN_CheckActiveClass1()) { if (CHK_UNI_DSE_Detect()) { if (tskno_ad_dse == 0xFFFF) { cre_tsk(&tskno_ad_dse, TSK_ATD_CHECKDSETASK, 0); } } } #else /* (PRO_MODEM == R288F) */ /* Class1動作時は極反検出は行いません 暫定処置 S.Fukui Jun.29,1998 */ if (!CMN_CheckActiveClass1()) { if (CHK_UNI_DSE_Detect()) { /* 個別A0 */ if (tskno_ad_dse == 0xFFFF) { cre_tsk(&tskno_ad_dse, TSK_ATD_CHECKDSETASK, 0); } } } #if (0) if (CHK_UNI_DSE_Detect()) { /* 個別A0 */ if (tskno_ad_dse == 0xFFFF) { cre_tsk(&tskno_ad_dse, TSK_ATD_CHECKDSETASK, 0); } } #endif #endif /* (PRO_MODEM == R288F) */ #endif /*-------------------------------------*/ /* Frequency check Only Orange3 Modem */ /*-------------------------------------*/ #if (PRO_MODEM == ORANGE3) if (tskno_freq_check == 0xFFFF) { cre_tsk(&tskno_freq_check, TSK_ATD_FILTERONOFFDETECTTASK, &tone_detect_type); } #endif for(;;) { /*----------*/ /*メッセージ受信*/ /*----------*/ rcv_msg(mbxno.FCM_Task, &ad_receive); ad_message = ad_receive->Message; #if defined(FRA) /* 95/01/20 by M.HARADA */ /*-----------------*/ /* RBTを検出した時 */ /*-----------------*/ if(ad_message == CONTONE){ if (tskno_ct != 0xFFFF) { /* del RBT検出タスク */ del_tsk(&tskno_ct); } } #endif /*------------------------*/ /*CNG OFF時間が3秒経った時*/ /*------------------------*/ if (ad_message == TIMEUP_CNGOFF) { if (tskno_cngoff_timeup != 0xFF) { CMN_MultiTimer10msStop(&tskno_cngoff_timeup); } /* del_tsk(&tskno_cngoff_timeup); 1996/12/12 By T.Yamaguchi */ /*-----------------------------------------*/ /*CNG送出を止める時 */ /*(CNG_StopFlagはトーン検出タスクの中でセットされる)*/ /*-----------------------------------------*/ if (CNG_StopFlag) { CNG_StopFlag = 0; /*-----------------------------*/ /*トーン検出続行タイムアップ検出タスク生成*/ /*-----------------------------*/ /* if(tskno_tonekeep_timeup == 0xFFFF){ 1996/12/12 By T.Yamaguchi */ if(tskno_tonekeep_timeup == 0xFF){ ToneKeepTimeUp.Time = 500;/*トーン検出続行時間(5秒)*/ ToneKeepTimeUp.SendMBX = mbxno.FCM_Task; ToneKeepTimeUp.ReturnValue = TIMEUP_TONE0; CMN_MultiTimer10msStart(&tskno_tonekeep_timeup, &ToneKeepTimeUp); /* cre_tsk(&tskno_tonekeep_timeup, TSK_CMN_MAN_TIMER10MSTASK, &ToneKeepTimeUp); */ } } /*---------------*/ /*CNG送出を続ける*/ /*---------------*/ else { break; } } else { /*---------------------------------*/ /*(*ad_receive) == TIMEUP_TONE0の時*/ /*---------------------------------*/ /* if (tskno_tonekeep_timeup != 0xFFFF) { 1996/12/12 By T.Yamaguchi */ if (tskno_tonekeep_timeup != 0xFF) { CMN_MultiTimer10msStop(&tskno_tonekeep_timeup); /* del_tsk(&tskno_tonekeep_timeup); */ } break; } } /*------------------*/ /*メッセージに対する処理*/ /*------------------*/ switch (ad_message) { case TIMEUP_CNGOFF: case TIMEUP_TONE0: break; case BUSYTONE: #if !defined(FRA) /* FRA以外 by M.HARADA 95/01/20 */ case CONTONE: #endif return_value = AD_REMOTE_BUSY; break; case TIMEUP: return_value = AD_TIME_OVER; break; case MSG_DETECT_STOP: return_value = AD_STOPPED; break; case MSG_DETECT_DSE: return_value = AD_OK_DSE; break; #if (PRO_SPEED_EX == ENABLE) case SPD_TONE: return_value = AD_OK_SPD_TONE; break; #endif #if defined(FRA) /* 95/01/20 by M.HARADA */ case CONTONE: break; case MSG_TIMEUP_AFTER_RBT: return_value = AD_DETECT_RINGBACKTONE; break; #endif case CED_TONE: return_value = AD_OK_CED; break; #if (PRO_TX_SPEED == V34) /* Added by H.Kubo 1997/07/19 */ #if (PRO_MODEM == R288F) || (PRO_MODEM == MN195006) case MSG_DETECT_V25_ANSWER_TONE: return_value = AD_OK_ANSWER_TONE; break; #endif /* (PRO_MODEM == R288F) */ #endif /* (PRO_TX_SPEED == V34) */ default: /* DIS */ return_value = AD_OK_DIS; break; } detect_end_flag = 0; /*--------------------------------*/ /*return_valueに値がセットされていたら*/ /*--------------------------------*/ if (return_value != 0xFF) { detect_end_flag = 1; Del_AfterTone_Task(); return(return_value); } else { Del_AfterTone_Task(); } } } /*---------------------------------*/ /*ダイアル後トーン検出で使用したタスクを削除*/ /*---------------------------------*/ void Del_AfterTone_Task(void) { if (tskno_bt != 0xFFFF) { del_tsk(&tskno_bt); } if (tskno_ct != 0xFFFF) { del_tsk(&tskno_ct); } if (tskno_ced != 0xFFFF) { del_tsk(&tskno_ced); } if (tskno_dis != 0xFFFF) { del_tsk(&tskno_dis); } #if (PRO_SPEED_EX == ENABLE) if (tskno_as_tn != 0xFFFF){ del_tsk(&tskno_as_tn); } #endif /* if (tskno_cngoff_timeup != 0xFFFF) { */ if (tskno_cngoff_timeup != 0xFF) { CMN_MultiTimer10msStop(&tskno_cngoff_timeup); /* del_tsk(&tskno_cngoff_timeup); */ } /* if (tskno_tonekeep_timeup != 0xFFFF) { */ if (tskno_tonekeep_timeup != 0xFF) { CMN_MultiTimer10msStop(&tskno_tonekeep_timeup); /* del_tsk(&tskno_tonekeep_timeup); */ } #if defined(FRA) /* if (tskno_after_rbt_timeup !=0xFFFF) { */ if (tskno_after_rbt_timeup !=0xFF) { /* 1996/12/12 By T.Yamaguchi */ CMN_MultiTimer10msStop(&tskno_after_rbt_timeup); /* del_tsk(&tskno_after_rbt_timeup); */ } #endif #if (PRO_MODEM == ORANGE3) if (tskno_freq_check != 0xFFFF) { del_tsk(&tskno_freq_check); } #endif if (detect_end_flag) { if (tskno_ad_dse != 0xFFFF) { del_tsk(&tskno_ad_dse); } /* if (tskno_ad_timeup != 0xFFFF) { */ if (tskno_ad_timeup != 0xFF) { CMN_MultiTimer10msStop(&tskno_ad_timeup); /* del_tsk(&tskno_ad_timeup); */ } if (tskno_ad_stop != 0xFFFF) { del_tsk(&tskno_ad_stop); } } #if (PRO_TX_SPEED == V34) /* Added by H.Kubo 1997/07/19 */ #if (PRO_MODEM == R288F) || (PRO_MODEM == MN195006) /*---------------------------------*/ /** V25アンサートーンタスク削除 */ /*---------------------------------*/ if (tskno_ad_answer_tone != 0xffff) { del_tsk(&tskno_ad_answer_tone); } #endif /* (PRO_MODEM == R288F) */ #endif /* (PRO_TX_SPEED == V34) */ } #if (PRO_TX_SPEED == V34) #if (PRO_MODEM == R288F) || (PRO_MODEM == MN195006) /* Ported from Clover\src\astn.c by H.Kubo 1997/07/22 */ /************************************************************************* module :[V25アンサートーン検出] function :[ 1. ] return :[] common :[] condition :[] comment :[] machine :[SH7043] language :[MS-C(Ver.6.0)] keyword :[ATD] date :[1995/10/24] author :[村田] *************************************************************************/ /* void ATD_DetectAnswerToneV25Task(void) */ /* ビジートーン誤検出対策用に引数を加えた。*/ void ATD_DetectAnswerToneV25Task(UBYTE *filter_type) { MESSAGE_t msg; UWORD atv25_on_cnt; UWORD atv25_off_cnt; unsigned char ret; UWORD detect_time; /* ANSam対策 By O.Kimoto 1997/06/02 */ ret = 0; CMN_DisableInterrupt(); /** 割り込み禁止 */ if (SYS_V8DetectATV25Flag == 0) { wai_evt(EVT_MDM_ATV25); /* ATV25 */ } CMN_EnableInterrupt(); /** 割り込み許可 */ SYS_V8DetectATV25Flag = 0; /* Class1動作時は、ATV25の監視タイマーを1秒にします。 By O.Kimoto 1997/06/02 */ if (CMN_CheckActiveClass1()) { detect_time = 1000/10; } else { detect_time = 100/10; } /* 1997/01/26 Y.Murata * ATV25が誤検出してT.1.1になる可能性がるため * 再度検出 */ atv25_on_cnt = 0; atv25_off_cnt = 0; while (1) { if (MDM_GetIO(POS_ATV25)) { if (*filter_type == (UBYTE) AFTER_DIAL_FILTER) { /* Busy tone 誤検出対策 */ #if (0) if (MDM_GetIO(POS_TONEA)) { /* BUSY Tone 検出用フィルタフラグ監視 */ atv25_off_cnt++; if (atv25_off_cnt > 4) { /* 30ms */ atv25_on_cnt = 0; } } #else #if defined(USA) /* 音声メッセージ誤検出対策(試し) by H.Kubo 1998/05/28 */ if (MDM_GetIO(POS_TONEA) || MDM_GetIO(POS_TONEB)) { /* BUSY Tone 検出用フィルタフラグ監視 */ atv25_off_cnt++; if ((atv25_off_cnt > 4) && (atv25_on_cnt > 0) ) { /* 30ms */ atv25_on_cnt--; } } #endif /* AFTER_DIAL_FILTER では、 TONEC で CED (2100Hz) の監視をしています。 */ if (MDM_GetIO(POS_TONEC)) { /* 2100Hz 検出用フィルタフラグ監視 */ atv25_on_cnt++; atv25_off_cnt = 0; if (atv25_on_cnt > detect_time) { /* 90ms *//* Change 直値(10) to 変数 By O.Kimoto 1997/06/02 */ break; } } else { atv25_off_cnt++; if (atv25_off_cnt > 4) { /* 30ms */ atv25_on_cnt = 0; } } #endif } else { atv25_on_cnt++; atv25_off_cnt = 0; if (atv25_on_cnt > detect_time) { /* 90ms *//* Change 直値(10) to 変数 By O.Kimoto 1997/06/02 */ break; } } } else { atv25_off_cnt++; if (atv25_off_cnt > 4) { /* 30ms */ atv25_on_cnt = 0; } } wai_tsk(1); /* 10ms */ } /*-----------------*/ /** メッセージ送信 */ /*-----------------*/ msg.Message = MSG_DETECT_V25_ANSWER_TONE; snd_msg(mbxno.FCM_Task, &msg); wai_tsk(0xFFFF); /** 無限ループ */ }
/************************************************************************* module :[サービスファンクション用FSK送出] function :[ 1. ] return :[] common :[] condition :[] comment :[] date :[1994/05/06] author :[曽根岡拓] *************************************************************************/ void MDM_FskTxTask(UBYTE *fsk_type) { MESSAGE_t Modem; UBYTE loop_flg; loop_flg = 1; /** ループ制御フラグを1に設定 */ MDM_ModemInitialize(); /** モデムワークエリアクリア */ InitializeModemWork(); #if (PRO_ENERGY_SAVE == ENABLE) /* トーナルテストFSKモードで信号送出時間が短い by J.Kishida 2002/10/11 */ if (SYS_HaltClock == FALSE) { /* 現在クロックが停止していて */ HaltClockOn(); wai_tsk(1); /* クロックが出始めてから最低0.6us待ってサブリセット解除 */ SubResetOff(); SYS_HaltClock = TRUE; /* クロックが供給されていることを示すフラグ */ } #endif /* ** ROCKWELL製 28.8K */ /* モデム救済タスク起動 By O.Kimoto 1998/02/03 */ if (tskno_MDM_ModemRecoverTask == 0xffff) { cre_tsk(&tskno_MDM_ModemRecoverTask, TSK_MDM_MODEMRECOVERTASK, 0); } /* Added by H.Kubo 1997/12/25 */ /* 通信中でないので、FCM_PtnrChk_T23Attenation() はメモリスイッチの値を ** 反映してない。そのため、メモリスイッチの値を直接参照して送出レベルを設定する。 */ MDM_TransmitLevelSet(SYS_MemorySwitch[11] & ATTENATION); /* スピーカーの設定 1997/03/18 Y.Murata */ if (CHK_LineMonitor()) { MDM_SetVolumeAttenuationLevel(SYS_VOLUME_MAXIMUM); } ModemTypeSet(BPS300_V21); /** モデムタイプをFSKに設定 */ ModemBlock.Chain = CHAIN_OFF; ServiceFuncTx = TRUE; /** サービスファンクション用送出をON */ if (*fsk_type == FSK_WHITE) { /** FSK WHITE送出の時 */ SetClear((UBYTE *)&MDM_ModemBuffer[0][0], MODEM_BUFFER_LENGTH, 0x00); /** モデムバッファ、0x00セット *//** 256 Bytes **/ } else if (*fsk_type == FSK_W1_B1) { /* FSK_W1_B1 1999/12/27 Y.Murata */ SetClear((UBYTE *)&MDM_ModemBuffer[0][0], MODEM_BUFFER_LENGTH, 0xaa); /** モデムバッファ、0xAAセット *//** 256 Bytes **/ } else { /** FSK BLACK送出の時 */ SetClear((UBYTE *)&MDM_ModemBuffer[0][0], MODEM_BUFFER_LENGTH, 0xff); /** モデムバッファ、0xFFセット *//** 256 Bytes **/ } TxFskOpen(); /** FSK送信オープン */ while(loop_flg) { /** ループ制御フラグが1の時 */ ServiceFuncTx = TRUE; /** サービスファンクション用送出をON */ #if (PRO_CLASS1 == ENABLE) /* Changed by H.Kubo 1998/03/04 */ TxFskWrite(&MDM_ModemBuffer[0][0], MDM_ModemDmaSize); /** FSK送信モデムライト *//** 256 Bytes **/ #else TxFskWrite(&MDM_ModemBuffer[0][0], MODEM_DMA_SIZE); /** FSK送信モデムライト *//** 256 Bytes **/ #endif while (1) { /** 無限ループ */ if (ServiceFuncTx == FALSE) { /** サービスファンクション用送出OFFの時 */ break; } else if (SYS_PixStopFlag == 1) { /** 送出ストップの時 */ ModemControl.Status |= STAT_EMPTYPT; /** モデムステータス、最終フレーム登録完了 */ loop_flg = NO; /** ループ制御フラグを0に設定 */ break; } wai_tsk(50/10); /** タスクウェイト50ms */ } } /* モデム割り込み監視タスク終了 */ if (tskno_ModemInterrupt != 0xffff) { del_tsk(&tskno_ModemInterrupt); /** モデム割り込み監視タスク終了 */ } /* 送信フレーム監視タスク終了 */ if (tskno_TxFskControl != 0xffff) { del_tsk(&tskno_TxFskControl); /** 送信フレーム監視タスク終了 */ } /* モデムバッファ−>モデムDMA終了 */ /* Modified by H. Kubo for POPLAR_H, 1997/06/17 */ DMA_RequestMask(DMA_CH_TX); /** モデムバッファ−>モデムDMA終了 */ /* モデムバッファセマフォリセット */ ResetModemBufferSem(); /** モデムバッファセマフォリセット */ /* モデムクローズ処理 */ /* add 2line 1996/12/12 Y.M */ MDM_SetIO(POS_RTS,OFF); wai_tsk(3); /* at least 15ms */ MDM_InitialConfig(); /** モデムクローズ処理 */ /* ** ROCKWELL製 28.8K */ /* モデム救済タスク起動 By O.Kimoto 1998/02/03 */ if (tskno_MDM_ModemRecoverTask != 0xffff) { del_tsk(&tskno_MDM_ModemRecoverTask); } ServiceFuncTx = FALSE; Modem.Message = MSG_MODEM_STOP; snd_msg(mbxno.FIP, &Modem); /** オペレーションタスクにメッセージ送信 */ wai_tsk(0xffff); /** 無限タスクウェイト */ }
/************************************************************************* module :[サービスファンクション] function :[ 1. ] return :[] common :[] condition :[] comment :[] machine :[V53] language :[MS-C(Ver.6.0)] keyword :[MDM] date :[1996/12/10] author :[] *************************************************************************/ void MDM_FactoryFunctionTask(void) { UWORD status; MESSAGE_t *MDM_RxMsg; MESSAGE_t MDM_TxMsg; status = 0; SYS_FactoryFuncStatus = 0; tskno_MDM_FskTest = 0xFFFF; tskno_MDM_PixTest = 0xFFFF; SYS_PixStopFlag = 0; SYS_V34ProcedureExecutingFlag = NO; /* 0; */ MDM_FactoryFskMenu = 0; /* #if defined(POPLAR_F) */ #if (PRO_VOICE_ANSWER == ENABLE) #if (PRO_MODEM == R288F) /* ORANGE以外のモデム Modified by J.Kishida 2002/09/09 */ tskno_MDM_VoiceTest = 0xFFFF; #endif #endif do { rcv_msg(mbxno.CPY_Task, &MDM_RxMsg); /** メッセージ受信 */ } while (MDM_RxMsg->Message != FIP_TEST_CMD); /* POPLAR_H では直接メモリスイッチを参照できるので、以下は不必要。*/ while (1) { do { rcv_msg(mbxno.CPY_Task, &MDM_RxMsg); /** メッセージ受信 */ } while (MDM_RxMsg->Message != FIP_TEST_CMD); switch (SYS_FactoryModem.Item) { /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ case SYS_OPT_MDM_RELAY_TEST: if ((status == 0) || (status == 1)) { status = 1; } else { /* ソフトリセット */ MDM_SoftResetModem(); status = 1; } MDM_RealyTest(); break; case SYS_OPT_MDM_TONAL_TEST: #if defined(HINOKI2) && defined(JPNNTT) /* トーナルテストリセット対策 by J.Kishida 2002/12/03 */ if (status == 2) { status = 2; } else if (status == 0) { /* // トーナルテストに入る時(status == 0のとき)は // ハードリセットをかけます */ MDM_ModemHardwareReset(); wai_tsk(400/10); /* Add By O.Kimoto 2002/12/04 */ status = 2; } else { /* ソフトリセット */ MDM_SoftResetModem(); status = 2; } #else if ((status == 0) || (status == 2)) { status = 2; } else { /* ソフトリセット */ MDM_SoftResetModem(); status = 2; } #endif MDM_TonalTest(); break; case SYS_OPT_MDM_DTMF_TEST: if ((status == 0) || (status == 3)) { status = 3; } else { /* ソフトリセット */ MDM_SoftResetModem(); status = 3; } MDM_DTMF_Test(); break; #if defined (KEISATSU) /* 警察FAX Added by SMuratec K.W.Q 2005/10/25 */ /* 警察FAX Added start DVT_ID15 by SMuratec K.W.Q 2005/11/05 */ case SYS_OPT_MDM_KEIDEN_RELAY_TEST: if ((status == 0) || (status == 4)) { status = 4; } else { /* ソフトリセット */ MDM_SoftResetModem(); status = 1; } MDM_RealyTest(); break; case SYS_OPT_MDM_KEIDEN_TONAL_TEST: if ((status == 0) || (status == 5)) { status = 5; } else { /* ソフトリセット */ MDM_SoftResetModem(); status = 5; } MDM_TonalTest(); break; case SYS_OPT_MDM_KEIDEN_DTMF_TEST: if ((status == 0) || (status == 6)) { status = 6; } else { /* ソフトリセット */ MDM_SoftResetModem(); status = 6; } MDM_DTMF_Test(); break; /* 警察FAX Added end DVT_ID15 by SMuratec K.W.Q 2005/11/05 */ #endif /* End of (defined (KEISATSU)) */ case OPT_MDM_FACTORY_TEST_END: break; case OPT_MDM_FACTORY_TEST_START: break; } MDM_TxMsg.Message = MSG_FIP_RS232C_TEST_END; snd_msg(mbxno.OPR_Task,&MDM_TxMsg); } }
/************************************************************************* module :[DIPP-AS シェーディング実行] function :[ 1.シェーディングを行い,シェーディングデータをDIPP-ASのシェーディン .グRAMよりバックアップRAMにコピーします。 2.V53チームは、ランプエラーをチェックします ] return :[ OK 1: ランプエラー無し、シェーディングOK NG 0: ランプエラー ] common :[なし] comment :[なし] condition :[なし] machine :[H8/300] language :[CH38(V.2.0.B)] keyword :[H8/300(日立マイコン)] date :[1993/11/25] author :[宮崎] *************************************************************************/ UBYTE DIPP_ShadingExecute(void) { UBYTE tmpreg; DIPP_InitialSet(); /** DIPP-AS初期設定 */ DIPP_SetBitDIPPST(IDP_BIT_ON); /** DIPP-AS読み取り開始 */ #if (PRO_ENERGY_SAVE == ENABLE) /* 2001/11/30 T.Takagi */ PC_24V_On(); #endif LampOn(); /** ランプオン */ /** WCOM ONまでSYS_MachineParameter[80](I0)*10 mS(CCD Spec. = 300ms)待ちます */ wai_tsk(SYB_MaintenanceSwitch[MNT_SW_C4] * 10); DIPP_SetBitPEAKE(IDP_BIT_ON); /** ピーク値検出回路を動作 */ wai_tsk(2); /** WCOM ONまで10mS(2ライン分)待ちます */ /** DIPP-ASのステータスレジスタをリード */ if((IdpInputByte(DIPP_SR_PORT)&DIPP_SR_FLEXG) == DIPP_SR_FLEXG) { DIPP_SetBitPEAKE(IDP_BIT_OFF); /** ピーク値検出回路停止(ピーク値固定) */ DIPP_SetBitDIPPST(IDP_BIT_OFF); /** DIPP-AS読み取り終了 */ return(NG); } else { #if (0) /* ICHOU薄読み対策(PEAKE-OFFの後リードする) 1997/04/01 s.takeuchi */ /*-------------------------*/ /** ピーク値をセーブします */ /*-------------------------*/ IdpRegisterStatus.DIPP_AR = 0x0d; IdpOutputByte(DIPP_AR_PORT,IdpRegisterStatus.DIPP_AR); SYB_PeakData = IdpInputByte(DIPP_CR_PORT); #endif DIPP_SetBitAJMD(DIPP_CR_R04_AJMD_AUTO); /** 自動初期値モード */ DIPP_SetBitWCOM(IDP_BIT_ON); /** DIPP-ASをシェーディング波形検出期間に移行 */ while ((IdpInputByte(DIPP_SR_PORT) & DIPP_SR_WBSY) == DIPP_SR_WBSY) { /** 検出が終了するまでループ */ wai_tsk(1); } tmpreg = IdpInputByte(DIPP_SR_PORT); /** DIPP-ASのステータスレジスタをリード */ DIPP_SetBitWCOM(IDP_BIT_OFF); /** DIPPを読み取り期間に移行 */ /* ICHOU薄読み対策(PEAKE-OFFが抜けていた) */ DIPP_SetBitPEAKE(IDP_BIT_OFF); /** ピーク値検出回路停止(ピーク値固定) */ DIPP_ReadPeakData(); /** ピーク値を保存する */ /*------------------------------------------------*/ /** DIPPを読み取り終了させます(DIPPSTをOFFします) */ /*------------------------------------------------*/ DIPP_SetBitDIPPST(IDP_BIT_OFF); /* DIPP_ReadInitialRAM( idp_no ); @** 初期値RAMをセーブします */ /* ICHOU薄読み対策 1997/04/25 */ DIPP_ReadInitialRAM( &SYB_InitialRAM[0] ); /** 初期値RAMをセーブします */ DIPP_ReadShadingRAM( &SYB_ShadingRAM[0] ); /** DIPP-ASのシェーディングRAMー>バックアップRAM */ DIPP_Reset(); /** DIPP-ASソフトリセット */ return(OK); } }
void FaxComRelaySetting(void) #endif { #if (PRO_MODEM == R288F) /* Added by H.Kubo 1997/08/06 */ /* パラ接続やめる 保険 */ MDM_SetModemIdle(); /* モデムをアイドル状態にする */ /* モデム内部ステータスLOGの取り込みを終了する By O.Kimoto 1996/04/24 */ #if defined(POPLAR_F) wai_tsk(2); /* 最後のステータスlogをとるため */ #endif MDM_ModemInternalStatusCounter = MODEM_STATUS_TABLE_MAX; #endif /* (PRO_MODEM == R288F) */ /*-------------------*/ /** リレー関係初期化 */ /*-------------------*/ AfterCI_TimerSet(); /* CI検出用 */ #if (PRO_NUMBER_DISPLAY == ENABLE) /* changed by H.Kubo 1998/10/15 */ if( (( AttemptRxModeSwitch == SYS_TEL_FAX_READY) || (AttemptRxModeSwitch == SYS_DIAL_IN_READY ) || (AttemptRxModeSwitch == SYS_MODEM_DIALIN_READY ) ) && (( FaxTelOffHookTEL1Flag == 1 ) || ( FaxTelOffHookTEL2Flag == 1 ))){ /** OFF_HOOK 検出 */ #else if((( AttemptRxModeSwitch == SYS_TEL_FAX_READY) || (AttemptRxModeSwitch == SYS_DIAL_IN_READY )) && (( FaxTelOffHookTEL1Flag == 1 ) || ( FaxTelOffHookTEL2Flag == 1 ))){ /** OFF_HOOK 検出 */ #endif /*------------------------------------*/ /* OFF_HOOK検出時のリレ〜制御 */ /*------------------------------------*/ if( FaxTelOffHookTEL1Flag == 1 ){ /** TEL1 OFF_HOOK */ H_RelayOff(); /** Hリレー OFF */ } if( FaxTelOffHookTEL2Flag == 1 ){ /** TEL2 OFF_HOOK */ L_RelayOff(); /** Lリレー OFF */ } #if (PRO_NCU_TYPE == ANZU_USA_TYPE ) || (PRO_NCU_TYPE == ANZU_GBR_TYPE ) wai_tsk(10); /** add by t.yamaguchi 95.12.07 */ #endif #if defined(POPLAR_H) && defined(JP0)/*(PRO_MODEM == R288F)/* 通信終了時オフフックで電話が切れるのでCMLリレーOFFの前に移動 by O.Kimoto 1999/03/08 */ /*tel/fax待機時送信後の会話予約に応答するとモニタスピーカーやハンドセットからノイズが出る。By Y.Suzuki 2002/07/20*/ /*原因わかってない。*/ MDM_ModemSoftReset(); #endif /* (PRO_MODEM == R288F) */ #if defined(SATSUKI2) || defined(STOCKHM2) /* SATSUKI2も対応します。念のため会話予約の制限を追加します。O.Oshima 2003/10/31 */ /* tel/fax待機時送信後の会話予約に応答するとモニタスピーカーやハンドセットからノイズが出る。By Y.Suzuki 2002/07/20*/ /* 原因わかってない。*/ if (SYS_VoiceCallAccepted) { /* 会話予約に限定するなら==2にするべきかもしれない。*/ MDM_ModemSoftReset(); } #endif CML_RelayOff(); /** CMLリレー OFF */ #if (PRO_NCU_TYPE == HINOKI_TYPE) /* added by H.Hirao 1998/12/25 */ || (defined(POPLAR_H) && defined(JP0))/* By Y.Suzuki 1902/06/26 */ || (defined(SAKAKI) && defined(JP0)) /* SAKAKI2 2002/09/20 By M.Maeda */ AnalogSwitchTONE_Set(); #endif S_RelayOff(); /** Sリレー OFF */ #if (PRO_NCU_TYPE == ANZU_USA_TYPE ) || (PRO_NCU_TYPE == ANZU_GBR_TYPE ) DP_RelayOff(); /** DPリレー OFF */ #endif GenerateRingKeyOff(); /** 疑似ベル用 OFF */ #if defined(DEU) GroundKeyOff(); #endif } else if (SYS_VoiceCallAccepted) { /** 会話予約成立 */ /*------------------------------------*/ /* OFF_HOOK検出時のリレ〜制御 */ /* 1994/09/05 */ /*------------------------------------*/ if( SYS_VoiceCallAccepted == TEL1_OH_DETECT ){ /** TEL1 OFF_HOOK */ H_RelayOff(); /** Hリレー OFF */ } if( SYS_VoiceCallAccepted == TEL2_OH_DETECT ){ /** TEL2 OFF_HOOK */ #if ( PRO_NCU_TYPE == ANZU_USA_TYPE ) || ( PRO_NCU_TYPE == ANZU_GBR_TYPE ) /* アンズUSAにはLリレーが無いのでHリレーをoff */ H_RelayOff(); /* for SEA & GBR add by harada '94/10/3 '95.10.31 T.yamaguchi */ wai_tsk(10); /* add by t.yamaguchi 95.12.07 */ #else L_RelayOff(); /* for SATUKI & KIRI & MOMIJI */ #endif } #if (PRO_MODEM == R288F) /* 通信終了時オフフックで電話が切れるのでCMLリレーOFFの前に移動 by O.Kimoto 1999/03/08 */ MDM_ModemSoftReset(); #endif /* (PRO_MODEM == R288F) */ CML_RelayOff(); /** CMLリレー OFF */ #if (PRO_NCU_TYPE == HINOKI_TYPE) /* added by H.Hirao 1998/12/25 */ || (defined(POPLAR_H) && defined(JP0))/* By Y.Suzuki 1902/06/26 */ || (defined(SAKAKI) && defined(JP0)) /* SAKAKI2 2002/09/20 By M.Maeda */ AnalogSwitchTONE_Set(); #endif S_RelayOff(); /** Sリレー OFF */ #if ( PRO_NCU_TYPE == ANZU_USA_TYPE ) || ( PRO_NCU_TYPE == ANZU_GBR_TYPE ) /* アンズUSAにはLリレーが無いのでHリレーをoff */ DP_RelayOff(); /** DPリレー OFF */ #endif GenerateRingKeyOff(); /** 疑似ベル用 OFF */ #if defined(DEU) GroundKeyOff(); #endif } else{ /** OFF_HOOK なし */ /*------------------------------------*/ /* OFF_HOOKなし時のリレ〜制御 */ /*------------------------------------*/ /* 会話予約成立時のH、LリレーはフェーズDでやっている */ #if ( PRO_NCU_TYPE == ANZU_GBR_TYPE ) #if !defined(GBR) /* 切り替え時の回線瞬断対応 既にGBRは認可通っているためGBR以降の国から対応 1996/09/03 by H.Yagi */ #if (PRO_DIALUP_INTERNET_FAX == DISABLE) /* 1998/04/29 by Y.Tanimoto */ H_RelayOff(); /** Hリレー OFF */ L_RelayOff(); /** Lリレー OFF */ #endif #if defined(FRA) || defined(DEU) || defined(EC1) || defined(EUR) /* by M.HARADA '96/11/14 for transition */ /* 欧州仕様追加 by M.H 1999/09/15 */ #else wai_tsk(1); #endif #endif #endif #if ( PRO_NCU_TYPE == ANZU_USA_TYPE ) #if !defined(USA) /* 切り替え時の回線瞬断対応 既にUSAは認可通っているためUSA以降の国から対応 1996/09/04 by H.Yagi */ H_RelayOff(); /** Hリレー OFF */ L_RelayOff(); /** Lリレー OFF */ wai_tsk(1); #endif #endif #if (0) ** /* アナログスイッチはCMLリレーをOFFしてからトーン側に切りかえること。 ** ** by O.Kimoto 1999/03/08 ** */ ** #if (PRO_NCU_TYPE == HINOKI_TYPE) /* added by H.Hirao 1998/12/25 */ ** AnalogSwitchTONE_Set(); ** #endif #endif #if (PRO_MODEM == R288F) /* 通信終了時オフフックで電話が切れるのでCMLリレーOFFの前に移動 1999.1.29 K.Kawata*/ MDM_ModemSoftReset(); /* モデムリセット 1996/02/24 */ #endif /* (PRO_MODEM == R288F) */ #if defined(JPN) /* 花キューピット仕様(交信終了時の受話器上がり検出せず)で、回線とFAXの間にTEL/FAX切り替えアダプターをはさんでいるユーザー先があり ** CMLを話してからハンドセットを回線に戻すまでに時間がかかってしまい、TEL/FAX切り替えアダプターが回線を話してしまうという不具合(?)が ** 発生した。。ユーザーさん所では、F340からのリプレースで、F340はOKなのに、F350はNGだといわれていて、調べてみると、リレーの制御がF340とF350 ** とでは違うことがわかった。また、上の方には、CMLリレーを放す前にH/Lリレーを放している場合もあるので、それに見習うようにする。 ** ただし、このあたりは各国PTTに関係するので、とりあえず、JPNという条件を入れておきます。 ** (RDC20010095) ** By O.Kimoto 2001/02/22 */ if (!CHK_HANGUP_ALARM_AVAILABLE()) { H_RelayOff(); L_RelayOff(); wai_tsk(10); } #endif CML_RelayOff(); /** CMLリレー OFF */ #if (PRO_REMOTE_DIAL_TRANSFER == ENABLE) /* REMOTE_RX_FUNC */ /*--------------------------------------------------------- ** リモート受信起動後にTEL2をオフフックしておくと通信終了に瞬断して ** しまうことがある。タスクの構成上 NCU_TSK()\InitializeRelay()\H_RelayOff() ** の処理がおこなわれるまでの時間にばらつきがあるためである。 ** そこで、ここではやくもTEL2を回線に接続する */ if ((NCUStatus & TRANSFER_RECIVE) && (NCUStatus & TELEPHONE2_OFF_HOOK) && (TADStatus & REMOTE_RECEIVE)){ L_RelayOff(); } #endif #if (PRO_NCU_TYPE == HINOKI_TYPE) /* added by O.Kimoto 1999/03/08 */ || (defined(POPLAR_H) && defined(JP0))/* By Y.Suzuki 1902/06/26 */ || (defined(SAKAKI) && defined(JP0)) /* SAKAKI2 2002/09/20 By M.Maeda */ AnalogSwitchTONE_Set(); #endif S_RelayOff(); /** Sリレー OFF */ #if ( PRO_NCU_TYPE == ANZU_USA_TYPE ) || ( PRO_NCU_TYPE == ANZU_GBR_TYPE ) /* アンズUSAにはLリレーが無いのでHリレーをoff */ DP_RelayOff(); /** DPリレー OFF */ #endif GenerateRingKeyOff(); /** 疑似ベル用 OFF */ #if defined(DEU) GroundKeyOff(); #endif } CONT_24V_Off(); /* add by m.harada 95.06.23 */ #if (0) /* 通信終了時オフフックで電話が切れるのでCMLリレーOFFの前に移動 1999.1.29 K.Kawata*/ #if (PRO_MODEM == R288F) /* Added by H.Kubo 1997/08/06 */ MDM_ModemSoftReset(); /* モデムリセット 1996/02/24 */ #endif /* (PRO_MODEM == R288F) */ #endif MDM_FilterStandbyMode(); /** モデム・フィルター初期化 */ MonitorSpeakerOff(); /** モニター・スピーカーOFF */ #if defined(POPLAR_H) && defined(JP0)/* V851 モニタスピーカーから異音 By Y.Suzuki 2002/08/12 */ AnalogSwitchTONE_Set(); #endif #if 0 /* 警察FAX DVT_ID2 Deleted by SMuratec 李 2005/11/19 */ @@#if defined (KEISATSU) /* Added by SMuratec 李 2005/06/24 */ @@ if ( (NCU_LineStatus & EXT_LINE_STATUS) == EXT_COM_IN_USE ){ /* 拡張回線に通信した場合 */ @@ NCU_LineStatus &= ~EXT_LINE_STATUS; @@ NCU_LineStatus |= (EXT_LINE_STATUS & EXT_NOT_USE); @@ } @@ else if ( (NCU_LineStatus & STD_LINE_STATUS) == STD_COM_IN_USE ) { /* 標準回線に通信した場合 */ @@ NCU_LineStatus &= ~STD_LINE_STATUS; @@ NCU_LineStatus |= (STD_LINE_STATUS & STD_NOT_USE); @@ } @@#endif /* defined (KEISATSU) */ #endif } #if 0 /************************************************************************* module :[DIS受信まで回線モニタをONする] function :[ 1. 東南アジアのみ ] return :[] common :[] condition :[] comment :[] machine :[V53,H8/300] language :[MS-C(Ver.6.0),H8/300(日立マイコン)] keyword :[FCM] date :[1994/06/13] author :[村田] *************************************************************************/ void FaxComUntilRecDISLineON(void) { if (CHK_UNI_UntilReceiveDISLineON()) { MonitorSpeakerOn(); /** 回線モニタON */ } } #endif /************************************************************************* module :[DIS受信で回線モニタをOFFする] function :[ 1. 東南アジアのみ ] return :[] common :[] condition :[] comment :[] machine :[V53,H8/300] language :[MS-C(Ver.6.0),H8/300(日立マイコン)] keyword :[FCM] date :[1994/06/13] author :[村田] *************************************************************************/ void FaxComUntilRecDISLineOFF(void) { if (CHK_UNI_UntilReceiveDISLineON() != 0) { if (CHK_LineMonitor() == 0) { MonitorSpeakerOff(); /** 回線モニタOFF */ } } } #if (PRO_QUICK_TX_TEST == ENABLE) /* 1998/10/15 Y.Murata for KAKI */ void FaxComQuickTxLineON(void) { /* さらにソフトSWでクイック時のモニタON/OFFのSW設ける必要有り */ if (FCM_QuickMemoryTxExecute) { MonitorSpeakerOn(); /** 回線モニタON */ } } void FaxComQuickTxLineOFF(void) { /* さらにソフトSWでクイック時のモニタON/OFFのSW設ける必要有り */ if (FCM_QuickMemoryTxExecute) { if (CHK_LineMonitor() == 0) { MonitorSpeakerOff(); /** 回線モニタOFF */ } } }
/*--------------------*/ void near MDM_DTMF_Test(void) { UWORD offset; UWORD base; UBYTE value; /* ソフトリセット */ MDM_SoftResetModem(); #if defined (KEISATSU) /* 警察FAX DVT_ID15 Modify by SMuratec K.W.Q 2005/11/05 */ if (SYS_FactoryModem.Item == SYS_OPT_MDM_DTMF_TEST) { ModemRelay_Off(); } else if (SYS_FactoryModem.Item == SYS_OPT_MDM_KEIDEN_DTMF_TEST){ ModemRelay_On(); } #endif /* End of (defined (KEISATSU)) */ MDM_FactoryFskMenu = 0; MDM_FactoryFuncRelaySet(); /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ if (SYS_FactoryModem.Item == OPT_MDM_FACTORY_TEST_END) { MDM_SetIO(POS_RTS,OFF); /* 送信要求解除 */ MDM_DTMF_Close(); /* 送信レベルを再セット, FSK受信モードにコンフィギュ */ MDM_FactoryFskMenu = 0; } /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ else if (SYS_FactoryModem.Kind == OPT_MDM_DTMF_STOP) { MDM_SetIO(POS_RTS,OFF); MDM_DTMF_Close(); MDM_FactoryFskMenu = 0; } else { if (MDM_FactoryFskMenu == 0xFF) { MDM_SetIO(POS_RTS,OFF); MDM_DTMF_Close(); wai_tsk(100/10); } MDM_FactoryFskMenu = 0xFF; /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ if (SYS_FactoryModem.Kind <= OPT_MDM_DTMF_SHARP) { MDM_DTMF_Open(); /* 送信レベル0dmセット, Dual Toneモードにコンフィギュ */ /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ MDM_DTMF_Set((UBYTE)(SYS_FactoryModem.Kind)); /* 高低周波数・送出レベルセット */ MDM_SetIO(POS_RTS,ON); /* 送信要求ON */ } else { /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ if ((SYS_FactoryModem.Kind >= OPT_MDM_DTMF_ROW1) && (SYS_FactoryModem.Kind <= OPT_MDM_DTMF_COL4)) { base = 0; offset = OPT_MDM_DTMF_ROW1 - base; /* 12 */ /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ value = (UBYTE)(SYS_FactoryModem.Kind - offset); MDM_DTMF_Open(); #if defined (KEISATSU) /* 警察FAX DVT_ID15 Modify by SMuratec K.W.Q 2005/11/05 */ if (SYS_FactoryModem.Item == SYS_OPT_MDM_DTMF_TEST) { MDM_DTMF_SingleSet(value); } else if (SYS_FactoryModem.Item == SYS_OPT_MDM_KEIDEN_DTMF_TEST){ MDM_KEIDEN_DTMF_SingleSet(value); } #else MDM_DTMF_SingleSet(value); #endif /* End of (defined (KEISATSU)) */ MDM_SetIO(POS_RTS,ON); } } } }
void near MDM_TonalTest(void) { MESSAGE_t *msg; UBYTE conf_data; UBYTE boo_data; UWORD offset; UWORD base; UWORD value; UWORD dummy; UWORD i; UBYTE debug; #if defined (KEISATSU) /* 警察FAX DVT_ID15 Modify by SMuratec K.W.Q 2005/11/05 */ if (SYS_FactoryModem.Item == SYS_OPT_MDM_TONAL_TEST) { ModemRelay_Off(); } else if (SYS_FactoryModem.Item == SYS_OPT_MDM_KEIDEN_TONAL_TEST){ ModemRelay_On(); } #endif /* End of (defined (KEISATSU)) */ MDM_FactoryFuncRelaySet(); if (SYS_FactoryModem.Item == OPT_MDM_FACTORY_TEST_END) { /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ MDM_FactoryStopCheck(); SYS_FactoryFuncStatus = 0; } /* Stop */ else if (SYS_FactoryModem.Kind == OPT_MDM_TONAL_STOP) { /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ MDM_FactoryStopCheck(); SYS_FactoryFuncStatus = 0; } /* トーン */ else if (SYS_FactoryModem.Kind == OPT_MDM_TONAL_NONE) { /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ if (SYS_FactoryFuncStatus == TEST_TONE) { MDM_SingleToneOff(); } else { if (SYS_FactoryFuncStatus) { MDM_FactoryStopCheck(); } } SYS_FactoryFuncStatus = TEST_TONE; } /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ else if ((SYS_FactoryModem.Kind >= OPT_MDM_TONAL_462HZ) && (SYS_FactoryModem.Kind <= OPT_MDM_TONAL_2100HZ)) { if (SYS_FactoryFuncStatus == TEST_TONE) { MDM_SingleToneOff(); /* ソフトリセット */ MDM_SoftResetModem(); if (CHK_LineMonitor()) { MDM_SetVolumeAttenuationLevel(SYS_VOLUME_MAXIMUM); } } else { if (SYS_FactoryFuncStatus) { MDM_FactoryStopCheck(); } } SYS_FactoryFuncStatus = TEST_TONE; value = SYS_FactoryModem.Kind -1; /* Modified by H.Kubo 1997/06/26 */ /* 通信中でないので、FCM_PtnrChk_T23Attenation() はメモリスイッチの値を ** 反映してない。そのため、メモリスイッチの値を直接参照して送出レベルを設定する。 */ MDM_TransmitLevelSet(SYS_MemorySwitch[11] & ATTENATION); MDM_SingleToneOn((UBYTE) value); } /* FSK */ /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ /* FSK_W1_B1 1999/12/27 Y.Murata */ else if ((SYS_FactoryModem.Kind == OPT_MDM_TONAL_FSK_WHITE) || (SYS_FactoryModem.Kind == OPT_MDM_TONAL_FSK_BLACK) || (SYS_FactoryModem.Kind == OPT_MDM_TONAL_FSK_W1_B1)) { if (SYS_FactoryFuncStatus == TEST_FSK) { SYS_PixStopFlag = 1; rcv_msg(mbxno.FIP, &msg); if (tskno_MDM_FskTest != 0xFFFF) { del_tsk(&tskno_MDM_FskTest); } wai_tsk(1); } else { if (SYS_FactoryFuncStatus) { MDM_FactoryStopCheck(); } } SYS_PixStopFlag = 0; SYS_FactoryFuncStatus = TEST_FSK; /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ if (SYS_FactoryModem.Kind == OPT_MDM_TONAL_FSK_WHITE) { MDM_FactoryFskMenu = FSK_WHITE; cre_tsk(&tskno_MDM_FskTest, TSK_MDM_FSKTXTASK, &MDM_FactoryFskMenu); } /* FSK_W1_B1 1999/12/27 Y.Murata */ else if (SYS_FactoryModem.Kind == OPT_MDM_TONAL_FSK_W1_B1) { MDM_FactoryFskMenu = FSK_W1_B1; cre_tsk(&tskno_MDM_FskTest, TSK_MDM_FSKTXTASK, &MDM_FactoryFskMenu); } else { MDM_FactoryFskMenu = FSK_BLACK; cre_tsk(&tskno_MDM_FskTest, TSK_MDM_FSKTXTASK, &MDM_FactoryFskMenu); } } /* G3 */ /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ else if ((SYS_FactoryModem.Kind >= OPT_MDM_TONAL_V27_1200_2400) && (SYS_FactoryModem.Kind <= OPT_MDM_TONAL_V17_2400_14400)){ if (SYS_FactoryFuncStatus == TEST_G3) { SYS_PixStopFlag = 1; rcv_msg(mbxno.FIP, &msg); if (tskno_MDM_PixTest != 0xFFFF) { del_tsk(&tskno_MDM_PixTest); } /* MDM_SetIO(POS_RTS,OFF); */ wai_tsk(1); } else { if (SYS_FactoryFuncStatus) { MDM_FactoryStopCheck(); } } SYS_PixStopFlag = 0; SYS_FactoryFuncStatus = TEST_G3; /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ switch (SYS_FactoryModem.Kind) { case OPT_MDM_TONAL_V27_1200_2400: FactoryPixData.baud_rate = BPS2400_V27; break; case OPT_MDM_TONAL_V27_1600_4800: FactoryPixData.baud_rate = BPS4800_V27; break; case OPT_MDM_TONAL_V29_2400_7200: FactoryPixData.baud_rate = BPS7200_V29; break; case OPT_MDM_TONAL_V29_2400_9600: FactoryPixData.baud_rate = BPS9600_V29; break; case OPT_MDM_TONAL_V17_2400_7200: FactoryPixData.baud_rate = BPS7200_V17; break; case OPT_MDM_TONAL_V17_2400_9600: FactoryPixData.baud_rate = BPS9600_V17; break; case OPT_MDM_TONAL_V17_2400_12000: FactoryPixData.baud_rate = BPS12000_V17; break; case OPT_MDM_TONAL_V17_2400_14400: FactoryPixData.baud_rate = BPS14400_V17; break; } /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ FactoryPixData.pix_retio = (UBYTE)SYS_FactoryModem.PIX_Pattern; cre_tsk(&tskno_MDM_PixTest, TSK_MDM_PIXTXTASK, &FactoryPixData); } /* #if defined(POPLAR_F) */ #if (PRO_VOICE_ANSWER == ENABLE) && (PRO_MODEM == R288F) /* NTT音声応答 && ORANGE以外のモデム Modified by J.Kishida 2002/09/09 */ /* Voice */ else if (SYS_FactoryModem.Kind == OPT_MDM_TONAL_VOICE) { if (SYS_FactoryFuncStatus == TEST_VOICE) { /* Nothing */ } else { if (SYS_FactoryFuncStatus) { MDM_FactoryStopCheck(); } SYS_PixStopFlag = 0; SYS_FactoryFuncStatus = TEST_VOICE; if (tskno_MDM_VoiceTest == 0xFFFF) { cre_tsk(&tskno_MDM_VoiceTest, TSK_MDM_VOICETXTASK, 0); } } } /* Melody */ else if (SYS_FactoryModem.Kind == OPT_MDM_TONAL_VOICE2) { if (SYS_FactoryFuncStatus == TEST_VOICE2) { /* Nothing */ } else { if (SYS_FactoryFuncStatus) { MDM_FactoryStopCheck(); } } SYS_FactoryFuncStatus = TEST_VOICE2; StartSendingMelodyToLine(); } #else /* Voice */ /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ else if (SYS_FactoryModem.Kind == OPT_MDM_TONAL_VOICE) { if (SYS_FactoryFuncStatus == TEST_VOICE) { /* Nothing */ } else { if (SYS_FactoryFuncStatus) { MDM_FactoryStopCheck(); } } SYS_FactoryFuncStatus = TEST_VOICE; StartSendingMelodyToLine(); } #endif else { /* V34 */ if (SYS_FactoryFuncStatus == TEST_V34) { /* ソフトリセット */ MDM_SetIO(POS_DTR,OFF); wai_tsk(100/10); MDM_SoftResetModem(); } else { if (SYS_FactoryFuncStatus) { MDM_FactoryStopCheck(); } } SYS_FactoryFuncStatus = TEST_V34; /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ if ((SYS_FactoryModem.Kind >= OPT_MDM_TONAL_V34_2400_2400) && (SYS_FactoryModem.Kind <= OPT_MDM_TONAL_V34_2400_21600)) { base = 0xC1; offset = base - OPT_MDM_TONAL_V34_2400_2400; /* 174 */ boo_data = 0; conf_data = (UBYTE)(offset + SYS_FactoryModem.Kind); /* Modified by H.Kubo 1997/06/26 */ MDM_TxV34ServiceFunction(boo_data, conf_data); } /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ else if ((SYS_FactoryModem.Kind >= OPT_MDM_TONAL_V34_2800_4800) && (SYS_FactoryModem.Kind <= OPT_MDM_TONAL_V34_2800_26400)) { base = 0xC2; offset = base - OPT_MDM_TONAL_V34_2800_4800; /* 166 */ boo_data = 2; conf_data = (UBYTE)(offset + SYS_FactoryModem.Kind); /* Modified by H.Kubo 1997/06/26 */ MDM_TxV34ServiceFunction(boo_data, conf_data); } /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ else if ((SYS_FactoryModem.Kind >= OPT_MDM_TONAL_V34_3000_4800) && (SYS_FactoryModem.Kind <= OPT_MDM_TONAL_V34_3000_28800)) { base = 0xC2; offset = base - OPT_MDM_TONAL_V34_3000_4800; /* 156 */ boo_data = 3; conf_data = (UBYTE)(offset + SYS_FactoryModem.Kind); /* Modified by H.Kubo 1997/06/26 */ MDM_TxV34ServiceFunction(boo_data, conf_data); } /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ else if ((SYS_FactoryModem.Kind >= OPT_MDM_TONAL_V34_3200_4800) && (SYS_FactoryModem.Kind <= OPT_MDM_TONAL_V34_3200_31200)) { base = 0xC2; offset = base - OPT_MDM_TONAL_V34_3200_4800; /* 145 */ boo_data = 4; conf_data = (UBYTE)(offset + SYS_FactoryModem.Kind); /* Modified by H.Kubo 1997/06/26 */ MDM_TxV34ServiceFunction(boo_data, conf_data); } /* Modified by H. Kubo for POPLAR_H 1997/06/17 */ else if ((SYS_FactoryModem.Kind >= OPT_MDM_TONAL_V34_3429_4800) && (SYS_FactoryModem.Kind <= OPT_MDM_TONAL_V34_3429_33600)) { base = 0xC2; offset = base - OPT_MDM_TONAL_V34_3429_4800; /* 133 */ boo_data = 5; conf_data = (UBYTE)(offset + SYS_FactoryModem.Kind); /* Modified by H.Kubo 1997/06/26 */ MDM_TxV34ServiceFunction(boo_data, conf_data); } } }
/************************************************************************* module :[サービスファンクション用画データ送出] function :[ 1. ] return :[] common :[] condition :[] comment :[] date :[1994/05/06] author :[曽根岡拓] *************************************************************************/ void MDM_PixTxTask(struct ServiceFuncPixData_t *pixdata) { MESSAGE_t Modem; UBYTE count; UWORD i; InitializeModemWork(); MDM_ModemInitialize(); /* ** ROCKWELL製 28.8K */ /* モデム救済タスク起動 By O.Kimoto 1998/02/03 */ if (tskno_MDM_ModemRecoverTask == 0xffff) { cre_tsk(&tskno_MDM_ModemRecoverTask, TSK_MDM_MODEMRECOVERTASK, 0); } /* Added by H.Kubo 1997/12/25 */ /* 通信中でないので、FCM_PtnrChk_T23Attenation() はメモリスイッチの値を ** 反映してない。そのため、メモリスイッチの値を直接参照して送出レベルを設定する。 */ MDM_TransmitLevelSet(SYS_MemorySwitch[11] & ATTENATION); /* スピーカーの設定 1997/03/18 Y.Murata */ if (CHK_LineMonitor()) { MDM_SetVolumeAttenuationLevel(SYS_VOLUME_MAXIMUM); } ModemTypeSet(pixdata->baud_rate); /** モデムタイプ、速度設定 */ ModemBlock.Mode = MODE_TX_TCF; /** 交信モードを送信G3に設定 */ /* Modified by H. Kubo for POPLAR_H, 1997/06/17 */ DMA_RequestMask(DMA_CH_TX); /* モデムV53DMAマスク設定 */ ModemConfig(WRITE_MODE); /** モデムコンフィグレーション実行 */ count = 0; for (i = 0; i < 255; i++) { MDM_ModemBuffer[0][i] = PixTestPatternTable[pixdata->pix_retio][count]; count++; if (count >= 5) { count = 0; } } ServiceFuncTx = TRUE; #if (PRO_CLASS1 == ENABLE) /* Changed by H.Kubo 1998/03/04 */ TxG3_Write(MDM_ModemBuffer[0], MDM_ModemDmaSize); /** G3送信モデムライト(送出モデムバッファ先頭アドレス/データ数登録) *//** 256 Bytes **/ #else TxG3_Write(MDM_ModemBuffer[0], MODEM_DMA_SIZE); /** G3送信モデムライト(送出モデムバッファ先頭アドレス/データ数登録) *//** 256 Bytes **/ #endif while (1) { /** 無限ループ */ if (SYS_PixStopFlag == 1) { /** 画データ送出ストップの時 */ ModemControl.Status |= STAT_EMPTYPT; /** モデムステータス、最終フレーム登録完了 */ break; } wai_tsk(50/10); /** タスクウェイト50ms */ } /* Modified by H. Kubo for POPLAR_H, 1997/06/17 */ DMA_RequestMask(DMA_CH_TX); /** V53DMAマスク */ /* Modified by H. Kubo 1997/06/23 */ DMA_AutoInitializeDisable(DMA_CH_TX); /** V53DMAオートイニシャライズOFF */ ServiceFuncTx = FALSE; /* add 2line 1996/12/12 Y.M */ MDM_SetIO(POS_RTS,OFF); wai_tsk(3); /* at least 15ms */ MDM_InitialConfig(); /** モデムクローズ */ /* ** ROCKWELL製 28.8K */ /* モデム救済タスク起動 By O.Kimoto 1998/02/03 */ if (tskno_MDM_ModemRecoverTask != 0xffff) { del_tsk(&tskno_MDM_ModemRecoverTask); } Modem.Message = MSG_MODEM_STOP; snd_msg(mbxno.FIP, &Modem); /** オペレーションタスクへメッセージ送信 */ wai_tsk(0xffff); /** 無限タスクウェイト */ }
void PRN_CheckTonerTask(void) /* 190,1 */ { wai_tsk(0xffff); }