#include "libsangoma.h"
#include "libsangoma-pvt.h"
#include "wanpipe_includes.h"
#include "wanpipe_events.h"
#include "wanec_api.h"
#include "wanec_iface_api.h"

Go to the source code of this file.
Functions | |
| void _LIBSNG_CALL | sangoma_hwec_initialize_custom_parameter_structure (wan_custom_param_t *custom_param, char *parameter_name, char *parameter_value) |
| Initialize Custom Paramter structure. | |
| sangoma_status_t _LIBSNG_CALL | sangoma_hwec_config_init (char *device_name, wan_custom_param_t custom_params[], unsigned int number_of_custom_params) |
| Load Firmware image onto EC chip and allocated per-port resources in HWEC API. All chip-wide configuration paramters, if any, must be specified at the time of chip initialization. Note that Analog card is considered a "single-port" card by HWEC API. That means for Analog cards and for single-port digital cards only a single sangoma_hwec_config_init() call is required, all subsequent calls will have no effect. For multi-port cards, such as A102/A104/A108/A500, the sangoma_hwec_config_init() must be called for each port, at least one time. Only the first call will actually load the Firmware image onto EC chip, all subsequent calls (for other ports) will only add the Port to list of ports which use the HWEC API. Actions of sangoma_hwec_config_init() can be reversed by calling sangoma_hwec_config_release(). When Port is stopped, the HWEC API automatically releases per-port resources and removes the Port from list ports which use HWEC API. | |
| sangoma_status_t _LIBSNG_CALL | sangoma_hwec_config_release (char *device_name) |
| Release resources allocated by sangoma_hwec_config_init(). For single-port cards, such as A101 and A200 (A200 is an Analog card and considered sinle-port by HWEC API), a single call to sangoma_hwec_config_release() will free the per-chip resources. For multi-port cards, such as A102/A104/A108/A500, sangoma_hwec_config_release() can be called for each port to remove it from list Ports which are using HWEC API. When sangoma_hwec_config_release() is called for the last Port which was "configured/initialized by HWEC API", the per-chip resources will be freed. | |
| sangoma_status_t _LIBSNG_CALL | sangoma_hwec_config_operation_mode (char *device_name, int mode, unsigned int fe_chan_map) |
| Modify channel operation mode. | |
| sangoma_status_t _LIBSNG_CALL | sangoma_hwec_config_power_on (char *device_name, unsigned int fe_chan_map) |
| Set the channel state in the echo canceller to NORMAL/POWER ON. This enables echo cancelation logic inside the chip. The action is internal to EC chip itself, not related to AFT FPGA. This call is slow and should be used only on startup. | |
| sangoma_status_t _LIBSNG_CALL | sangoma_hwec_config_power_off (char *device_name, unsigned int fe_chan_map) |
| Set the channel state in the echo canceller to POWER OFF. This disables echo cancellatio logic inside the chip and data passes unmodified through the ec chip. The action is internal to EC chip itself, not related to AFT FPGA. This call is slow and should be used only on startup. | |
| sangoma_status_t _LIBSNG_CALL | sangoma_hwec_enable (char *device_name, unsigned int fe_chan_map) |
| Redirect audio stream from AFT FPGA to EC chip. This command effectively enables echo cancellation since data is now forced through the EC chip by the FPGA. Data will be modified by the echo canceller. This command is recommened for fast enabling of Echo Cancellation. Note 1: Chip must be configured and in POWER ON state for echo Chancellation to take place. Note 2: sangoma_tdm_enable_hwec() function can be used to achive the same funcitnality based on file descriptor versus channel map. | |
| sangoma_status_t _LIBSNG_CALL | sangoma_hwec_disable (char *device_name, unsigned int fe_chan_map) |
| Force AFT FPGA to bypass the echo canceller. This command effectively disables echo cancellation since data will not flowing through the ec chip. Data will not be modified by the echo canceller. This command is recommened for fast disabling of Echo Cancelation. Note: sangoma_tdm_disable_hwec() function can be use to achive the same functionality based on file descriptor versus channel map. | |
| sangoma_status_t _LIBSNG_CALL | sangoma_hwec_config_channel_parameter (char *device_name, char *parameter, char *parameter_value, unsigned int channel_map) |
| Modify channel configuration parameters. | |
| sangoma_status_t _LIBSNG_CALL | sangoma_hwec_config_tone_detection (char *device_name, int tone_id, int enable, unsigned int fe_chan_map, unsigned char port_map) |
| Enable/Disable tone detection (such as DTMF) of channels from channel map. | |
| sangoma_status_t _LIBSNG_CALL | sangoma_hwec_print_statistics (char *device_name, int full, unsigned int fe_chan) |
| Read and print Chip/Channel statistics from EC chip. | |
| sangoma_status_t _LIBSNG_CALL | sangoma_hwec_audio_buffer_load (char *device_name, char *filename, char pcmlaw, int *out_buffer_id) |
| Load audio buffer to EC chip. The buffer can be played out using the sangoma_hwec_audio_buffer_playout() function. | |
| sangoma_status_t _LIBSNG_CALL | sangoma_hwec_audio_mem_buffer_load (char *device_name, unsigned char *buffer, unsigned int in_size, char pcmlaw, int *out_buffer_id) |
| sangoma_status_t _LIBSNG_CALL | sangoma_hwec_audio_buffer_unload (char *device_name, int in_buffer_id) |
| sangoma_status_t _LIBSNG_CALL | sangoma_hwec_audio_buffer_playout (char *device_name, unsigned int fe_chan_map, unsigned char port, int in_buffer_id, int start, int repeat_cnt, int duration) |
| Start playing out an audio buffer previously loaded by sangoma_hwec_audio_buffer_load(). | |
| sangoma_status_t _LIBSNG_CALL | sangoma_hwec_config_verbosity (int verbosity_level) |
| Set Verbosity level of EC API Driver and Library. The level controls amount of data printed to stdout and to wanpipelog.txt (Windows) or /var/log/messages (Linux) for diagnostic purposes. | |
| sangoma_status_t _LIBSNG_CALL | sangoma_hwec_get_channel_statistics (sng_fd_t fd, unsigned int fe_chan, int *hwec_api_return_code, wanec_chan_stats_t *wanec_chan_stats, int verbose, int reset) |
| sangoma_status_t _LIBSNG_CALL | sangoma_hwec_get_global_chip_statistics (sng_fd_t fd, int *hwec_api_return_code, wanec_chip_stats_t *wanec_chip_stats, int verbose, int reset) |
| Get Global statistics from EC chip. | |
| sangoma_status_t _LIBSNG_CALL | sangoma_hwec_get_chip_image_info (sng_fd_t fd, int *hwec_api_return_code, wanec_chip_image_t *wanec_chip_image, int verbose) |
| Get information about Firmware Image of EC chip. | |
Author(s): David Rokhvarg <davidr@sangoma.com>
Copyright: (c) 2005-2011 Sangoma Technologies Corporation
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Sangoma Technologies nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY Sangoma Technologies ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Sangoma Technologies BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
Definition in file libsangoma_hwec.c.
| void _LIBSNG_CALL sangoma_hwec_initialize_custom_parameter_structure | ( | wan_custom_param_t * | custom_param, | |
| char * | parameter_name, | |||
| char * | parameter_value | |||
| ) |
Initialize Custom Paramter structure.
| parameter_name | Parameter Name | |
| parameter_value | Parameter Value |
Definition at line 166 of file libsangoma_hwec.c.
Referenced by sangoma_hwec_config_channel_parameter().
00167 { 00168 memset(custom_param, 0x00, sizeof(*custom_param)); 00169 00170 strncpy( custom_param->name, parameter_name, sizeof(custom_param->name) ); 00171 00172 if (sangoma_hwec_is_numeric_parameter(parameter_name)) { 00173 custom_param->dValue = atoi(parameter_value); 00174 } else { 00175 strncpy(custom_param->sValue, parameter_value, sizeof(custom_param->sValue)); 00176 } 00177 }

| sangoma_status_t _LIBSNG_CALL sangoma_hwec_config_init | ( | char * | device_name, | |
| wan_custom_param_t | custom_params[], | |||
| unsigned int | number_of_custom_params | |||
| ) |
Load Firmware image onto EC chip and allocated per-port resources in HWEC API. All chip-wide configuration paramters, if any, must be specified at the time of chip initialization. Note that Analog card is considered a "single-port" card by HWEC API. That means for Analog cards and for single-port digital cards only a single sangoma_hwec_config_init() call is required, all subsequent calls will have no effect. For multi-port cards, such as A102/A104/A108/A500, the sangoma_hwec_config_init() must be called for each port, at least one time. Only the first call will actually load the Firmware image onto EC chip, all subsequent calls (for other ports) will only add the Port to list of ports which use the HWEC API. Actions of sangoma_hwec_config_init() can be reversed by calling sangoma_hwec_config_release(). When Port is stopped, the HWEC API automatically releases per-port resources and removes the Port from list ports which use HWEC API.
| device_name | Sangoma API device name. Windows: wanpipe1_if1, wanpipe2_if1... Note that wanpipe1_if1 and wanpipe1_if2 will access the same Port - wanpipe1. Linux: wanpipe1, wanpipe2... | |
| custom_params[] | - (optional) array of custom paramter structures. |
Chip parameter Chip parameter value ================= ======================= WANEC_TailDisplacement 0-896 WANEC_MaxPlayoutBuffers 0-4678 WANEC_EnableExtToneDetection TRUE | FALSE WANEC_EnableAcousticEcho TRUE | FALSE
| number_of_custom_params | - (optional) number of structures in custom_params[]. Minimum value is 1, maximum is 4, if any other value the custom_params[] will be ignored. |
Definition at line 215 of file libsangoma_hwec.c.
References SANG_STATUS_FAILED_ALLOCATE_MEMORY, and SANG_STATUS_SUCCESS.
00216 { 00217 sangoma_status_t rc = SANG_STATUS_SUCCESS; 00218 wanec_api_config_t config; 00219 00220 memset(&config, 0x00, sizeof(config)); 00221 00222 if (number_of_custom_params >= 1 && number_of_custom_params <= 4) { 00223 00224 wan_custom_param_t *custom_parms_ptr; 00225 unsigned int i, custom_params_memory_size; 00226 00227 custom_params_memory_size = sizeof(wan_custom_param_t) * number_of_custom_params; 00228 00229 /* Do NOT change memory at custom_params[] (it belongs to the caller). 00230 * Instead allocate temporary buffer, and use information in custom_params[] 00231 * for proper initialization the temproary buffer and 00232 * and send if down to API driver. */ 00233 custom_parms_ptr = malloc(custom_params_memory_size); 00234 if (!custom_parms_ptr) { 00235 return SANG_STATUS_FAILED_ALLOCATE_MEMORY; 00236 } 00237 00238 memset(custom_parms_ptr, 0x00, custom_params_memory_size); 00239 00240 for (i = 0; i < number_of_custom_params; i++) { 00241 00242 strcpy( custom_parms_ptr[i].name, custom_params[i].name ); 00243 00244 if (sangoma_hwec_is_numeric_parameter(custom_params[i].name)) { 00245 custom_parms_ptr[i].dValue = atoi(custom_params[i].sValue); 00246 } else { 00247 strcpy(custom_parms_ptr[i].sValue, custom_params[i].sValue); 00248 } 00249 } /* for() */ 00250 00251 config.conf.param_no = number_of_custom_params; 00252 config.conf.params = custom_parms_ptr; 00253 00254 }/* if() */ 00255 00256 /* Load firmware on EC chip AND apply configuration, if any. */ 00257 rc = wanec_api_config( device_name, libsng_hwec_verbosity_level, &config ); 00258 00259 if (config.conf.params) { 00260 free(config.conf.params); 00261 } 00262 00263 return rc; 00264 }
| sangoma_status_t _LIBSNG_CALL sangoma_hwec_config_release | ( | char * | device_name | ) |
Release resources allocated by sangoma_hwec_config_init(). For single-port cards, such as A101 and A200 (A200 is an Analog card and considered sinle-port by HWEC API), a single call to sangoma_hwec_config_release() will free the per-chip resources. For multi-port cards, such as A102/A104/A108/A500, sangoma_hwec_config_release() can be called for each port to remove it from list Ports which are using HWEC API. When sangoma_hwec_config_release() is called for the last Port which was "configured/initialized by HWEC API", the per-chip resources will be freed.
| device_name | Sangoma API device name. Windows: wanpipe1_if1, wanpipe2_if1... Note that wanpipe1_if1 and wanpipe1_if2 will access the same Port - wanpipe1. Linux: wanpipe1, wanpipe2... |
Definition at line 283 of file libsangoma_hwec.c.
00284 { 00285 sangoma_status_t rc; 00286 wanec_api_release_t release; 00287 00288 memset(&release, 0, sizeof(wanec_api_release_t)); 00289 00290 rc = wanec_api_release( device_name, libsng_hwec_verbosity_level, &release ); 00291 00292 return rc; 00293 }
| sangoma_status_t _LIBSNG_CALL sangoma_hwec_config_operation_mode | ( | char * | device_name, | |
| int | mode, | |||
| unsigned int | fe_chan_map | |||
| ) |
Modify channel operation mode.
Modify channel operation mode.
| mode | One of WANEC_API_OPMODE_? values defined in wanpipe_api_iface.h: WANEC_API_OPMODE_NORMAL, WANEC_API_OPMODE_HT_FREEZE, WANEC_API_OPMODE_HT_RESET, WANEC_API_OPMODE_POWER_DOWN, WANEC_API_OPMODE_NO_ECHO, WANEC_API_OPMODE_SPEECH_RECOGNITION. | |
| fe_chan_map | Bitmap of channels (timeslots for Digital, lines for Analog) where the call will take effect. |
Definition at line 298 of file libsangoma_hwec.c.
Referenced by sangoma_hwec_config_power_off(), and sangoma_hwec_config_power_on().
00299 { 00300 sangoma_status_t rc; 00301 wanec_api_opmode_t opmode; 00302 00303 memset(&opmode, 0, sizeof(wanec_api_opmode_t)); 00304 00305 opmode.mode = mode; 00306 opmode.fe_chan_map = fe_chan_map; 00307 00308 /* modes are: 00309 WANEC_API_OPMODE_NORMAL, 00310 WANEC_API_OPMODE_HT_FREEZE, 00311 WANEC_API_OPMODE_HT_RESET, 00312 WANEC_API_OPMODE_POWER_DOWN, 00313 WANEC_API_OPMODE_NO_ECHO, 00314 WANEC_API_OPMODE_SPEECH_RECOGNITION. 00315 */ 00316 rc = wanec_api_opmode(device_name, libsng_hwec_verbosity_level, &opmode); 00317 00318 return rc; 00319 }

| sangoma_status_t _LIBSNG_CALL sangoma_hwec_config_power_on | ( | char * | device_name, | |
| unsigned int | fe_chan_map | |||
| ) |
Set the channel state in the echo canceller to NORMAL/POWER ON. This enables echo cancelation logic inside the chip. The action is internal to EC chip itself, not related to AFT FPGA. This call is slow and should be used only on startup.
| device_name | Sangoma API device name. Windows: wanpipe1_if1, wanpipe2_if1... Linux: wanpipe1, wanpipe2... | |
| fe_chan_map | Bitmap of channels (timeslots for Digital, lines for Analog) where the call will take effect. |
Definition at line 338 of file libsangoma_hwec.c.
References sangoma_hwec_config_operation_mode().
00339 { 00340 return sangoma_hwec_config_operation_mode(device_name, WANEC_API_OPMODE_NORMAL, fe_chan_map); 00341 }

| sangoma_status_t _LIBSNG_CALL sangoma_hwec_config_power_off | ( | char * | device_name, | |
| unsigned int | fe_chan_map | |||
| ) |
Set the channel state in the echo canceller to POWER OFF. This disables echo cancellatio logic inside the chip and data passes unmodified through the ec chip. The action is internal to EC chip itself, not related to AFT FPGA. This call is slow and should be used only on startup.
| device_name | Sangoma API device name. Windows: wanpipe1_if1, wanpipe2_if1... Linux: wanpipe1, wanpipe2... | |
| fe_chan_map | Bitmap of channels (timeslots for Digital, lines for Analog) where the call will take effect. |
Definition at line 361 of file libsangoma_hwec.c.
References sangoma_hwec_config_operation_mode().
00362 { 00363 return sangoma_hwec_config_operation_mode(device_name, WANEC_API_OPMODE_POWER_DOWN, fe_chan_map); 00364 }

| sangoma_status_t _LIBSNG_CALL sangoma_hwec_enable | ( | char * | device_name, | |
| unsigned int | fe_chan_map | |||
| ) |
Redirect audio stream from AFT FPGA to EC chip. This command effectively enables echo cancellation since data is now forced through the EC chip by the FPGA. Data will be modified by the echo canceller. This command is recommened for fast enabling of Echo Cancellation. Note 1: Chip must be configured and in POWER ON state for echo Chancellation to take place. Note 2: sangoma_tdm_enable_hwec() function can be used to achive the same funcitnality based on file descriptor versus channel map.
Redirect audio stream from AFT FPGA to EC chip. This command effectively enables echo cancellation since data is now forced through the EC chip by the FPGA. Data will be modified by the echo canceller. This command is recommened for fast enabling of Echo Cancellation. Note 1: Chip must be configured and in POWER ON state for echo Chancellation to take place. Note 2: sangoma_tdm_enable_hwec() function can be use to achive the same funcitnality based on file descriptor versus channel map.
| device_name | Sangoma API device name. Windows: wanpipe1_if1, wanpipe2_if1... Linux: wanpipe1, wanpipe2... | |
| fe_chan_map | Bitmap of channels (timeslots for Digital, lines for Analog) where the call will take effect. |
Definition at line 389 of file libsangoma_hwec.c.
| sangoma_status_t _LIBSNG_CALL sangoma_hwec_disable | ( | char * | device_name, | |
| unsigned int | fe_chan_map | |||
| ) |
Force AFT FPGA to bypass the echo canceller. This command effectively disables echo cancellation since data will not flowing through the ec chip. Data will not be modified by the echo canceller. This command is recommened for fast disabling of Echo Cancelation. Note: sangoma_tdm_disable_hwec() function can be use to achive the same functionality based on file descriptor versus channel map.
Force AFT FPGA to bypass the echo canceller. This command effectively disables echo cancellation since data will not be flowing through the ec chip. Data will not be modified by the echo canceller. This command is recommened for fast disabling of Echo Cancelation. Note: sangoma_tdm_disable_hwec() function can be used to achive the same functionality based on file descriptor versus channel map.
| device_name | Sangoma API device name. Windows: wanpipe1_if1, wanpipe2_if1... Linux: wanpipe1, wanpipe2... | |
| fe_chan_map | Bitmap of channels (timeslots for Digital, lines for Analog) where the call will take effect. |
Definition at line 416 of file libsangoma_hwec.c.
| sangoma_status_t _LIBSNG_CALL sangoma_hwec_config_channel_parameter | ( | char * | device_name, | |
| char * | parameter, | |||
| char * | parameter_value, | |||
| unsigned int | channel_map | |||
| ) |
Modify channel configuration parameters.
| device_name | Sangoma API device name. Windows: wanpipe1_if1, wanpipe2_if1... Linux: wanpipe1, wanpipe2... | |
| parameter | Echo Cancellation channel parameter |
Channel parameter Channel parameter value ================= ======================= WANEC_EnableNlp TRUE | FALSE WANEC_EnableTailDisplacement TRUE | FALSE WANEC_TailDisplacement 0-896 WANEC_SoutLevelControl TRUE | FALSE WANEC_RinAutomaticLevelControl TRUE | FALSE WANEC_SoutAutomaticLevelControl TRUE | FALSE WANEC_SoutAdaptiveNoiseReduction TRUE | FALSE WANEC_RoutNoiseReduction TRUE | FALSE WANEC_ComfortNoiseMode COMFORT_NOISE_NORMAL COMFORT_NOISE_FAST_LATCH COMFORT_NOISE_EXTENDED COMFORT_NOISE_OFF WANEC_DtmfToneRemoval TRUE | FALSE WANEC_AcousticEcho TRUE | FALSE WANEC_NonLinearityBehaviorA 0-13 WANEC_NonLinearityBehaviorB 0-8 WANEC_DoubleTalkBehavior DT_BEH_NORMAL DT_BEH_LESS_AGGRESSIVE WANEC_AecTailLength 128 (default), 256, 512 or 1024 WANEC_EnableToneDisabler TRUE | FALSE
| parameter_value | channel parameter value, listed under "Channel parameter value" | |
| fe_chan_map | Bitmap of channels (timeslots for Digital, lines for Analog) where the call will take effect. |
| device_name | Sangoma API device name. Windows: wanpipe1_if1, wanpipe2_if1... Linux: wanpipe1, wanpipe2... | |
| parameter | Echo Cancellation channel parameter |
Channel parameter Channel parameter value ================= ======================= WANEC_EnableNlp TRUE | FALSE WANEC_EnableTailDisplacement TRUE | FALSE WANEC_TailDisplacement 0-896 WANEC_SoutLevelControl TRUE | FALSE WANEC_RinAutomaticLevelControl TRUE | FALSE WANEC_SoutAutomaticLevelControl TRUE | FALSE WANEC_SoutAdaptiveNoiseReduction TRUE | FALSE WANEC_RoutNoiseReduction TRUE | FALSE WANEC_ComfortNoiseMode COMFORT_NOISE_NORMAL COMFORT_NOISE_FAST_LATCH COMFORT_NOISE_EXTENDED COMFORT_NOISE_OFF WANEC_DtmfToneRemoval TRUE | FALSE WANEC_AcousticEcho TRUE | FALSE WANEC_NonLinearityBehaviorA 0-13 WANEC_NonLinearityBehaviorB 0-8 WANEC_DoubleTalkBehavior DT_BEH_NORMAL DT_BEH_LESS_AGGRESSIVE WANEC_AecTailLength 128 (default), 256, 512 or 1024 WANEC_EnableToneDisabler TRUE | FALSE
| fe_chan_map | Bitmap of channels (timeslots for Digital, lines for Analog) where the call will take effect. |
Definition at line 464 of file libsangoma_hwec.c.
References sangoma_hwec_initialize_custom_parameter_structure().
00465 { 00466 sangoma_status_t rc; 00467 wanec_api_modify_t channelModify; 00468 wan_custom_param_t custom_param; 00469 00470 memset(&channelModify, 0x00, sizeof(channelModify)); 00471 00472 sangoma_hwec_initialize_custom_parameter_structure(&custom_param, parameter, parameter_value); 00473 00474 channelModify.fe_chan_map = channel_map; 00475 channelModify.conf.param_no = 1; 00476 channelModify.conf.params = &custom_param; 00477 00478 rc = wanec_api_modify( device_name, libsng_hwec_verbosity_level, &channelModify ); 00479 00480 return rc; 00481 }

| sangoma_status_t _LIBSNG_CALL sangoma_hwec_config_tone_detection | ( | char * | device_name, | |
| int | tone_id, | |||
| int | enable, | |||
| unsigned int | fe_chan_map, | |||
| unsigned char | port_map | |||
| ) |
Enable/Disable tone detection (such as DTMF) of channels from channel map.
| device_name | Sangoma API device name. Windows: wanpipe1_if1, wanpipe2_if1... Linux: wanpipe1, wanpipe2... | |
| tone_id | See wanpipe_api_iface.h for list of valid tones | |
| enable | A flag, if 1 - the specified tone will be detected, if 0 - specified tone will not be detected. | |
| fe_chan_map | Bitmap of channels (timeslots for Digital, lines for Analog) where the call will take effect. | |
| port_map | Port of tone detection - Rx, Tx. See wanpipe_events.h for list of valid ports (WAN_EC_CHANNEL_PORT_SOUT...). |
Definition at line 505 of file libsangoma_hwec.c.
00506 { 00507 sangoma_status_t rc; 00508 wanec_api_tone_t tone; 00509 00510 memset(&tone, 0, sizeof(wanec_api_tone_t)); 00511 00512 tone.id = tone_id; 00513 tone.enable = enable; 00514 tone.fe_chan_map = fe_chan_map; 00515 tone.port_map = port_map; 00516 tone.type_map = WAN_EC_TONE_PRESENT | WAN_EC_TONE_STOP; 00517 00518 rc = wanec_api_tone( device_name, libsng_hwec_verbosity_level, &tone ); 00519 00520 return rc; 00521 }
| sangoma_status_t _LIBSNG_CALL sangoma_hwec_print_statistics | ( | char * | device_name, | |
| int | full, | |||
| unsigned int | fe_chan_map | |||
| ) |
Read and print Chip/Channel statistics from EC chip.
| device_name | Sangoma API device name. Windows: wanpipe1_if1, wanpipe2_if1... Linux: wanpipe1, wanpipe2... | |
| full | Flag to read full statistics, if set to 1. | |
| fe_chan | Channel number (a timeslot for Digital, a line for Analog) where the call will read statistics. Values from 1 to 31 will indicate the channel nuber. A value of zero will indicate request to print global chip statistics, not per-channel statistics. |
| device_name | Sangoma API device name. Windows: wanpipe1_if1, wanpipe2_if1... Linux: wanpipe1, wanpipe2... | |
| full | Flag to read full statistics, if set to 1. | |
| fe_chan_map | Bitmap of channels (timeslots for Digital, lines for Analog) where the call will read statistics. |
Definition at line 541 of file libsangoma_hwec.c.
00542 { 00543 sangoma_status_t rc; 00544 wanec_api_stats_t stats; 00545 00546 memset(&stats, 0, sizeof(wanec_api_stats_t)); 00547 00548 stats.full = full; 00549 stats.fe_chan = fe_chan; 00550 stats.reset = 0; /* do not reset */ 00551 00552 rc = wanec_api_stats( device_name, libsng_hwec_verbosity_level, &stats ); 00553 00554 return rc; 00555 }
| sangoma_status_t _LIBSNG_CALL sangoma_hwec_audio_buffer_load | ( | char * | device_name, | |
| char * | filename, | |||
| char | pcmlaw, | |||
| int * | out_buffer_id | |||
| ) |
Load audio buffer to EC chip. The buffer can be played out using the sangoma_hwec_audio_buffer_playout() function.
| filename | name of the audio file (without the extension). Actual file must have .pcm extension. Location: Windows: SystemRoot% (ex: c:) Linux: /etc/wanpipe/buffers | |
| out_buffer_id | when the buffer is loaded on the chip, it is assigned an ID. This ID should be used when requesting to play out the buffer. |
| buffer | Pointer to in memory buffer to be loaded on the chip. | |
| size | Size of buffer. | |
| out_buffer_id | when the buffer is loaded on the chip, it is assigned an ID. This ID should be used when requesting to play out the buffer. |
Definition at line 574 of file libsangoma_hwec.c.
References SANG_STATUS_SUCCESS.
00575 { 00576 sangoma_status_t rc; 00577 wanec_api_bufferload_t bufferload; 00578 00579 memset(&bufferload, 0, sizeof(wanec_api_bufferload_t)); 00580 *out_buffer_id = -1; 00581 00582 bufferload.buffer = filename; 00583 bufferload.pcmlaw = pcmlaw; 00584 00585 rc = wanec_api_buffer_load( device_name, libsng_hwec_verbosity_level, &bufferload ); 00586 if( rc ) { 00587 return rc; 00588 } 00589 00590 *out_buffer_id = bufferload.buffer_id; 00591 00592 return SANG_STATUS_SUCCESS; 00593 }
| sangoma_status_t _LIBSNG_CALL sangoma_hwec_audio_buffer_playout | ( | char * | device_name, | |
| unsigned int | fe_chan_map, | |||
| unsigned char | port_map, | |||
| int | buffer_id, | |||
| int | start, | |||
| int | repeat_cnt, | |||
| int | duration | |||
| ) |
Start playing out an audio buffer previously loaded by sangoma_hwec_audio_buffer_load().
| fe_chan_map | Bitmap of channels (timeslots for Digital, lines for Analog) where the call will take effect. | |
| port_map | Port where the buffer will be played out. This is the channel port on which the buffer will be played (WAN_EC_CHANNEL_PORT_SOUT or WAN_EC_CHANNEL_PORT_ROUT) | |
| in_buffer_id | ID of the buffer which will be unloaded. The ID must be initialized by sangoma_hwec_audio_bufferload(). | |
| start | If 1 - start the play out, 0 - stop the play out | |
| repeat_cnt | Number of times to play out the same buffer | |
| duration | Maximum duration of the playout, in milliseconds. If it takes less then 'duration' to play out the whole buffer, it will be repeated to fill 'duration' amount of time. If 'duration' is set to non-zero, this parameter overrides the repeat_cnt flag. |
Definition at line 677 of file libsangoma_hwec.c.
00680 { 00681 sangoma_status_t rc; 00682 wanec_api_playout_t playout; 00683 00684 memset(&playout, 0, sizeof(wanec_api_playout_t)); 00685 00686 playout.start = start; 00687 playout.fe_chan = fe_chan_map; 00688 playout.buffer_id = in_buffer_id; 00689 playout.port = port; 00690 playout.notifyonstop = 1; 00691 playout.user_event_id = 0xA5; /* dummy value */ 00692 playout.repeat_cnt = repeat_cnt; 00693 playout.duration = (duration) ? duration : cOCT6100_INVALID_VALUE; /* default is no duration */ 00694 00695 rc = wanec_api_playout( device_name, libsng_hwec_verbosity_level, &playout); 00696 00697 return rc; 00698 }
| void _LIBSNG_CALL sangoma_hwec_config_verbosity | ( | int | verbosity_level | ) |
Set Verbosity level of EC API Driver and Library. The level controls amount of data printed to stdout and to wanpipelog.txt (Windows) or /var/log/messages (Linux) for diagnostic purposes.
Set Verbosity level of EC API. The level controls amount of data printed to stdout and wanpipelog.txt for diagnostic purposes.
| verbosity_level | Valid values are from 0 to 3. |
| verbosity_level | Valid values are from 0 to 3. |
Definition at line 712 of file libsangoma_hwec.c.
References SANG_STATUS_INVALID_PARAMETER, and SANG_STATUS_SUCCESS.
00713 { 00714 if (verbosity_level >= 0 || verbosity_level <= 3) { 00715 libsng_hwec_verbosity_level = verbosity_level; 00716 wanec_api_set_lib_verbosity(verbosity_level); 00717 return SANG_STATUS_SUCCESS; 00718 } 00719 return SANG_STATUS_INVALID_PARAMETER; 00720 }
| sangoma_status_t _LIBSNG_CALL sangoma_hwec_get_global_chip_statistics | ( | sng_fd_t | fd, | |
| int * | hwec_api_return_code, | |||
| wanec_chip_stats_t * | wanec_chip_stats, | |||
| int | verbose, | |||
| int | reset | |||
| ) |
Get Global statistics from EC chip.
| fd | device file descriptor | |
| hwec_api_return_code | will contain one of WAN_EC_API_RC_x codes which are defined in wanec_iface_api.h | |
| wanec_chip_stats | structure will be filled with HWEC channel statistics. | |
| verbose | Flag indicating to the Driver to print additional information about the command into Wanpipe Log file. | |
| reset | Flag to reset (flush) global statistics to zero, if set to 1. |
Definition at line 793 of file libsangoma_hwec.c.
References SANG_STATUS_SUCCESS.
00795 { 00796 00797 sangoma_status_t err; 00798 wan_ec_api_t ec_api; 00799 00800 memset(&ec_api, 0x00, sizeof(ec_api)); 00801 00802 ec_api.cmd = WAN_EC_API_CMD_STATS_FULL; 00803 00804 ec_api.verbose = verbose; 00805 00806 /* indicate to Driver to get chip stats, not channel stats, by setting fe_chan_map to zero */ 00807 ec_api.fe_chan_map = 0; 00808 00809 /* user may want to reset (clear) Chip statistics */ 00810 ec_api.u_chip_stats.reset = reset; 00811 00812 err = sangoma_hwec_ioctl(fd, &ec_api); 00813 if (err) { 00814 /* error in IOCTL */ 00815 return err; 00816 } 00817 00818 /* copy stats from driver buffer to user buffer */ 00819 memcpy(wanec_chip_stats, &ec_api.u_chip_stats, sizeof(*wanec_chip_stats)); 00820 00821 *hwec_api_return_code = ec_api.err; 00822 00823 return SANG_STATUS_SUCCESS; 00824 00825 }
| sangoma_status_t _LIBSNG_CALL sangoma_hwec_get_chip_image_info | ( | sng_fd_t | fd, | |
| int * | hwec_api_return_code, | |||
| wanec_chip_image_t * | wanec_chip_image, | |||
| int | verbose | |||
| ) |
Get information about Firmware Image of EC chip.
| fd | device file descriptor | |
| hwec_api_return_code | will contain one of WAN_EC_API_RC_x codes which are defined in wanec_iface_api.h | |
| wanec_chip_image_t | structure will be filled with HWEC channel statistics. | |
| verbose | Flag indicating to the Driver to print additional information about the command into Wanpipe Log file. |
Definition at line 843 of file libsangoma_hwec.c.
References SANG_STATUS_SUCCESS.
00845 { 00846 sangoma_status_t err; 00847 wan_ec_api_t ec_api; 00848 00849 memset(&ec_api, 0x00, sizeof(ec_api)); 00850 00851 ec_api.cmd = WAN_EC_API_CMD_STATS_IMAGE; 00852 00853 ec_api.verbose = verbose; 00854 00855 /* driver will copy image information into wanec_chip_image->f_ChipImageInfo */ 00856 ec_api.u_chip_image.f_ChipImageInfo = wanec_chip_image->f_ChipImageInfo; 00857 00858 err = sangoma_hwec_ioctl(fd, &ec_api); 00859 if (err) { 00860 /* error in IOCTL */ 00861 return err; 00862 } 00863 00864 *hwec_api_return_code = ec_api.err; 00865 00866 return SANG_STATUS_SUCCESS; 00867 }
1.5.6