Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...



Sample Call Flows
Below are a couple call flows depicting the use of the new mode 2.

Call Flow 1
Normal Call Scenario
User Application Transmitter Receiver
CSI.DIS
TSI.DCS.TCF T4 timer value set
using initialized value
T4 Timer Event CFR
t4TimerProcessEvent(BTLINE *lp, struct args_packet *args) is called in the user application which then calls BfvFaxT4TimerParams(lp, &args_fax) to obtain
the T4 event attempt number (e.g. 0), duration (e.g. 156 ms) and current T4 timer value information (e.g. 5120 ms).
After obtaining the T4 event information, the user application optionally sets the args_fax.t4TimerValue and calls BfvFaxT4TimerParams(lp, &args_fax) to set the newly calculated T4 timer value based on the attempt number, duration and/or the current T4 timer value information.
Optional T4 Set
Command
IMAGE
EOP T4 timer value set
using newly
calculated value.
T4 Timer Event MCF
t4TimerProcessEvent(BTLINE *lp, struct args_packet *args) is called in the user application which then calls BfvFaxT4TimerParams(lp, &args_fax) to obtain
the T4 event attempt number (e.g. 0), duration (e.g. 155 ms) and current T4 timer value information (e.g. 5120 ms).
After obtaining the T4 event information, the user application optionally sets the args_fax.t4TimerValue and calls Image AddedImage AddedImage AddedImage Added 
Sample Application Coding
Set the function which will be called when an event is received by the host code:
LINE_SET_INCOMING_CMD_FUNC(lp, t4TimerProcessEvent);
The following is the function which is called when any event is received by the host code. The function will check for the T4 timer event.
void t4TimerProcessEvent(BTLINE *lp, struct args_packet *args)
{
struct args_fax args_fax;
struct args_packet args_pkt;
unsigned short t4TimerValue;
int t4Duration;
int t4Attempt;

// Check to see if the event received is from the fax facility and is the
// T4 adaptation information event.
if ((args->facility == MILL_FACILITY_FAX) &&
(args->cmd_verb == MILL_VERB_EVENT) &&
(args->cmd_specifier == FAX_T4_ADAPT_INFO_EVENT))
{
// Obtain the current T4 timer value, the T4 duration to receive
// a response or T4 time out and the T4 attempt.
BT_ZERO(args_fax);
BfvFaxT4TimerParams(lp, &args_fax) to set the newly calculated T4 timer value based on the attempt number, duration and/or the current T4 timer value information.
Optional T4 Set
Command
DCN
Call Flow 2
Call which doesn't receive the CFR after the transmitter sends the first two TSI.DCS.TCF sequences
User Application Transmitter Receiver
CSI.DIS
TSI.DCS.TCF T4 timer value set
using initialized value
T4 Timer Event T4 Time Out
t4TimerProcessEvent(BTLINE *lp, struct args_packet *args) is called in the user application which then calls BfvFaxT4TimerParams(lp, &args_fax) to obtain
the T4 event attempt number (e.g. 0), duration (e.g. 5134 ms) and current T4 timer value information (e.g. 5120 ms).
After obtaining the T4 event information, the user application optionally sets the args_fax.t4TimerValue and calls BfvFaxT4TimerParams(lp, &args_fax) to set the newly calculated T4 timer value based on the attempt number, duration and/or the current T4 timer value information.
Optional T4 Set
Command
TSI.DCS.TCF T4 timer value set
using initialized value
T4 Timer Event T4 Time Out
t4TimerProcessEvent(BTLINE *lp, struct args_packet *args) is called in the user application which then calls BfvFaxT4TimerParams(lp, &args_fax) to obtain
the T4 event attempt number (e.g. 1), duration (e.g. 5133 ms) and current T4 timer value information (e.g. 5120 ms).
After obtaining the T4 event information, the user application optionally sets the args_fax.t4TimerValue and calls BfvFaxT4TimerParams(lp, &args_fax) to set the newly calculated T4 timer value based on the attempt number, duration and/or the current T4 timer value information.
Optional T4 Set
Command
TSI.DCS.TCF T4 timer value set
using initialized value
T4 Timer Event CFR
t4TimerProcessEvent(BTLINE *lp, struct args_packet *args) is called in the user application which then calls BfvFaxT4TimerParams(lp, &args_fax) to obtain
the T4 event attempt number (e.g. 2), duration (e.g. 156 ms) and current T4 timer value information (e.g. 4620 ms).
After obtaining the T4 event information, the user application optionally sets the args_fax.t4TimerValue and calls BfvFaxT4TimerParams(lp, &args_fax) to set the newly calculated T4 timer value based on the attempt number, duration and/or the current T4 timer value information.
Optional T4 Set
Command
IMAGE
EOP T4 timer value set
using newly
calculated value.
T4 Timer Event MCF
t4TimerProcessEvent(BTLINE *lp, struct args_packet *args) is called in the user application which then calls BfvFaxT4TimerParams(lp, &args_fax) to obtain
the T4 event attempt number (e.g. 0), duration (e.g. 156 ms) and current T4 timer value information (e.g. 4620 ms).
After obtaining the T4 event information, the user application optionally sets the args_fax.t4TimerValue and calls BfvFaxT4TimerParams(lp, &args_fax) to set the newly calculated T4 timer value based on the attempt number, duration and/or the current T4 timer value information.
Optional T4 Set
Command
DCN
Sample Application Coding
Set the function which will be called when an event is received by the host code:
LINE_SET_INCOMING_CMD_FUNC(lp, t4TimerProcessEvent);
The following is the function which is called when any event is received by the host code. The function will check for the T4 timer event.
void t4TimerProcessEvent(BTLINE *lp, struct args_packet *args)
{
struct args_fax args_fax;
struct args_packet args_pkt;
unsigned short t4TimerValue;
int t4Duration;
int t4Attempt;
// Check to see if the event received is from the fax facility and is the
// T4 adaptation information event.
if ((args->facility == MILL_FACILITY_FAX) &&
(args->cmd_verb == MILL_VERB_EVENT) &&
(args->cmd_specifier == FAX_T4_ADAPT_INFO_EVENT))
{
// Obtain the current T4 timer value, the T4 duration to receive
// a response or T4 time out and the T4 attempt.
BT_ZERO(args_fax);
BfvFaxT4TimerParams(lp, &args_fax);
t4TimerValue = args_fax.t4TimerValue;
t4Duration = args_fax.t4Duration;
t4Attempt = args_fax.t4Attempt;
printf("t4TimerProcessEvent T4TimerValue %d duration %d attempt %d\n",
args_fax.t4TimerValue,
args_fax.t4Duration,
args_fax.t4Attempt
);
// Set the T4 timer value to a new value. For example, the following
// checks to see if the attempt just completed is 1 and if so it will set the
// T4 timer value to the existing T4 timer value minus 500 ms.
// End user can change the following to set the T4 timer value to a new
// value according to some algorithm determined by the end user
if (t4Attempt == 1)
{
BT_ZERO(args_fax);
args_fax.t4TimerValue = t4TimerValue - 500;
printf("t4TimerProcessEvent Set T4TimerValue %d\n",
args_fax.t4TimerValue
);
BfvFaxT4TimerParams(lp, &args_fax);
}
}
}
Product Areas Affected

  • This feature will affect the T4 timer operation in a fax session if the keyword t4_timer_mode is set to 2.

...

  • The args_fax structure in the BFV API will be modified with 3 new fields, t4TimerValue, t4Duration and t4Attempt.
  • A new API function BfvFaxT4TimerParams(MILL_LINE *lp, struct args_fax *args) will be added.

...

  • None

...

  • The Dialogic Brooktrout Bfv API Reference Manual will be updated with documentation of the new API function BfvFaxT4TimerParams(MILL_LINE *lp, struct args_fax *args)
  • The user configuration keywords T4_recv_timer, T4_xmit_timer and t4_timer_mode will need to be updated.
  • If the Configtool is modified to add the t4_timer_mode keyword, the Dialogic Brooktrout Fax Products SDK Installation and Configuration Guide will need to be updated.
  • Boston Series Command Set document (CmndSet.doc) with the new T4 command and event.

...

  • None

...

  • None

...

  • Call Flow 1 Test

...

  • Call Flow 2 Test

Transmitter Receiver
CSI.DIS
TSI.DCS.TCF
faxSetAdaptiveT4Timer: attempt 0 T4TimerValue 5120
T4 Time Out
faxUpdateAdaptiveT4Timer: attempt 0 duration 5133 T4TimerValue 5120
t4TimerProcessEvent: attempt 0 duration 5133 T4TimerValue 5120
TSI.DCS.TCF
faxSetAdaptiveT4Timer: attempt 1 T4TimerValue 5120
T4 Time Out
faxUpdateAdaptiveT4Timer: attempt 1 duration 5124 T4TimerValue 5120
t4TimerProcessEvent: attempt 1 duration 5124 T4TimerValue 5120
t4TimerProcessEvent: Set T4TimerValue 4620
faxT4TimerValue: T4TimerValue 4620
TSI.DCS.TCF
faxSetAdaptiveT4Timer: attempt 2 T4TimerValue 4620
CFR
faxUpdateAdaptiveT4Timer: attempt 2 duration 158 T4TimerValue 4620
t4TimerProcessEvent: attempt 2 duration 158 T4TimerValue 4620
IMAGE
EOP
faxSetAdaptiveT4Timer: attempt 0 T4TimerValue 4620
MCF
faxUpdateAdaptiveT4Timer: attempt 0 duration 156 T4TimerValue 4620
t4TimerProcessEvent: attempt 0 duration 156 T4TimerValue 4620
DCN ;
t4TimerValue = args_fax.t4TimerValue;
t4Duration = args_fax.t4Duration;
t4Attempt = args_fax.t4Attempt;
printf("t4TimerProcessEvent T4TimerValue %d duration %d attempt %d\n",
args_fax.t4TimerValue,
args_fax.t4Duration,
args_fax.t4Attempt
);
// Set the T4 timer value to a new value. For example, the following
// checks to see if the attempt just completed is 1 and if so it will set the
// T4 timer value to the existing T4 timer value minus 500 ms.
// End user can change the following to set the T4 timer value to a new
// value according to some algorithm determined by the end user
if (t4Attempt == 1)
{
BT_ZERO(args_fax);
args_fax.t4TimerValue = t4TimerValue - 500;
printf("t4TimerProcessEvent Set T4TimerValue %d\n",
args_fax.t4TimerValue
);
BfvFaxT4TimerParams(lp, &args_fax);
}
}
}
Product Areas Affected

  • This feature will affect the T4 timer operation in a fax session if the keyword t4_timer_mode is set to 2.


API/Library Change(s)

  • The args_fax structure in the BFV API will be modified with 3 new fields, t4TimerValue, t4Duration and t4Attempt.
  • A new API function BfvFaxT4TimerParams(MILL_LINE *lp, struct args_fax *args) will be added.


Performance Change(s)

  • None


Documentation Change(s)

  • The Dialogic Brooktrout Bfv API Reference Manual will be updated with documentation of the new API function BfvFaxT4TimerParams(MILL_LINE *lp, struct args_fax *args)
  • The user configuration keywords T4_recv_timer, T4_xmit_timer and t4_timer_mode will need to be updated.
  • If the Configtool is modified to add the t4_timer_mode keyword, the Dialogic Brooktrout Fax Products SDK Installation and Configuration Guide will need to be updated.
  • Boston Series Command Set document (CmndSet.doc) with the new T4 command and event.


Configuration Change(s)

  • None


Build and Installation Change(s)

  • None


Test Scenario(s)
The following testing shall be done at a minimum. The two sample call flows shown above will be tested and it will be confirmed that the results are what is expected. In order to perform the testing, the firmware will need to be modified in several ways. In the firmware function faxSetAdaptiveT4Timer(), faxSendDebug will be called to send to the API debug log the attempt number and the value to be used for setting the T4 timer. In the firmware function faxUpdateAdaptiveT4Timer(), faxSendDebug will be called to send to the API debug log the attempt number, the duration to receive the response or the T4 time out if no response is received and the current T4 timer value. In the firmware function faxT4TimerValue(), faxSendDebug will be called to send to the API debug log the new T4 timer value sent to the firmware from the host application.
For the sample call flow number 2, the firmware needs to be modified so that the transmitter ignores the first two CFR responses to the TSI.DCS.TCF sequence.
The sample application for this enhancement based on the sample application fax.c will be modified as described above under Sample Application Coding. It will print to the API debug log the attempt number, the duration to receive the response or the T4 time out if no response is received and the current T4 timer value. It will also print to the API debug log the new T4 timer value sent to the firmware if it is in fact sent.
The testing will be performed on an SR140 between channels 0 and 1. The keyword t4_timer_mode in the user configuration file btcall.cfg needs to be set to 2. The two keywords t4_xmit_timer and t4_recv_timer should not be placed in the user configuration file. The media type used should be T.38. The sample application faxt4.c for this enhancement which is based on fax.c shall be used for at least the transmit side. The results shown below are for the transmit side only. The two call sample flows will be tested for both V.17 and V.34. The results below show the expected results for V.17. Similar results are expected for V.34, but the durations might be different.
Filelist will also be run on an SR140 doing 60 channels to 60 channels for 15 minutes using firmware which has not been modified to ignore the first couple CFRs. It will be confirmed that the results are OK.

Results embedded in the API debug log similar to the results shown below in red are expected.

Image AddedImage AddedImage Added
 
 
Target Release
SDK 6.7.3
Backward Propagation Release(s)
None
Risks
None