Issues about Application
Contents
- 1 When debugging, the application is deliberately forced to end and succeeding re-initialization fails. Why?
- 2 Do Synway boards support multi-thread programming?
- 3 Can two applications supported by the same driver be run on one system?
- 4 When the application generates a smaller buffer for recording and uses a dual-buffer for playback, noise is heard in playback. Why?
- 5 Why does voice become intermittent during a playback with DTMF signals available on the line?
- 6 How to transfer an incoming call to an analog trunk channel to a call-agent?
- 7 How to send CallerID via a station channel to a phone that can receive CallerID?
- 8 Which programming platforms does the driver work on?
- 9 What is the difference between the programming modes CALLBACK and EVENT_POLLING?
- 10 Why does the application sometimes not detect the change in call or monitoring status?
- 11 What is the difference between CIC and Ch?
- 12 The application program fails to invoke the function SsmRecToFile and the returned message says "Error creating file! ". Why?
When debugging, the application is deliberately forced to end and succeeding re-initialization fails. Why?
Forced interruption during debugging prevents the memory of the board driver from being properly uninstalled. To avoid error, we advise calling the function SsmCloseCti to uninstall the board before ending the program.
Do Synway boards support multi-thread programming?
Yes.
Can two applications supported by the same driver be run on one system?
Yes, the driver supports multiple processes. However, different applications should run under separate directories, and the board cannot take function calls from different applications at the same time.
When the application generates a smaller buffer for recording and uses a dual-buffer for playback, noise is heard in playback. Why?
The default recording buffer size of the driver exceeds 800 bytes. When the application generates a buffer smaller than 800 bytes, modify the configuration file to turn on the small-buffer recording, i.e. set the configuration item RecordAndPlayUseAsIP=1.
Why does voice become intermittent during a playback with DTMF signals available on the line?
The driver is set by default to stop playback upon detecting DTMF signals, and intermittency could be due to the board driver picking up DTMF during playback. To prevent this from happening, set the value of ‘DefaultPausePlayOnRxDtmf’ under [BoardId=x] to 0 in the configuration file ‘ShConfig.ini’.
How to transfer an incoming call to an analog trunk channel to a call-agent?
1) When the trunk channel detects ringing, the station channel invokes the function SsmStartRing() which causes the station phone to ring.
2) When the station channel senses that the station phone is off-hook, the corresponding trunk channel invokes the function SsmPickup() to pick up the call.
3) Invokes SsmTalkWith() and connects the off-hook trunk channel with the station channel through the bus. The trunk now talks with the station.
How to send CallerID via a station channel to a phone that can receive CallerID?
1) For DTMF: The station channel can invoke the function SsmTxDTMF to send CallerID before the first ring.
2) For FSK: The station channel can invoke the function SsmStartRingWithCIDStr to send CallerID.
Which programming platforms does the driver work on?
The driver can work on all programming platforms that can directly invoke the standard Win32 interface, such as VB, VC++, .Net, DELPHI, C++BUILDER, PB, VFP, JAVA, etc.
What is the difference between the programming modes CALLBACK and EVENT_POLLING?
EVENT_POLLING: Uses the polling mechanism and supports self-defined events.
CALLBACK: Supports the callback mode.
Why does the application sometimes not detect the change in call or monitoring status?
Under the condition that the application uses the polling mode for programming and high frequency of interface refresh results in high CPU cost, such abnormal phenomena as failure to detect call or monitoring status may occur sometimes. Therefore, we suggest users optimize the application performance by using the event programming mode to reduce the cost of system resources.
What is the difference between CIC and Ch?
1) In SS7, CIC represents Circuit Identity Code. It should be set based on both parties’ negotiation. The common principle for CIC setting is: for a 2.048kbit/s digital trunk, the 5 lowest bits of CIC represent the voice path time slot number, and the remaining 7 bits represent the number of PCM between DPC and OPC. To be exact, now the relationship between CIC and Ch is as follows:
When the value of CIC is set to 0000 0000 0010 0001, what it specifies are Timeslot 1 on PCM 1 and Channel 0.
2) SpyCic (i.e. Circuit in SpyPCM) indicates a specific time slot (circuit) in the SpyPCM (the monitored PCM). For SS7 signaling, SpyCic is just the CIC field in the TUP or ISUP message; for ISDN PRI and SS1 signaling, SpyCic is the time slot number in PCM.
Each SpyCic has two numbers: the physical number and the logical number. The physical SpyCic number means the SpyCic number in one PCM which corresponds to the time slot number in the same PCM as shown below.
Physical SpyCic Number | 0~14 | 15~29 |
Corresponding Time Slot Number in SpyPCM | 1~15 | 17~31 |
The logical SpyCic number is the unified number given to each SpyCic in all PCM involved in the whole application system, beginning with 0. All SpyCic functions provided by the driver take the logical SpyCic number as the input parameter. The mapping relationship between the logical SpyCic number and the physical SpyCic number is determined by the configuration items TotalAppSpyCIC and AppSpyCIC in Section [AppSpyCICTable] in the configuration file. The function SpyGetMaxCic can be used to acquire the total number of SpyCic in the application system.
Because one SpyPCM is bound to two physical PCM, there is an one-to-one correspondence between the logical SpyCic number and the channel number. Logically, one SpyCic is made up of two channels in the driver.
The functions SpyGetCallInCh and SpyGetCallOutCh are used respectively to obtain the logical number of the called party channel and the calling party channel bound to the SpyCic in the current call. The function SpyChToCic can be used to query the corresponding logical number of the SpyCic according to the channel logical number.
The application program fails to invoke the function SsmRecToFile and the returned message says "Error creating file! ". Why?
Possible reasons are as follows.
1. Not enough free disk space to create the file;
2. Not enough free HD space to create the file;
3. Too many files already in the folder where to create the file;
4. The driver version is below 5.0.0.0 (Check the driver version and you are suggested to update those below 5.0.0.0 as they use the media function to create a file, which probably results in failure. The driver 5.0.0.0 and above versions change the way to create files. They create a file in CreateFile mode);
5. Use the MP3 format to record data into a *.mp3 file (Such problem may also occur in this case as the file is generated in read-only mode);
6. The fragmentation shown in the Disk Defragmenter is too high;
7. The entire HD has only one partition;
8. Norton AntiVirus, 360, SystemWorks & Internet Security Software and the like are installed in system.
9. Too many file handles are opened under Linux operating system.
If you are sure such problem is caused not by the above reasons, add the function SsmGetLastErrCode to the program to retrieve the error code returned by the driver (refer to MSDN to find more information of error codes) and give it to our technical support for help.