Versions Compared

Key

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

...

Overall Feature Description
The current implementation of the Dialogic Brooktrout product provides support for two T4 timer modes. The modes are set via the keyword t4_timer_mode in the user configuration file. Mode 0 is the original mode which will adapt the T4 timer using an algorithm based on the attempt number, the duration to receive the last response or the T4 timeout value if no response is received and the T4 timer value which was used to set the T4 timer after sending a command to the remote fax machine. Mode 1 is a new mode which was implemented recently, which initializes the T4 timer value but doesn't adapt the T4 timer.
For mode 0 (t4_timer_mode = 0) if both T4_recv_timer and T4_xmit_timer are not in the user configuration file or both have a value of 0 the T4 timer values will be initialized to a value based on the media type and manual or automatic fax operation, and will adapt to network conditions. If one of these keywords has a value other than 0 in the user configuration file, then the T4 timer will use this value (limited to 3,000 to 15,000 ms) for the T4 timer values and will not adapt.For mode 1 (t4_timer_mode = 1) if both T4_recv_timer and T4_xmit_timer are not in the user configuration file or both have a value of 0 the T4 timer initialization will not use this value to initialize the T4 timer values. If one of these keywords has a value other than 0 in the user configuration file, then its value (limited to 3,000 to 15,000 ms) will be compared to the third T4 timer value and if it is greater than or equal it will set all three T4 timer values equal to the keyword value. If it is less than the third T4 timer value it will set the first T4 timer value equal to the keyword, the second T4 timer value equal to either the third T4 timer value (if the first T4 timer value plus the T4 timer increment is greater than or equal to the third T4 timer value) or to the first T4 timer value plus the T4 timer increment (if the first T4 timer value plus the T4 timer increment is less than the third T4 timer value). The third T4 timer value will be set depending on whether the fax call is doing T.38 or G.711 pass through to a fixed value. There is no adaptation for mode 1 of the T4 timer. 
 
For the new mode 2 (t4_timer_mode = 2) there is only one T4 timer value for the different attempts, instead of three. In this case, if both T4_recv_timer and T4_xmit_timer are not in the user configuration file or both have a value of 0 the T4 timer value will be initialized to a value based on the media type and manual or automatic fax operation. If one of these keywords has a value other than 0 in the user configuration file, then the T4 timer will use this value (limited to 3,000 to 15,000 ms) for the T4 timer value. In this mode, the firmware does not do any T4 timer adaptation itself. An event is sent to the host application which informs the host application of the attempt number which just took place, the duration to receive the last response or the T4 timeout value if no response is received and the current value of the T4 timer setting. The host application would then send an adapted T4 timer value (limited by the firmware to 3,000 to 15,000 ms) for the next command response exchange.
The end user application will need to use the existing macro LINE_SET_INCOMING_CMD_FUNC(lp. t4TimerProcessEvent); where the parameter t4TimerProcessEvent is a function which checks if the received event is from the fax facility and has a command specifier indicating it is a FAX_T4_ADAPT_INFO_EVENT. If it is, then the new API function BfvFaxT4TimerParams(lp, &args_fax) can be called, with one of the new members args_fax.t4TimerValue equal to 0 which indicates to the function that it should obtain the values of the three new members args_fax.t4TimerValue, args_fax.t4Duration and args_fax.t4Attempt. Once these three values have been obtained, the t4TimerProcessEvent(BTLINE *lp, struct args_packet *args) function can calculate a new value for the T4 timer and set args_fax.t4TimerValue equal to this value and then call BfvFaxT4TimerParams(lp, &args_fax) which will send a command to the firmware to set the new T4 timer value.

...