wanpipe-3.3.2.tgz

This commit is contained in:
Harald Welte 2021-12-29 18:18:25 +01:00
parent b40a1554e2
commit feb6422bea
573 changed files with 164586 additions and 89251 deletions

208
ChangeLog.beta Normal file
View File

@ -0,0 +1,208 @@
------------------------------------------------------------------------------
WANPIPE TDM VOICE - IP/WAN Package
Linux Voice TDM/WAN Router Package
For more info visit: http://wiki.sangoma.com
------------------------------------------------------------------------------
Author: Nenad Corbic <ncorbic@sangoma.com>
Copyright (c) 1995-2008 Sangoma Technologies Inc.
------------------------------------------------------------------------------
* Wed Feb 12 2008 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.2
======================================================================
- Support for A500 hardware support with NetBricks BRI Stack
- Major A500 driver updates and fixes
- Serial A142/A144 hardware support
- AFT A056 56K hardware support
- Support for HW DTMF
- Updates for AFT PMC and MAXIM framers
PMC - lowered LOS sensitivity
Fixes fake up/down state changes on
started inactive lines.
MAXIM - lowered sensistivy
Fixes cable cross talk on 8 port cards.
- Enabled Unframed E1
- Enabled Tri-State Mode
- Fixed loopback commands
- Updated loopback commands for AFT Maxim cards
- Updated for AstLinux
The make file can now build all WAN and Voice Protocols
- Updated legacy protocols for new front end architecture
-
* Fri Feb 01 2008 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.2.p8
======================================================================
- wancfg_zaptel now asks for the default_tei value for
- BRI cards in TE mode
- Fix for HWEC not being enabled when non-consecutive modules are using
- in BRI cards
* Fri Feb 01 2008 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.2.p4
======================================================================
- Fixed AFT memory leak
Memory leak introduced in 3.3 release
- Fixed AFT 56K bug
Bug introduced in 3.3 releae
* Fri Feb 01 2008 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.2.p3
======================================================================
- Fix bug in BRI protocol for fast local hangups.
* Mon Jan 18 2008 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.2.p1
======================================================================
- Bug fix in Hardware EC code for E1.
Bug introduced in 3.3 release.
* Mon Jan 18 2008 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.1
====================================================================
* Mon Jan 16 2008 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.0.22
====================================================================
- BRI protocol:Increased internal timer that could cause issue in systems with
- more than 8 BRI spans
* Mon Jan 15 2008 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.0.21
====================================================================
- BRI protocol:Fix for smg_brid daemon crashing on race condition
- BRI protocol:default_tei parameter is not ignored when using point to
- multipoint anymore
* Mon Jan 14 2008 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.0.20
====================================================================
- BRI protocol: Additional prefix options.
- BRI protocol: Check is caller ID number is all digits on incoming calls
- Sangoma MGD: Removed dynamic user period causing skb panics
- chan_woomera: Fixed issue with rxgain and txgain values set to 0 if
- coding not set in woomera.conf
- wancfg_zaptel: Support for fractional T1/E1 spans.
- wancfg_zaptel: fix issue BRI always being configured as bri_net introduced in v3.3.0.19
* Mon Jan 07 2008 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.0.19
====================================================================
- Support for national/international prefix in BRI stack
* Mon Jan 07 2008 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.0.18
====================================================================
- Changed Makefile in wanpipe/api/fr causing compilation errors
* Thu Dec 20 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.0.17
====================================================================
- Fix for smg_ctrl boot script starting before network services on some systems
- Support for language parameter in chan_woomera
* Thu Dec 20 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.0.16
====================================================================
- Fix for Sangoma BRI Daemon crashing on incoming call if chan_woomera is not installed on that system
* Tue Dec 18 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.0.15
====================================================================
- Fix for caller ID value being corrupted sometimes
- Support for call confirmation in chan_woomera
* Tue Dec 18 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.0.14
====================================================================
- Fix in smg_brid not releasing some b-channels properly
- Fix in wancfg_smg not setting MTU to 80 when configuring cards for SS7
* Fri Dec 14 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.0.13
====================================================================
- Fix for Kernel panic on 64-bit systems when enabling hardware echo canceller
* Thu Dec 5 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.0.11
====================================================================
- Support for AFT Serial Cards
- Updates for AFT PMC and MAXIM framers
PMC - lowered LOS sensitivity
Fixes fake up/down state changes on
started inactive lines.
MAXIM - lowered sensistivy
Fixes cable cross talk on 8 port cards.
- Enabled Unframed E1
- Enabled Tri-State Mode
- Fixed loopback commands
- Fixed HWEC_PERSIST_DISABLE
This option was broken in previous release
This option lets Asterisk control HWEC
on each call start/stop.
By default all hwec channels are enabled on
device startup.
- Updated SMG/SS7
- Updated loopback commands for AFT Maxim cards
- Updated for AstLinux
The make file can now build all WAN and Voice Protocols
- Fixed add_timer warnings for ALL AFT cards
Caused when a port is left in unconnected state.
- Updated legacy protocols for new front end architecture
- Updated Setup script
* Thu Nov 8 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.0.4
====================================================================
- Fixed A101/2 (Old) bug introduced in previous releaes
* Mon Oct 31 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.0.4
====================================================================
- Updated BRI caller name
- Updaged Setup
* Mon Oct 15 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.0.1
====================================================================
- Major Updates
- New BRI architecture/support
SMG with Netbricks BRI Stack
- Support for Hardware DTMF
* Thu Aug 22 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.0.p3
======================================================================
- Updated wancfg_zaptel to support HW DTMF
* Thu Aug 21 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.3.0.p2
======================================================================
- Major Updates
- Hardware DTMF for Asterisk and TDM API

View File

@ -1,404 +0,0 @@
------------------------------------------------------------------------------
WANPIPE
Linux Voice TDM/WAN Router Package
------------------------------------------------------------------------------
Author: Nenad Corbic <ncorbic@sangoma.com>
Copyright (c) 1995-2008 Sangoma Technologies Inc.
------------------------------------------------------------------------------
* Thu Aug 21 2008 Nenad Corbic <ncorbic@sangoma.com> - Stable - 3.2.7.1
========================================================================
- Fixed bug in wancfg_zaptel configuration utility
This bug was introduced in previous release. It will set d-channels
as "dchan" instead of "hardhdlc" for zaptel-1.4.x .
No driver changes.
* Thu Jul 16 2008 Nenad Corbic <ncorbic@sangoma.com> - Stable - 3.2.7
========================================================================
- Removed the Excessive Error check that disables the port.
This feature was introduced in 3.2.6 release.
Some lines are extremely noisy on startup which can cause
excessive crc errors (5000 per sec). In this case driver would
take the port down for few sec before bringing it back up in order to
avoid irq overlaod. This release will only print the
warning but will not take any up/down actions.
- Added support for new PLX2 or TUNDRA PCIe chip.
* Thu Jun 4 2008 Nenad Corbic <ncorbic@sangoma.com> - Stable - 3.2.6
========================================================================
- Updated hwprobe to add A056 card
- Updated for 2.6.25 kernel
- wanpipemon PRI/BRI wireshark tracing
http://wiki.sangoma.com/wanpipe-wireshark-pcap-pri-bri-wan-t1-e1-tracing
- LIP Layer Update
Optimized packet handling in bh
- Fixed WAN Protocol for 2.6.24 kernels and higher
- AFT TE1 Code
Defaulted Maxim T1 Rx Level to 36DB
Defaulted Maxim E1 Rx Level to 42DB
This will improve T1/E1 connectivity on noisy or low power lines.
- Wanpipemon PRI/BRI PCAP Tracing for Wireshark
Using wanpipemon dchan trace one can now capture
pcap files that can be opened by Wireshark.
http://wiki.sangoma.com/wanpipe-wireshark-pcap-pri-bri-wan-t1-e1-tracing
- Add pci parity check to wanrouter
wanrouter parity -> displays current system pci parity
wanrouter parity off -> disables system pci parity
wanrouter parity on -> enables system pci parity
/etc/wanpipe/wanrouter.rc
WAN_PCI_PARITY=OFF -> on wanrouter start disable pci parity
-> event logged in /var/log/wanrouter
On some servers pci parity can cause NMI interrupts that
can lead to reboots. Parity can be caused by unsuported
or buggy pci/bridge chipsets. The above commands can be used
to combat pci parity reboots.
Another option is to disable PCI parity in BIOS :)
* Thu Apr 4 2008 Nenad Corbic <ncorbic@sangoma.com> - Stable - 3.2.5.1
========================================================================
- RTP TAP Bug fix
The driver was sending out invalid rtp tap header
http://wiki.sangoma.com/wanpipe-voice-rtp-tap
* Thu Apr 2 2008 Nenad Corbic <ncorbic@sangoma.com> - Stable - 3.2.5
========================================================================
- T3/E3 Update
Fixed T3 Loopback commands
- Updated T3/E3 Driver
Performance improvement on T3/E3 drivers when handling
VOIP and Data traffic.
- Update ifconfig MTU change from protocol interface
* Thu Mar 6 2008 Nenad Corbic <ncorbic@sangoma.com> - Stable - 3.2.4
========================================================================
- Updated for 2.6.24 kernels
TDM Voice (Zaptel) tested with 2.6.24 kernel.
Known issues: WAN protocols are broken for 2.6.24 kernels.
Its a compilation issue that will be fixed ASAP.
- TDM API bug fix
Check for max frame size on audio stream
- Updated for Zaptel 1.4.9
- AFT IRQ Throttling feature
This feature is use to protect the server from
terrible lines. In some cases a bad hdlc line can
cause thousands of interrupts per sec. Rx errors are now
throttled so that system does not get compromized.
- AFT RTP TAP Feature
RTP TAP Feature allows user to tap voice channels during
Asterisk-Zaptel/TMD API operation at the driver/kernel level.
Each voice stream is encapsulated in UDP/RTP header and transmitted over
neghbouring ethernet address directly from kenrel space.
Tapping 4E1s worth of voice channels adds estra 2% system load :)
http://wiki.sangoma.com/wanpipe-voice-rtp-tap
- AFT Software Ring Buffers on A200/A400 Analog Cards
This feature improves analog preformance under Asterisk/TDM API
mode. In particualr it improves faxing reliability and
minimizes frame slippage due to system load or bad incoming
clock from the line.
Note: All AFT T1/E1 cards have this feature in hardare :)
* Thu Jan 18 2008 Nenad Corbic <ncorbic@sangoma.com> - Stable - 3.2.3
========================================================================
- No changes from 3.2.2
Version updated for versioning sake.
* Thu Jan 18 2008 Nenad Corbic <ncorbic@sangoma.com> - Stable - 3.2.2
========================================================================
- AFT Maxim Front end update
Implemented graceful recovery on short circuit.
- AFT Driver update
Added a check for TDM IRQ timeout.
On some machines its possible for TDM IRQ to timeout.
- SMG updated
Fixed wancfg_smg
MTU not properly set on ports 2 and up
Voice only ports were not being added to startup sequence
Updated for callweaver
- Added Zaptel 1.4 HW HDLC Support
No Sangoma zaptel patch needed with Zaptel 1.4
- Added HWEC Noise flag in wanpipe config file
- Updated SMG
- Updated E1 Unframed on Maxim Cards
- Updates for AFT PMC and MAXIM framers
PMC - lowered LOS sensitivity
Fixes fake up/down state changes on
started inactive lines.
MAXIM - lowered sensistivy
Fixes cable cross talk on 8 port cards.
- Enabled Unframed E1
- Enabled Tri-State Mode
- Fixed loopback commands
- Fixed HWEC_PERSIST_DISABLE
This option was broken in previous release
This option lets Asterisk control HWEC
on each call start/stop.
By default all hwec channels are enabled on
device startup.
- Updated SMG/SS7
- Updated loopback commands for AFT Maxim cards
- Updated for AstLinux
The make file can now build all WAN and Voice Protocols
- Fixed add_timer warnings for ALL AFT cards
Caused when a port is left in unconnected state.
- Updated legacy protocols for new front end architecture
- Updated Setup script
* Wed Oct 6 2007 Nenad Corbic <ncorbic@sangoma.com> - Stable - 3.2.1
=====================================================================
- Setup Zap Chunk Size Patch updated for Zaptel 1.4
Patch allows running zaptel in 8,16,40,80 chunk size.
However wct drivers must be removed from compilation :)
Patch is now fixed for Zaptel 1.4
- Update to All AFT drivers for 64bit 2.6.22 kernel.
Updated affects: AFT A101/2/4/8/200/400 (all cards)
The major 2.6.20+ updates extend to 64bit as well.
Previous drivers segfaulted under 2.6.22 64bit
kernels. This does not affect you if you are running
kennels lower than 2.6.22.
- Updated legacy drivers for 2.6.22 kernel
* Wed Oct 3 2007 Nenad Corbic <ncorbic@sangoma.com> - Stable - 3.2.0
=====================================================================
- The Beta 3.1.X releases has now been declared as STABLE 3.2.X
- Fixed AMI/D4 on MAXIM (A101/2/4/8D) cards
- Fixed A200/A400 tip/ring no dial tone issues.
- Fixed 2.6.22 support and above
- Fixed RPM Build post install issue
- Updated Setup install script
Option to build for zaptel: ./Setup zaptel
- Working E&M/RBS/CAS Channel Bank support for MAXIM (A101/2/4/8) cards.
- Fixed wanpipe crashing on system shutdown on some machines.
Caused by RedHat /var/lock/subsys mandatory lock file.
- New Firmware for all MAXIM Cards (A101/2/4/8D)
Firmware V33: Fixes EC Chip Security errors that can cause
PRI to go down on some computers. Firmware is backward compatible
to any previous release.
- Faxes/Modems working through hardware echo canceler.
Tested at 56K from one port to another.
New octasic update.
- Analog Network SYNC Feature for Fax Support
Analog cards can be synced to T1/E1 clock
from adjacent A101/2/4/8 cards for flawless faxing
from FXO/FXS to T1/E1.
- Known Issues:
T1/E1 High Impedance Tap for MAXIM (A101/2/4/8D) cards.
It works on original PMC A101/2/4 cards
For more info: http://wiki.sangoma.com
* Mon Oct 1 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.1.4.6
====================================================================
- Fixed Makefile for 2.6.22.9 kernel.
- Fixed all gcc4 warnings.
* Tue Sep 26 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.1.4.5
====================================================================
- Updated Setup install script
- A200/A400 Analog driver update
Fixed noise issue introduced in 3.1.4.3 release
- Updated SMG for Asterisk 1.4 & Callweaver
* Tue Sep 18 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.1.4.3
====================================================================
- A200/A400 Analog driver update
Fixed a problem where analog port starts up without
dialtone.
* Tue Sep 14 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.1.4.2
====================================================================
- Update for 2.6.22 kernel.
- wanrouter startup script update for redhat distros.
Fixes the issue on system shutdown, where wanpipe
module sometimes do not unload due to /var/lock/subsys/
lockfile check. This issue is only related or RedHat style distros.
* Tue Aug 15 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.1.4
====================================================================
- Added A101-SH old config support.
So onld A101u or A101c config file can be used with new A101-SH cards.
- Updated KATM support in the LIP Layer.
Used to connect Kernel ATM Layer to Wanpipe ATM AAL5 layer
over all AFT cards.
- Added a sanity checker for enabling HWEC.
Used to prevent duble hwec enable.
- Added wancfg_tdmapi configurator
- Updated SMG
* Mon Jun 30 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.1.3
====================================================================
- Update to Ocatsic Hardware Echo Canceler Library
Turned of the NOISE suppression because it can interfere
with faxes. If you faxes did not work properly on 3.1.2
release they will work fine with this one.
- Cleaned up the Setup installation script.
* Mon Jun 16 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.1.2
====================================================================
- Update to Octasic Hardware Echo Canceler library
This is a very important update that affects all AFT cards
with octasic hardware echo canceler. The new octasic update
fixes faxing/modem issues over octasic hwec. The previous
release contained a bug that limited the faxing/modem speeds
to 26k. The new update properly detects fax/modem and works
with full speed of 33k fax and 56k modem.
- A200/A400 Updated
This update fixes the offhook startup failure.
On startup if fxs is offhook driver will start correctly
- Wanpipe Startup order changed
The wanpipe startup scripts on bootup were previously
set too early "S03wanrouter". This caused unpredictable
behaviour on some systems. We have now moved wanrouter
startup on boot up to "S11wanrouter", after networking
code.
- Zaptel Adjustable Chunk Size Feature
Wanpipe drivers can work with 1,2,5 and 10ms
chunk size. Zaptel also supports this, however
the wct4xx driver breaks compilation when chunk
size is changed. ./Setup can how change the
zaptel chunk size for you and update zaptel
Makefiles to remove wct4xx driver out.
Zaptel with 1ms generates 1000 interrupts per sec
Zaptel with 10ms generates 100 interrupts per sec.
As you can see its a drastic interrupt performance
increase.
NOTE: This breaks software echo cancelation, but
its not needed since we have hwec.
* Fri Jun 06 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.1.1
====================================================================
- A101/2/4/8 (MAXIM) AFT Update IMPORTANT
A major bug fix for AFT Maxim E1 cards for E1 CRC4 Mode.
On some lines the E1/CRC4 mode causes line errors on
the telco side which results in PRI not coming up.
Symptiom: E1 is up (no alarms) on local side but pri is
not coming up! (Only in E1 CRC4 Mode)
- A101/2/4/8 (MAXIM) Mandatory Firmware Update
An echo canceler bug has been fixed for all AFT
MAXIM Cards A101/2/4/8dm. New firmware version is V31.
If you are running MAXIM cards with hwec wiht older
firmware version you must upgrade.
- Updated SMG
Fixed DTMF synchronization
- Updated SMG
Fixed DTMF synchronization
* Fri Jun 06 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.1.0.1
====================================================================
- Minor release
- Contains zaptel patch for zaptel 1.2.17 and above.
- No driver changes
* Fri May 17 2007 Nenad Corbic <ncorbic@sangoma.com> - Beta - 3.1.0
====================================================================
- Major new BETA wanpipe release
Changed wanpipe versioning:
Release: A.B.C.D
A - Major Relase number
B - Indicates Stable or Beta
Odd number is Beta
Even number is Stable
C - Minor Release number
D - Optional pre-release and custom releases
- Fixed RBS Support for all Maxim cards A101/2/4/8.
- Support for 2.6.20 kernels.
- Support for New: A101D A102D A104D Maxim cards
:
- Support for New: AFT 56K DDS card
- Redesigned TDM API Events
- TDM API Analog Support

100
Makefile
View File

@ -19,29 +19,6 @@ ifndef ZAPDIR
ZAPDIR=/usr/src/zaptel
endif
#Check if zaptel exists
ifneq (,$(wildcard $(ZAPDIR)/zaptel.h))
ZAPDIR_PRIV=$(ZAPDIR)
ENABLE_WANPIPEMON_ZAP=YES
EXTRA_CFLGS+= -DSTANDALONE_ZAPATA -DBUILDING_TONEZONE
ZAP_OPTS= --zaptel-path=$(ZAPDIR)
ZAP_PROT=TDM
else
ifneq (,$(wildcard $(ZAPDIR)/kernel/zaptel.h))
ZAPDIR=/usr/src/zaptel/kernel
ZAPDIR_PRIV=$(ZAPDIR)
ENABLE_WANPIPEMON_ZAP=YES
EXTRA_CFLGS+= -DSTANDALONE_ZAPATA -DBUILDING_TONEZONE
ZAP_OPTS= --zaptel-path=$(ZAPDIR)
ZAP_PROT=TDM
else
ZAP_OPTS=
ZAP_PROT=
ZAPDIR_PRIV=
ENABLE_WANPIPEMON_ZAP=NO
endif
endif
#Kernel version and location
ifndef KVER
KVER=$(shell uname -r)
@ -59,6 +36,10 @@ endif
ifndef ARCH
ARCH=$(shell uname -m)
endif
ifndef ASTDIR
ASTDIR=/usr/src/asterisk
endif
INSTALLPREFIX=
@ -84,32 +65,23 @@ EXTRA_UTIL_FLAGS += -I$(PWD)/patches/kdrivers/wanec -I$(PWD)/patches/kdrivers/wa
ENABLE_WANPIPEMON_ZAP=NO
ZAPHDLC_PRIV=/etc/wanpipe/.zaphdlc
RM = @rm -rf
JUNK = *~ *.bak DEADJOE
#Check if zaptel exists
#ifneq (,$(wildcard $(ZAPDIR)/zaptel.h))
# ZAPDIR_PRIV=$(ZAPDIR)
# ENABLE_WANPIPEMON_ZAP=YES
# EXTRA_CFLGS+= -DSTANDALONE_ZAPATA -DBUILDING_TONEZONE
# ZAP_OPTS= --zaptel-path=$(ZAPDIR)
# ZAP_PROT=TDM
#else
# ifneq (,$(wildcard $(ZAPDIR)/kernel/zaptel.h))
# ZAPDIR=/usr/src/zaptel/kernel
# ZAPDIR_PRIV=$(ZAPDIR)
# ENABLE_WANPIPEMON_ZAP=YES
# EXTRA_CFLGS+= -DSTANDALONE_ZAPATA -DBUILDING_TONEZONE
# ZAP_OPTS= --zaptel-path=$(ZAPDIR)
# ZAP_PROT=TDM
# else
# ZAP_OPTS=
# ZAP_PROT=
# ZAPDIR_PRIV=
# ENABLE_WANPIPEMON_ZAP=NO
# endif
#endif
ifneq (,$(wildcard $(ZAPDIR)/zaptel.h))
ZAPDIR_PRIV=$(ZAPDIR)
ENABLE_WANPIPEMON_ZAP=YES
EXTRA_CFLGS+= -DSTANDALONE_ZAPATA -DBUILDING_TONEZONE
ZAP_OPTS= --zaptel-path=$(ZAPDIR)
ZAP_PROT=TDM
else
ZAP_OPTS=
ZAP_PROT=
ZAPDIR_PRIV=
ENABLE_WANPIPEMON_ZAP=NO
endif
RM = @rm -rf
JUNK = *~ *.bak DEADJOE
# First pass, kernel Makefile reads module objects
@ -121,17 +93,13 @@ else
#This will check for zaptel, kenrel source and build utilites and kernel modules
#within local directory structure
all: _checkzap _checksrc all_bin_kmod all_util
#Build with all binaries
all: _checkzap _checksrc all_bin_kmod all_util
#Build only source (NO WAN protocols)
all_src: _checkzap _checksrc all_kmod all_util
#Build only kernel modules
all_kmod: _checkzap _checksrc _cleanoldwanpipe _check_kver
$(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C $(KDIR) SUBDIRS=$(WAN_DIR) EXTRA_FLAGS="$(EXTRA_CFLAGS) $(shell cat ./patches/kfeatures)" ZAPDIR=$(ZAPDIR_PRIV) ZAPHDLC=$(ZAPHDLC_PRIV) HOMEDIR=$(PWD) modules
$(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C $(KDIR) SUBDIRS=$(WAN_DIR) EXTRA_FLAGS="$(EXTRA_CFLAGS) $(shell cat ./patches/kfeatures)" ZAPDIR=$(ZAPDIR_PRIV) ZAPHDLC=$(ZAPHDLC_PRIV) HOMEDIR=$(PWD) modules
all_bin_kmod: _checkzap _checksrc _cleanoldwanpipe _check_kver
@if [ -e $(PWD)/ast_build_dir ]; then \
@ -183,7 +151,7 @@ _check_kver:
_checkzap:
@echo
@echo " +--------- Wanpipe Build Info --------------+"
@echo
@echo
@if [ ! -e $(ZAPDIR)/zaptel.h ]; then \
echo " Compiling Wanpipe without ZAPTEL Support!"; \
ZAPDIR_PRIV=; \
@ -215,12 +183,12 @@ install_kmod:
install -m 644 -D $(WAN_DIR)/sdladrv.${MODTYPE} $(INSTALLPREFIX)/$(KINSTDIR)/drivers/net/wan/sdladrv.${MODTYPE}
install -m 644 -D $(WAN_DIR)/wanpipe.${MODTYPE} $(INSTALLPREFIX)/$(KINSTDIR)/drivers/net/wan/wanpipe.${MODTYPE}
@rm -f $(INSTALLPREFIX)/$(KINSTDIR)/drivers/net/wan/wanpipe_syncppp.${MODTYPE}
@if [ -e $(WAN_DIR)/wanpipe_syncppp.${MODTYPE} ]; then \
@if [ -f $(WAN_DIR)/wanpipe_syncppp.${MODTYPE} ]; then \
echo "install -m 644 -D $(WAN_DIR)/wanpipe_syncppp.${MODTYPE} $(INSTALLPREFIX)/$(KINSTDIR)/drivers/net/wan/wanpipe_syncppp.${MODTYPE}"; \
install -m 644 -D $(WAN_DIR)/wanpipe_syncppp.${MODTYPE} $(INSTALLPREFIX)/$(KINSTDIR)/drivers/net/wan/wanpipe_syncppp.${MODTYPE}; \
fi
@rm -f $(INSTALLPREFIX)/$(KINSTDIR)/net/wanrouter/wanpipe_lip.${MODTYPE};
@if [ -e $(WAN_DIR)/wanpipe_lip.${MODTYPE} ]; then \
@if [ -f $(WAN_DIR)/wanpipe_lip.${MODTYPE} ]; then \
echo "install -m 644 -D $(WAN_DIR)/wanpipe_lip.${MODTYPE} $(INSTALLPREFIX)/$(KINSTDIR)/net/wanrouter/wanpipe_lip.${MODTYPE}"; \
install -m 644 -D $(WAN_DIR)/wanpipe_lip.${MODTYPE} $(INSTALLPREFIX)/$(KINSTDIR)/net/wanrouter/wanpipe_lip.${MODTYPE}; \
fi
@ -243,6 +211,14 @@ clean_util:
install_util:
$(MAKE) -C util install SYSINC=$(PWD)/$(WINCLUDE) CC=$(CC) PREFIX=$(INSTALLPREFIX)
install_smgbri:
$(MAKE) -C ssmg/sangoma_mgd.trunk/ install SYSINC=$(PWD)/$(WINCLUDE) CC=$(CC) PREFIX=$(INSTALLPREFIX)
install -D -m 755 ssmg/sangoma_bri/smg_ctrl $(INSTALLPREFIX)/usr/sbin/smg_ctrl
install -D -m 755 ssmg/sangoma_bri/sangoma_brid $(INSTALLPREFIX)/usr/sbin/sangoma_brid
$(MAKE) -C ssmg/libsangoma.trunk/ install DESTDIR=$(INSTALLPREFIX)
$(MAKE) -C ssmg/sangoma_mgd.trunk/lib/libteletone install DESTDIR=$(INSTALLPREFIX)
#Install etc files
install_etc:
@if [ ! -e $(INSTALLPREFIX)/etc/wanpipe ]; then \
@ -277,3 +253,17 @@ install_inc:
@\cp -f $(PWD)/patches/kdrivers/include/*.h $(INSTALLPREFIX)/usr/include/wanpipe/
@\cp -rf $(PWD)/patches/kdrivers/wanec/oct6100_api/include/ $(INSTALLPREFIX)/usr/include/wanpipe/oct6100_api
@\cp -rf $(PWD)/patches/kdrivers/wanec/*.h $(INSTALLPREFIX)/usr/include/wanpipe/
smgbri:
@cd ssmg/libsangoma.trunk; ./configure --prefix=/usr ; cd ../..;
$(MAKE) -C ssmg/libsangoma.trunk/ CC=$(CC) PREFIX=$(INSTALLPREFIX) KDIR=$(KDIR)
@cd ssmg/sangoma_mgd.trunk/lib/libteletone; ./configure --prefix=/usr ; cd ../../..;
$(MAKE) -C ssmg/sangoma_mgd.trunk/lib/libteletone CC=$(CC) PREFIX=$(INSTALLPREFIX) KDIR=$(KDIR)
$(MAKE) -C ssmg/sangoma_mgd.trunk/ CC=$(CC) PREFIX=$(INSTALLPREFIX) KDIR=$(KDIR) ASTDIR=$(ASTDIR)
clean_smgbri:
$(MAKE) -C ssmg/libsangoma.trunk/ clean CC=$(CC) PREFIX=$(INSTALLPREFIX) KDIR=$(KDIR)
$(MAKE) -C ssmg/sangoma_mgd.trunk/lib/libteletone clean CC=$(CC) PREFIX=$(INSTALLPREFIX) KDIR=$(KDIR)
$(MAKE) -C ssmg/sangoma_mgd.trunk/ clean CC=$(CC) PREFIX=$(INSTALLPREFIX) KDIR=$(KDIR)

View File

@ -2,29 +2,31 @@ Wanpipe Configuration
======================
For Latest Info please visit
-------------------------------------------------
http://wiki.sangoma.com
-------------------------------------------------
Asterisk/Zaptel Configuration
-> /usr/sbin/wancfg_zaptel
TDM API Config
-> /usr/sbin/wancfg_tdmapi
SMG/SS7 Config
-> /usr/sbin/wancfg_smg
WAN Configuration
-> /usr/sbin/wancfg
Before starting WANPIPE, a configuration file (wanpipeN.conf, where
N=1,2,3..etc.)must be created in /etc/wanpipe directory.
This file contains the line, hardware and interface definitions
for the WAN connection.
RELEASE 2.3.2 and on:
The new WANCFG utility has been release. It should
be used to configure standard WAN protocols like:
FR, PPP, CHDLC,
MULTILINK PPP (TTY), TDM_VOICE
HDLC API
ADSL
For both AFT and S514 series cards.
The old WANCFG utility has been renamed to wancfg_legacy.
This utility should be used for all API protocols like:
X25, SDLC, BITSTREAMING ...
The program /usr/sbin/wancfg should be used to create the
configuration file(s). It is a GUI, ncurses based,
configurator that contains all wanpipe options
@ -38,16 +40,11 @@ the sample configuration files located in
Things you should know before starting /usr/sbin/wancfg:
1. Operatoin Mode:
VOICE : Asterisk/Zaptel, TDM API
WAN/IP: Frame Relay, MultiLink PPP etc..
2. Protocol:
Asterisk/Voice/TDM,
1. Protocol:
Frame Relay, MulitPort Frame Relay,
CHDLC, PPP, MultiPort PPP, ADSL, X25 ...
3. Protocol/IP Info:
2. Protocol/IP Info:
Frame Relay: Type of Status Signaling (LMI,
ANSI, or Q.933
Number of DLCI to configure
@ -94,7 +91,7 @@ Things you should know before starting /usr/sbin/wancfg:
IP Info: (Not needed for PPPoE)
4. CSU/DSU Info:
3. CSU/DSU Info:
T1/E1: Encoding
Framing

View File

@ -1 +0,0 @@
ChangeLog.stable

87
README.changes Normal file
View File

@ -0,0 +1,87 @@
WANPIPE OFFICIAL RELEASE CHANGE LOG
===================================
Author: Nenad Corbic <ncorbic@sangoma.com>
Wanpipe Linux Web Page:
-------------------
For latest docs please visit Sangoma Wiki
Sangoma Wiki: http://wiki.sangoma.com
MAJOR CHANGES
-------------
o The 2.3.4 release contains:
AFT A108 & A108D Drivers.
Updated TDMV Channelized Driver for Asterisk
with support for hardware echo cancellation.
TDM API Drivers.
Used to create custom TDM applications over
sangoma AFT devices.
Sangoma Signal Media Gateway:
SS7 Support for Asterisk
LIP Protocol Layer:
New protocols: ATM (AAL5), Frame Relay EEK
o The 2.3.3 release contains:
AFT A104 TDMV Channelized Driver for Asterisk
The A104 TDMV Driver uses the channelization feature
of the A104 Card, to DMA 8byte chunks directly
into Zaptel buffers.
AFT A104 TDMV DCHAN Feature
The DCHAN PRI has hardware HDLC support.
o The 2.3.2 release contains:
Stable TDMV Wanpipe drivers for Asterisk.
The TDMV drivers support both A102 and A104 cars.
Please read wanpipe/doc/README.asterisk
Stable TE3 Drivers for AFT A301 TE3 Unchannelized Card.
All WAN protocols are supported: Frame Relay, PPP, CHDLC..
Stable LIP Network Layer: Separates Wanpipe hardware from
the Network Protocols: Frame Relay, CHDLC,
PPP, LAPB API, XDLC API
o The 2.3.1 contains major structural driver changes.
The new Hardware Abstraction layer cleanly separates, the
physical layer from the driver/protocol layers.
Support for 2.6.X kernel.
o The 2.3.0 contains major structural driver changes
most notably the ADSL OS abstraction layer. ADLS drivers
can now be compiled against any custom kernel.
o From 2.2.6 release forward the new S514-7 Dual T/E1,
S514-8 Single TE1 and S518 ADSL cards are supproted.
o From 2.2.4 release forward the new S514-4 T/E1 and S514-5 56K
cards are supported.
o From 2.2.3 release forward ALL wanpipe modules
including API modules, can be recompiled from
./Setup installation script!
NO KERNEL RE-COMPILATION is necessary.
o From 2.2.3 release forward, wanpipe directory
architecture has been changed. New home directory
for wanpipe is /etc/wanpipe.
o All old releases are in ../old_releases/wanpipe directory.
o Custom RPMs can be build based on current kernel image
by using the ./Setup buildrpm command.
Read the README.rpmbuild.

711
Setup

File diff suppressed because it is too large Load Diff

View File

@ -16,7 +16,7 @@ SYSINC=/usr/src/linux/include
endif
VPATH = $(SYSINC)
DIR_EC_APILIB=../wanec_apilib
DIR_EC_APILIB=/common/wantools/wanec_apilib
SRC_EC_APILIB=$(DIR_EC_APILIB)/wanec_api.c $(DIR_EC_APILIB)/wanec_api_lib.c
INC_EC_APILIB=-I/usr/include/wanpipe/oct6100_api -I$(DIR_EC_APILIB)
@ -26,8 +26,7 @@ CFLAGS += -I/usr/include/wanpipe
TARGETS=aft_api
TARGETS+= aft_api_events
TARGETS+= aft_integrity
TARGETS+= aft_echo
TARGETS+= aft_api_repeater
#TARGETS+= aft_api_ss7
#TARGETS+= aft_api_check
#TARGETS+= aft_tdm_api
@ -43,6 +42,9 @@ aft_api: aft_api.c ../lib/lib_api.c
aft_api_events: aft_api_events.c $(SRC_EC_APILIB) ../lib/lib_api.c
$(CC) $(CFLAGS) $(INC_EC_APILIB) -o $@ $^
aft_api_repeater: aft_api_repeater.c ../lib/lib_api.c
$(CC) $(CFLAGS) -o $@ $^
aft_api_check: aft_api_check.c ../lib/lib_api.c
$(CC) $(CFLAGS) -o $@ $^
@ -52,11 +54,5 @@ aft_tdm_api: aft_tdm_api.c ../lib/lib_api.c
aft_api_ss7: aft_api_ss7.c ../lib/lib_api.c
$(CC) $(CFLAGS) -o $@ $^
aft_integrity: aft_integrity.c ../lib/lib_api.c
$(CC) $(CFLAGS) -o $@ $^
aft_echo: aft_echo.c ../lib/lib_api.c
$(CC) $(CFLAGS) -o $@ $^
clean:
rm -f $(TARGETS)

Binary file not shown.

View File

@ -34,10 +34,10 @@
#include <linux/sdla_xilinx.h>
#include "lib_api.h"
#define MAX_TX_DATA 5000 /* Size of tx data */
#define MAX_TX_DATA 1024*10 /* Size of tx data */
#define MAX_FRAMES 5000 /* Number of frames to transmit */
#define MAX_RX_DATA 5000
#define MAX_RX_DATA 1024*10
unsigned short Rx_lgth;
@ -90,8 +90,8 @@ int MakeConnection(void)
printf("\nConnecting to card %s, interface %s prot %x\n", card_name, if_name,htons(PVC_PROT));
strcpy( (char*)sa.sll_device, if_name);
strcpy( (char*)sa.sll_card, card_name);
strcpy( sa.sll_device, if_name);
strcpy( sa.sll_card, card_name);
sa.sll_protocol = htons(PVC_PROT);
sa.sll_family=AF_WANPIPE;
@ -543,7 +543,7 @@ int main(int argc, char* argv[])
proceed=init_args(argc,argv);
if (proceed != WAN_TRUE){
usage((unsigned char*)argv[0]);
usage(argv[0]);
return -1;
}

Binary file not shown.

View File

@ -85,8 +85,8 @@ int MakeConnection(void)
printf("\nConnecting to card %s, interface %s prot %x\n", card_name, if_name,htons(PVC_PROT));
strcpy( (char*)sa.sll_device, if_name);
strcpy( (char*)sa.sll_card, card_name);
strcpy( sa.sll_device, if_name);
strcpy( sa.sll_card, card_name);
sa.sll_protocol = htons(PVC_PROT);
sa.sll_family=AF_WANPIPE;
@ -234,7 +234,6 @@ tone_try_again:
return 0;
}
#if 0
static int ringdetect_event_ctrl(u_int8_t mode, int channel, int tone)
{
api_tx_hdr_t api_tx_hdr;
@ -259,7 +258,6 @@ ringdetect_try_again:
return 0;
}
#endif
static int event_decode(api_rx_hdr_t *rx_hdr)
{
@ -729,7 +727,7 @@ int main(int argc, char* argv[])
proceed=init_args(argc,argv);
if (proceed != WAN_TRUE){
usage((unsigned char*)argv[0]);
usage(argv[0]);
return -1;
}

596
api/aft/aft_api_repeater.c Normal file
View File

@ -0,0 +1,596 @@
/*****************************************************************************
* aft_api.c AFT T1/E1: HDLC API Sample Code
*
* Author(s): Nenad Corbic <ncorbic@sangoma.com>
*
* Copyright: (c) 2003-2004 Sangoma Technologies Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
* ============================================================================
*/
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <linux/if_wanpipe.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <signal.h>
#include <linux/if.h>
#include <linux/wanpipe_defines.h>
#include <linux/wanpipe_cfg.h>
#include <linux/wanpipe.h>
#include <linux/sdla_aft_te1.h>
#include "lib_api.h"
#define MAX_TX_DATA 5000 /* Size of tx data */
#define MAX_FRAMES 5000 /* Number of frames to transmit */
#define MAX_RX_DATA 5000
unsigned short Rx_lgth;
unsigned char Rx_data[MAX_RX_DATA];
unsigned char Tx_data[MAX_TX_DATA + sizeof(api_tx_hdr_t)];
/* Prototypes */
int MakeConnection(void);
void handle_socket( void);
void sig_end(int sigid);
int sock;
FILE *tx_fd=NULL,*rx_fd=NULL;
/***************************************************
* MakeConnection
*
* o Create a Socket
* o Bind a socket to a wanpipe network interface
* (Interface name is supplied by the user)
*/
void print_packet(unsigned char *buf, int len)
{
int x;
printf("{ | ");
for (x=0;x<len;x++){
if (x && x%24 == 0){
printf("\n ");
}
if (x && x%8 == 0)
printf(" | ");
printf("%02x ",buf[x]);
}
printf("}\n");
}
int MakeConnection(void)
{
struct wan_sockaddr_ll sa;
memset(&sa,0,sizeof(struct wan_sockaddr_ll));
errno = 0;
sock = socket(AF_WANPIPE, SOCK_RAW, 0);
if( sock < 0 ) {
perror("Socket");
return( WAN_FALSE );
} /* if */
printf("\nConnecting to card %s, interface %s prot %x\n", card_name, if_name,htons(PVC_PROT));
strcpy( sa.sll_device, if_name);
strcpy( sa.sll_card, card_name);
sa.sll_protocol = htons(PVC_PROT);
sa.sll_family=AF_WANPIPE;
if(bind(sock, (struct sockaddr *)&sa, sizeof(struct wan_sockaddr_ll)) < 0){
perror("bind");
printf("Failed to bind a socket to %s interface\n",if_name);
exit(0);
}
{
unsigned int customer_id;
int err = ioctl(sock,SIOC_AFT_CUSTOMER_ID,&customer_id);
if (err){
perror("Customer ID: ");
}else{
printf("Customer ID 0x%X\n",customer_id);
}
}
printf("Socket bound to %s\n\n",if_name);
return( WAN_TRUE );
}
int sangoma_read_socket(int sock, void *data, int len, int flag)
{
return recv(sock,data,len,flag);
}
int sangoma_readmsg_socket(int sock, void *hdrbuf, int hdrlen, void *databuf, int datalen, int flag)
{
struct msghdr msg;
struct iovec iov[2];
memset(&msg,0,sizeof(struct msghdr));
iov[0].iov_len=hdrlen;
iov[0].iov_base=hdrbuf;
iov[1].iov_len=datalen;
iov[1].iov_base=databuf;
msg.msg_iovlen=2;
msg.msg_iov=iov;
return recvmsg(sock,&msg,flag);
}
int sangoma_send_socket(int sock, void *data, int len, int flag)
{
return send(sock,data,len,flag);
}
int sangoma_sendmsg_socket(int sock, void *hdrbuf, int hdrlen, void *databuf, int datalen, int flag)
{
struct msghdr msg;
struct iovec iov[2];
memset(&msg,0,sizeof(struct msghdr));
iov[0].iov_len=hdrlen;
iov[0].iov_base=hdrbuf;
iov[1].iov_len=datalen;
iov[1].iov_base=databuf;
msg.msg_iovlen=2;
msg.msg_iov=iov;
return sendmsg(sock,&msg,flag);
}
/***************************************************
* HANDLE SOCKET
*
* o Read a socket
* o Cast data received to api_rx_element_t data type
* o The received packet contains 16 bytes header
*
* ------------------------------------------
* | 16 bytes | X bytes ...
* ------------------------------------------
* Header Data
*
* o Data structures:
*
* typedef struct {
* unsigned char error_flag;
* unsigned short time_stamp;
* unsigned char reserved[13];
* } api_rx_hdr_t;
*
* typedef struct {
* api_rx_hdr_t api_rx_hdr;
* unsigned char data[1];
* } api_rx_element_t;
*
*/
void handle_socket(void)
{
unsigned int Rx_count,Tx_count,Tx_length;
api_rx_element_t* api_rx_el;
api_tx_element_t * api_tx_el;
fd_set ready,write,oob;
int err,i;
int rlen;
#if 0
int stream_sync=0;
#endif
Rx_count = 0;
Tx_count = 0;
Tx_length = tx_size;
printf("\n\nSocket Handler: Rx=%d Tx=%i TxCnt=%i TxLen=%i TxDelay=%i\n",
read_enable,write_enable,tx_cnt,tx_size,tx_delay);
/* Initialize the Tx Data buffer */
memset(&Tx_data[0],0,MAX_TX_DATA + sizeof(api_tx_hdr_t));
/* If rx file is specified, open
* it and prepare it for writing */
if (files_used & RX_FILE_USED){
rx_fd=fopen(rx_file,"wb");
if (!rx_fd){
printf("Failed to open file %s\n",rx_file);
perror("File: ");
return;
}
printf("Opening %s rx file\n",rx_file);
}
/* Cast the Tx data packet with the tx element
* structure. We must insert a 16 byte
* driver header, which driver will remove
* before passing packet out the physical port */
api_tx_el = (api_tx_element_t*)&Tx_data[0];
if (files_used & TX_FILE_USED){
/* TX file is used to transmit data */
tx_fd=fopen(tx_file,"rb");
if (!tx_fd){
printf("Failed to open file %s\n",tx_file);
perror("File: ");
return;
}
printf("Opening %s tx file\n",rx_file);
rlen=fread((void*)&Tx_data[sizeof(api_tx_hdr_t)],
sizeof(char),
Tx_length,tx_fd);
if (!rlen){
printf("%s: File empty!\n",
tx_file);
return;
}
}else{
/* Create a Tx packet based on user info, or
* by deafult incrementing number starting from 0 */
for (i=0;i<Tx_length;i++){
if (tx_data == -1){
api_tx_el->data[i] = (unsigned char)i;
}else{
#if 0
api_tx_el->data[i] = (unsigned char)tx_data+(i%4);
#else
api_tx_el->data[i] = (unsigned char)tx_data;
#endif
}
}
}
memset(api_tx_el->api_tx_hdr.wp_api_tx_hdr_hdlc_rpt_data,tx_data+1,4);
api_tx_el->api_tx_hdr.wp_api_tx_hdr_hdlc_rpt_len=4;
/* Main Rx Tx OOB routine */
for(;;) {
/* Initialize all select() descriptors */
FD_ZERO(&ready);
FD_ZERO(&write);
FD_ZERO(&oob);
FD_SET(sock,&oob);
FD_SET(sock,&ready);
if (write_enable){
FD_SET(sock,&write);
}
/* Select will block, until:
* 1: OOB event, link level change
* 2: Rx data available
* 3: Interface able to Tx */
if(select(sock + 1,&ready, &write, &oob, NULL)){
fflush(stdout);
if (FD_ISSET(sock,&oob)){
/* An OOB event is pending, usually indicating
* a link level change */
err = recv(sock, Rx_data, MAX_RX_DATA, MSG_OOB);
if(err < 0 ) {
printf("Failed to receive OOB %i , %i\n", Rx_count, err);
err = ioctl(sock,SIOC_WANPIPE_SOCK_STATE,0);
printf("Sock state is %s\n",
(err == 0) ? "CONNECTED" :
(err == 1) ? "DISCONNECTED" :
"CONNECTING");
break;
}
printf("GOT OOB EXCEPTION CMD Exiting\n");
break;
}
if (FD_ISSET(sock,&ready)){
/* An Rx packet is pending
* 1: Read the rx packet into the Rx_data
* buffer. Confirm len > 0
*
* 2: Cast Rx_data to the api_rx_element.
* Thus, removing a 16 byte header
* attached by the driver.
*
* 3. Check error_flag:
* CRC,Abort..etc
*/
memset(Rx_data, 0, sizeof(Rx_data));
#if 1
err = sangoma_readmsg_socket(sock,
Rx_data,16,
&Rx_data[16], MAX_RX_DATA-16,
0);
#else
err = sangoma_read_socket(sock, Rx_data, MAX_RX_DATA, 0);
#endif
if (!read_enable){
goto bitstrm_skip_read;
}
/* err indicates bytes received */
if(err <= 0) {
printf("\nError receiving data\n");
break;
}
api_rx_el = (api_rx_element_t*)&Rx_data[0];
/* Check the packet length */
Rx_lgth = err - sizeof(api_rx_hdr_t);
if(Rx_lgth<=0) {
printf("\nShort frame received (%d)\n",
Rx_lgth);
return;
}
if (api_rx_el->api_rx_hdr.error_flag){
printf("Data: ");
for(i=0;i<Rx_lgth; i ++) {
printf("0x%02X ", Rx_data[i+16]);
}
printf("\n");
}
if (api_rx_el->api_rx_hdr.error_flag & (1<<WP_FIFO_ERROR_BIT)){
printf("\nPacket with fifo overflow err=0x%X len=%i\n",
api_rx_el->api_rx_hdr.error_flag,Rx_lgth);
continue;
}
if (api_rx_el->api_rx_hdr.error_flag & (1<<WP_CRC_ERROR_BIT)){
printf("\nPacket with invalid crc! err=0x%X len=%i\n",
api_rx_el->api_rx_hdr.error_flag,Rx_lgth);
continue;
}
if (api_rx_el->api_rx_hdr.error_flag & (1<<WP_ABORT_ERROR_BIT)){
printf("\nPacket with abort! err=0x%X len=%i\n",
api_rx_el->api_rx_hdr.error_flag,Rx_lgth);
continue;
}
#if 0
if (api_rx_el->data[0] == tx_data && api_rx_el->data[1] == (tx_data+1)){
if (!stream_sync){
printf("GOT SYNC %x\n",api_rx_el->data[0]);
}
stream_sync=1;
}else{
if (stream_sync){
printf("OUT OF SYNC: %x\n",api_rx_el->data[0]);
}
}
#endif
if ((files_used & RX_FILE_USED) && rx_fd){
fwrite((void*)&Rx_data[sizeof(api_rx_hdr_t)],
sizeof(char),
Rx_lgth,
rx_fd);
}
++Rx_count;
//printf("RECEIVE:\n");
//print_packet(&Rx_data[16],Rx_lgth);
if (Rx_lgth > 8) {
verbose=3;
} else {
if (verbose) {
verbose--;
}
}
if (verbose){
printf("Received %i Olen=%i Length = %i\n",
Rx_count, err,Rx_lgth);
#if 1
printf("Data: ");
for(i=0;i<Rx_lgth; i ++) {
printf("%02X ", api_rx_el->data[i]);
}
printf("\n");
#endif
}else{
//putchar('R');
}
if (rx_cnt > 0 && Rx_count >= rx_cnt){
break;
}
bitstrm_skip_read:
;
}
if (FD_ISSET(sock,&write)){
if (Tx_count == 0){
//printf("SEND: Len=%i\n",Tx_length);
//print_packet(&Tx_data[16],Tx_length);
}
#if 1
err = sangoma_sendmsg_socket(sock,
Tx_data,16,
&Tx_data[16], Tx_length,
0);
#else
err = sangoma_send_socket(sock,Tx_data,
Tx_length + sizeof(api_tx_hdr_t), 0);
#endif
if (err <= 0){
if (errno == EBUSY){
if (verbose){
printf("Sock busy try again!\n");
}
/* Socket busy try sending again !*/
}else{
/* Check socket state */
err = ioctl(sock,SIOC_WANPIPE_SOCK_STATE,0);
printf("Sock state is %s\n",
(err == 0) ? "CONNECTED" :
(err == 1) ? "DISCONNECTED" :
"CONNECTING");
printf("Failed to send errno=%i len=%i \n",errno,Tx_length);
perror("Send: ");
break;
}
}else{
++Tx_count;
tx_data++;
memset(api_tx_el->data,tx_data,Tx_length);
memset(api_tx_el->api_tx_hdr.wp_api_tx_hdr_hdlc_rpt_data,tx_data+1,4);
api_tx_el->api_tx_hdr.wp_api_tx_hdr_hdlc_rpt_len=4;
if (verbose){
printf("Packet sent: Sent %i : %i\n",
err,Tx_count);
}else{
//putchar('T');
}
if ((files_used & TX_FILE_USED) && tx_fd){
rlen=fread((void*)&Tx_data[sizeof(api_tx_hdr_t)],
sizeof(char),
Tx_length,tx_fd);
if (!rlen){
printf("\nTx of file %s is done!\n",
tx_file);
break;
}
if (Tx_length != rlen){
Tx_length = rlen;
}
}
}
}
if (tx_delay){
usleep(tx_delay);
}
if (tx_cnt && tx_size && Tx_count >= tx_cnt && !(files_used & TX_FILE_USED)){
write_enable=0;
if (rx_cnt > 0){
/* Dont break let rx finish */
}else{
break;
}
}
}
}
if (tx_fd){
fclose(tx_fd);
}
if (rx_fd){
fclose(rx_fd);
}
close (sock);
}
/***************************************************************
* Main:
*
* o Make a socket connection to the driver.
* o Call handle_socket() to read the socket
*
**************************************************************/
int main(int argc, char* argv[])
{
int proceed;
proceed=init_args(argc,argv);
if (proceed != WAN_TRUE){
usage(argv[0]);
return -1;
}
signal(SIGINT,&sig_end);
proceed = MakeConnection();
if( proceed == WAN_TRUE){
handle_socket();
return 0;
}
return 0;
};
void sig_end(int sigid)
{
printf("Got Signal %i\n",sigid);
if (tx_fd){
fclose(tx_fd);
}
if (rx_fd){
fclose(rx_fd);
}
if (sock){
close (sock);
}
exit(1);
}

Binary file not shown.

View File

@ -1,316 +0,0 @@
/*****************************************************************************
* chdlc_api.c CHDLC API: Receive Module
*
* Author(s): Gideon Hack & Nenad Corbic <ncorbic@sangoma.com>
*
* Copyright: (c) 1995-2001 Sangoma Technologies Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
* ============================================================================
* Description:
*
* The chdlc_api.c utility will bind to a socket to a chdlc network
* interface, and continously tx and rx packets to an from the sockets.
*
* This example has been written for a single interface in mind,
* where the same process handles tx and rx data.
*
* A real world example, should use different processes to handle
* tx and rx spearately.
*/
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <linux/if_wanpipe.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <linux/wanpipe.h>
#include <linux/sdla_aft_te1.h>
#include "lib_api.h"
#define FALSE 0
#define TRUE 1
#define LGTH_CRC_BYTES 0
#define MAX_TX_DATA 5000 /* Size of tx data */
#define MAX_RX_DATA MAX_TX_DATA
#define SOCK_TIMEOUT 1
/*===================================================
* Golobal data
*==================================================*/
unsigned char HDLC_streaming = FALSE;
unsigned short Rx_lgth;
unsigned char Rx_data[MAX_RX_DATA];
unsigned char Tx_data[MAX_TX_DATA];
int sock;
/*===================================================
* Function Prototypes
*==================================================*/
int MakeConnection(void);
void handle_socket( void);
/*===================================================
* MakeConnection
*
* o Create a Socket
* o Bind a socket to a wanpipe network interface
* (Interface name is supplied by the user)
*==================================================*/
int MakeConnection(void)
{
struct wan_sockaddr_ll sa;
memset(&sa,0,sizeof(struct wan_sockaddr_ll));
errno = 0;
sock = socket(AF_WANPIPE, SOCK_RAW, 0);
if( sock < 0 ) {
perror("Socket");
return(FALSE);
} /* if */
printf("\nConnecting to router %s, interface %s\n", card_name, if_name);
strcpy( (char*)sa.sll_device, if_name);
strcpy( (char*)sa.sll_card, card_name);
sa.sll_protocol = htons(PVC_PROT);
sa.sll_family=AF_WANPIPE;
if(bind(sock, (struct sockaddr *)&sa, sizeof(struct wan_sockaddr_ll)) < 0){
perror("bind");
printf("Failed to bind a socket to %s interface\n",if_name);
exit(0);
}
printf("Socket bound to %s\n\n",if_name);
return(TRUE);
}
/*===========================================================
* handle_socket
*
* o Tx/Rx data to and from the socket
* o Cast received data to an api_rx_element_t data type
* o The received packet contains 16 bytes header
*
* ------------------------------------------
* | 16 bytes | X bytes ...
* ------------------------------------------
* Header Data
*
* RX DATA:
* --------
* Each rx data packet contains the 16 byte header!
*
* o Rx 16 byte data structure:
*
* typedef struct {
* unsigned char error_flag PACKED;
* unsigned short time_stamp PACKED;
* unsigned char reserved[13] PACKED;
* } api_rx_hdr_t;
*
* typedef struct {
* api_rx_hdr_t api_rx_hdr PACKED;
* void * data PACKED;
* } api_rx_element_t;
*
* error_flag:
* bit 0: incoming frame was aborted
* bit 1: incoming frame has a CRC error
* bit 2: incoming frame has an overrun eror
*
* time_stamp:
* absolute time value in ms.
*
* TX_DATA:
* --------
* Each tx data packet MUST contain a 16 byte header!
*
* o Tx 16 byte data structure
*
* typedef struct {
* unsigned char attr PACKED;
* unsigned char reserved[15] PACKED;
* } api_tx_hdr_t;
*
* typedef struct {
* api_tx_hdr_t api_tx_hdr PACKED;
* void * data PACKED;
* } api_tx_element_t;
*
* Currently the chdlc device driver doesn't use any of
* the above fields. Thus, the user can set the 16 bytes
* to ZERO.
*
*/
void handle_socket(void)
{
unsigned int Rx_count,Tx_count,Tx_length;
api_tx_element_t * api_tx_el;
fd_set ready,write,oob;
int err;
struct timeval tv;
tv.tv_usec = 0;
tv.tv_sec = SOCK_TIMEOUT;
Rx_count = 0;
Tx_count = 0;
Tx_length = tx_size;
printf("\n\nSocket Handler: Rx=%d Tx=%i TxCnt=%i TxLen=%i TxDelay=%i RxCnt=%i\n",
read_enable,write_enable,tx_cnt,tx_size,tx_delay,rx_cnt);
/* If running HDLC_STREAMING then the received CRC bytes
* will be passed to the application as part of the
* received data.
*/
api_tx_el = (api_tx_element_t*)&Tx_data[0];
memset(&Tx_data[0],0,MAX_TX_DATA);
while (1) {
err = ioctl(sock,SIOC_WANPIPE_SOCK_STATE,0);
printf("Interface %s state is %s (%d)\n",
if_name,
(err == 0) ? "CONNECTED" :
(err == 1) ? "DISCONNECTED" :
"CONNECTING",err);
if (err < 0) {
printf("Error interface down %s sock disconnected! (%s)\n",
if_name,strerror(errno));
return;
}
if (err > 0) {
printf("Waiting for interface %s to come up!\n",if_name);
sleep(10);
} else {
break;
}
}
for(;;) {
FD_ZERO(&ready);
FD_ZERO(&write);
FD_ZERO(&oob);
FD_SET(sock,&oob);
FD_SET(sock,&ready);
tv.tv_usec = 0;
tv.tv_sec = SOCK_TIMEOUT;
if (write_enable){
FD_SET(sock,&write);
}
fflush(stdout);
err= select(sock + 1,&ready, NULL, &oob, NULL);
if (err < 0) {
printf("Error: inteface down: %s socket disconnected %s\n",
if_name,strerror(errno));
break;
} else if (err == 0) {
/* Timeout do something */
} else {
if (FD_ISSET(sock,&oob)){
err = recv(sock, Rx_data, MAX_RX_DATA, MSG_OOB);
if(err < 0 ) {
printf("Failed to receive OOB %i , %i\n", Rx_count, err);
err = ioctl(sock,SIOC_WANPIPE_SOCK_STATE,0);
printf("Sock state is %s\n",
(err == 0) ? "CONNECTED" :
(err == 1) ? "DISCONNECTED" :
"CONNECTING");
break;
}
printf("Got OOB exception: Link Down !\n");
break;
}
if (FD_ISSET(sock,&ready)){
err = recv(sock, Rx_data, MAX_RX_DATA, 0);
/* err indicates bytes received */
if (err > 0){
Rx_count++;
err = send(sock, Rx_data, err, 0);
Tx_count++;
printf("Rx Len=%i Rx=%i Tx=%i : Echo Ok\r",
err-sizeof(api_rx_hdr_t), Tx_count,Rx_count);
} else {
printf("\nError receiving data\n");
break;
}
}
}
}
close (sock);
}
/***************************************************************
* Main:
*
* o Make a socket connection to the driver.
* o Call handle_socket() to read/write the socket
*
**************************************************************/
int main(int argc, char* argv[])
{
int proceed;
proceed=init_args(argc,argv);
if (proceed != WAN_TRUE){
usage((unsigned char*)argv[0]);
return -1;
}
proceed = MakeConnection();
if(proceed == WAN_TRUE){
handle_socket();
return 0;
}
return 1;
};

Binary file not shown.

View File

@ -11,8 +11,8 @@ OS_TYPE = __LINUX__
DEBUG = 2
# Project file paths.
SYSINC = /usr/src/linux/include
APIINC = /usr/src/linux/include
SYSINC = /usr/include/wanpipe
APIINC = /usr/include/wanpipe
# Tools options.
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I../lib -I$(SYSINC) -I$(APIINC)
@ -22,6 +22,7 @@ CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I../lib -I$(SYSINC)
all: chdlc_api \
chdlc_rts_cts \
chdlc_integrity \
chdlc_modem_cmd \
chdlc_echo
@echo "Ok."
@ -38,6 +39,9 @@ chdlc_rts_cts: chdlc_rts_cts.c
chdlc_integrity: chdlc_integrity.c ../lib/lib_api.c
$(CC) $(CFLAGS) -o $@ $^
chdlc_modem_cmd: chdlc_modem_cmd.c ../lib/lib_api.c
$(CC) $(CFLAGS) -o $@ $^
clean:
rm -f chdlc_api
rm -f chdlc_rts_cts

BIN
api/chdlc/chdlc_modem_cmd Executable file

Binary file not shown.

View File

@ -1,9 +1,9 @@
/*****************************************************************************
* chdlc_api.c CHDLC API: Receive Module
* chdlc_modem_cmd.c CHDLC API: Modem CMD Example
*
* Author(s): Gideon Hack & Nenad Corbic <ncorbic@sangoma.com>
* Author(s): Nenad Corbic <ncorbic@sangoma.com>
*
* Copyright: (c) 1995-2001 Sangoma Technologies Inc.
* Copyright: (c) 1995-2008 Sangoma Technologies Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@ -37,24 +37,26 @@
#include <sys/ioctl.h>
#include <sys/types.h>
#include <linux/wanpipe.h>
#include <linux/sdla_aft_te1.h>
#include <linux/sdla_chdlc.h>
#include "lib_api.h"
#define FALSE 0
#define TRUE 1
#define LGTH_CRC_BYTES 0
#define LGTH_CRC_BYTES 2
#define MAX_TX_DATA 5000 /* Size of tx data */
#define MAX_RX_DATA MAX_TX_DATA
#define SOCK_TIMEOUT 1
FILE *tx_fd=NULL,*rx_fd=NULL;
wan_mbox_t gmbox;
/*===================================================
* Golobal data
*==================================================*/
unsigned short no_CRC_bytes_Rx;
unsigned char HDLC_streaming = FALSE;
unsigned short Rx_lgth;
@ -69,10 +71,6 @@ int sock;
int MakeConnection(void);
void handle_socket( void);
static unsigned char test_data[]={0x00,0x5A, 0xAA, 0xA5, 0xFF};
static unsigned char tx_index=0;
/*===================================================
* MakeConnection
@ -96,8 +94,8 @@ int MakeConnection(void)
printf("\nConnecting to router %s, interface %s\n", card_name, if_name);
strcpy( (char*)sa.sll_device, if_name);
strcpy( (char*)sa.sll_card, card_name);
strcpy( sa.sll_device, if_name);
strcpy( sa.sll_card, card_name);
sa.sll_protocol = htons(PVC_PROT);
sa.sll_family=AF_WANPIPE;
@ -113,31 +111,90 @@ int MakeConnection(void)
}
void init_tx_pattern(void)
static int exec_cmd(int fd, wan_mbox_t * mb)
{
api_tx_element_t * api_tx_el;
unsigned char *data;
int i;
memset(&Tx_data[0],0,MAX_TX_DATA);
/* Initialize the tx packet. The 16 byte header must
* be inserted before tx data. In CHDLC protocol,
* the tx x25 header is not used, thus it can be
* set to zero */
api_tx_el = (api_tx_element_t*)&Tx_data[0];
data = (unsigned char *)api_tx_el->data;
for (i=0;i<tx_size;i++){
data[i] = test_data[tx_index];
tx_index++;
if (tx_index >= sizeof(test_data)){
tx_index=0;
}
int err = ioctl(sock,SIOC_MBOX_CMD,mb);
if (err) {
perror("SIOC_MBOX_CMD");
return -1;
}
switch (mb->wan_return_code) {
case 0:
return 0;
default:
printf("Error: CMD returned 0x%0X\n",
mb->wan_return_code);
return -1;
}
return 0;
}
static unsigned char gstatus=0;
static int exec_read_modem_cmd(int fd, wan_mbox_t * mb)
{
MODEM_STATUS_STRUCT *mstat;
int err=0;
memset(mb,0,sizeof(wan_mbox_t));
mb->wan_data_len = 0;
mb->wan_command = READ_MODEM_STATUS;
err=exec_cmd(fd,mb);
if (err) {
return err;
}
mstat=(MODEM_STATUS_STRUCT*)mb->wan_data;
if (mstat->modem_status == gstatus) {
return 0;
}
gstatus = mstat->modem_status;
printf("MODEM CMD rc=0x%02X data_len=%i data=0x%02X\n",
mb->wan_return_code, mb->wan_data_len, mb->wan_data[0]);
mstat=(MODEM_STATUS_STRUCT*)mb->wan_data;
printf("MODEM STATUS (Data=0x%02X) DCD=%i CTS=%i\n",
mstat->modem_status,
(mstat->modem_status&MODEM_DCD_MASK)?1:0,
(mstat->modem_status&MODEM_CTS_MASK)?1:0);
}
static int exec_set_modem_cmd(int fd, wan_mbox_t * mb, int dtr, int rts)
{
MODEM_STATUS_STRUCT *mstat=(MODEM_STATUS_STRUCT*)mb->wan_data;
int err=0;
memset(mb,0,sizeof(wan_mbox_t));
mb->wan_data_len = 0;
mb->wan_command = SET_MODEM_STATUS;
mb->wan_data_len = 1;
mstat->modem_status = 0;
if (dtr) {
mstat->modem_status |= SET_MODEM_DTR_HIGH;
}
if (rts) {
mstat->modem_status |= SET_MODEM_RTS_HIGH;
}
err=exec_cmd(fd,mb);
if (err) {
return err;
}
printf("MODEM CMD rc=0x%02X data_len=%i data=0x%02X (dtr=%i rts=%i)\n",
mb->wan_return_code, mb->wan_data_len, mb->wan_data[0],dtr,rts);
}
/*===========================================================
* handle_socket
@ -205,12 +262,16 @@ void handle_socket(void)
api_tx_element_t * api_tx_el;
fd_set ready,write,oob;
int err,i;
int rlen;
int ferr;
int txfile_bytes=0;
void *pRx_data,*pTx_data;
int no_CRC_bytes_Rx = LGTH_CRC_BYTES;
struct timeval tv;
tv.tv_usec = 0;
tv.tv_sec = SOCK_TIMEOUT;
pRx_data = (void*)&Rx_data[sizeof(api_rx_hdr_t)];
pTx_data = (void*)&Tx_data[sizeof(api_tx_hdr_t)];
Rx_count = 0;
Tx_count = 0;
Tx_length = tx_size;
@ -223,33 +284,73 @@ void handle_socket(void)
* received data.
*/
api_tx_el = (api_tx_element_t*)&Tx_data[0];
memset(&Tx_data[0],0,MAX_TX_DATA);
init_tx_pattern();
if (files_used & RX_FILE_USED){
rx_fd=fopen(rx_file,"wb");
if (!rx_fd){
printf("Failed to open file %s\n",rx_file);
perror("File: ");
return;
}
printf("Opening %s rx file\n",rx_file);
}
while (1) {
err = ioctl(sock,SIOC_WANPIPE_SOCK_STATE,0);
printf("Interface %s state is %s (%d)\n",
if_name,
(err == 0) ? "CONNECTED" :
(err == 1) ? "DISCONNECTED" :
"CONNECTING",err);
if (files_used & TX_FILE_USED){
if (err < 0) {
printf("Error interface down %s sock disconnected! (%s)\n",
if_name,strerror(errno));
tx_fd=fopen(tx_file,"rb");
if (!tx_fd){
printf("Failed to open file %s\n",tx_file);
perror("File: ");
return;
}
if (err > 0) {
printf("Waiting for interface %s to come up!\n",if_name);
sleep(10);
} else {
break;
printf("Opening %s tx file\n",tx_file);
rlen=fread(pTx_data,
sizeof(char),
Tx_length,tx_fd);
if (!rlen){
printf("%s: File empty!\n",
tx_file);
return;
}
}else{
api_tx_el = (api_tx_element_t*)&Tx_data[0];
for (i=0;i<Tx_length;i++){
if (tx_data == -1){
api_tx_el->data[i] = (unsigned char)i;
}else{
api_tx_el->data[i] = (unsigned char)tx_data;
}
}
}
if (!write_enable) {
while (1) {
exec_read_modem_cmd(sock, &gmbox);
sleep(1);
}
}
sleep(4);
exec_set_modem_cmd(sock, &gmbox, 0, 0);
sleep(4);
exec_set_modem_cmd(sock, &gmbox, 1, 0);
sleep(4);
exec_set_modem_cmd(sock, &gmbox, 0, 1);
sleep(4);
exec_set_modem_cmd(sock, &gmbox, 1, 1);
sleep(4);
exit(1);
for(;;) {
FD_ZERO(&ready);
FD_ZERO(&write);
@ -257,25 +358,12 @@ void handle_socket(void)
FD_SET(sock,&oob);
FD_SET(sock,&ready);
tv.tv_usec = 0;
tv.tv_sec = SOCK_TIMEOUT;
if (write_enable){
FD_SET(sock,&write);
}
fflush(stdout);
err= select(sock + 1,&ready, &write, &oob, &tv);
if (err < 0) {
printf("Error: inteface down: %s socket disconnected %s\n",
if_name,strerror(errno));
break;
} else if (err == 0) {
/* Timeout do someting if you like */
} else {
if(select(sock + 1,&ready, &write, &oob, NULL)){
if (FD_ISSET(sock,&oob)){
@ -300,6 +388,10 @@ void handle_socket(void)
err = recv(sock, Rx_data, MAX_RX_DATA, 0);
if (!read_enable){
goto bitstrm_skip_read;
}
/* err indicates bytes received */
if (err > 0){
@ -310,36 +402,64 @@ void handle_socket(void)
if(Rx_lgth<=0) {
printf("\nShort frame received (%d)\n",
Rx_lgth);
Rx_count++;
continue;
return;
}
++Rx_count;
if (Rx_lgth != Tx_length){
printf("Rx Error cnt %i: Rx length %i not equal to %i\n",
Rx_count,Rx_lgth,Tx_length);
switch (api_rx_el->api_rx_hdr.error_flag){
case 0:
/* Rx packet is good */
break;
case RX_FRM_ABORT:
/* Frame was aborted */
break;
case RX_FRM_CRC_ERROR:
/* Frame has crc error */
break;
case RX_FRM_OVERRUN_ERROR:
/* Frame has an overrun error */
break;
default:
/* Error with the rx packet
* handle it ... */
break;
}
for (i=0;i<Rx_lgth;i++){
if (((unsigned char*)api_rx_el->data)[i] !=
((unsigned char*)api_tx_el->data)[i]){
printf("Rx Error cnt=%i: Packet corruption on offset %i\n",
Rx_count,i);
break;
if ((files_used & RX_FILE_USED) && rx_fd){
ferr=fwrite(pRx_data,
sizeof(char),
Rx_lgth,
rx_fd);
if (ferr != Rx_lgth){
printf("Error: fwrite failed: written=%i should have %i\n",
ferr,Rx_lgth);
}
}
if (verbose) {
printf("Tx Len=%i Tx=%i Rx=%i : Data Ok\r",
Tx_length, Tx_count,Rx_count);
}
++Rx_count;
if (Rx_count == tx_cnt){
init_tx_pattern();
Rx_count=0;
write_enable=1;
if (verbose){
printf("Received %i Olen=%i Length = %i\n",
Rx_count, err,Rx_lgth);
}else{
putchar('R');
}
#if 1
if (verbose){
printf("Data: ");
for(i=0;(i<Rx_lgth)&&(i<32); i ++) {
printf("0x%02X ", api_rx_el->data[i]);
}
printf("\n");
}
#endif
if (rx_cnt == Rx_count){
printf("Rxcnt %i == RxCount=%i\n",rx_cnt,Rx_count);
break;
}
} else {
@ -349,12 +469,16 @@ void handle_socket(void)
}
bitstrm_skip_read:
if (FD_ISSET(sock,&write)){
err = send(sock,Tx_data, Tx_length + sizeof(api_tx_hdr_t), 0);
if (err <= 0){
if (errno == EBUSY){
if (verbose){
printf("Sock busy try again!\n");
}
/* Socket busy try sending again !*/
}else{
/* Check socket state */
@ -369,12 +493,31 @@ void handle_socket(void)
break;
}
}else{
++Tx_count;
if (verbose && Rx_count < 1) {
printf("Tx Len=%i Tx=%i Rx=%i : Data Ok\r",
Tx_length, Tx_count,Rx_count);
}
++Tx_count;
if (verbose){
printf("Packet sent: Sent %i : %i\n",
err,Tx_count);
}else{
//putchar('T');
}
txfile_bytes+=Tx_length;
if ((files_used & TX_FILE_USED) && tx_fd){
rlen=fread(pTx_data,
sizeof(char),
Tx_length,tx_fd);
if (!rlen){
printf("\nTx of file %s is done %i bytes!\n",
tx_file,txfile_bytes);
break;
}
if (Tx_length != rlen){
Tx_length = rlen;
}
}
}
}
@ -382,13 +525,22 @@ void handle_socket(void)
sleep(tx_delay);
}
if (tx_size && Tx_count == tx_cnt){
if (tx_size && Tx_count == tx_cnt && !(files_used & TX_FILE_USED)){
write_enable=0;
Tx_count=0;
if (!rx_cnt){
break;
}
}
}
}
if (tx_fd){
fclose(tx_fd);
}
if (rx_fd){
fclose(rx_fd);
}
close (sock);
}
@ -407,7 +559,7 @@ int main(int argc, char* argv[])
proceed=init_args(argc,argv);
if (proceed != WAN_TRUE){
usage((unsigned char*)argv[0]);
usage(argv[0]);
return -1;
}

View File

@ -16,13 +16,19 @@ SYSINC = /usr/src/linux/include
# Tools options.
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I$(SYSINC) -I$(APIINC)
TARGETS = fr_api
#TARGETS += fr_api_fast
####### RULES ################################################################
all: fr_api
all: $(TARGETS)
@echo "Ok."
fr_api: fr_api.c
$(CC) $(CFLAGS) -c -o $@ $<
#fr_api_fast: fr_api_fast.c
# $(CC) $(CFLAGS) -c -o $@ $<
clean:
rm -f fr_api
rm -f $(TARGETS)

View File

@ -407,7 +407,7 @@ int init_args(int argc, char *argv[])
return WAN_TRUE;
}
static unsigned char api_usage[]="\n"
static char api_usage[]="\n"
"\n"
"<options>:\n"
" -i <ifname> #interface name\n"
@ -466,7 +466,7 @@ static unsigned char api_usage[]="\n"
" -diagn <digit> #disconnect diagnostic (dflt=0)\n"
"\n";
void usage(unsigned char *api_name)
void usage(char *api_name)
{
printf ("\n\nAPI %s USAGE:\n\n%s <options> <extra options>\n\n%s\n",
api_name,api_name,api_usage);

View File

@ -38,14 +38,14 @@ extern int cause;
extern int card_cnt;
extern int i_cnt;
extern char tx_file[WAN_IFNAME_SZ];
extern char rx_file[WAN_IFNAME_SZ];
extern char tx_file[WAN_IFNAME_SZ];
extern char rx_file[WAN_IFNAME_SZ];
#define TX_ADDR_STR_SZ 100
extern char daddr[TX_ADDR_STR_SZ];
extern char saddr[TX_ADDR_STR_SZ];
extern char udata[TX_ADDR_STR_SZ];
extern char daddr[TX_ADDR_STR_SZ];
extern char saddr[TX_ADDR_STR_SZ];
extern char udata[TX_ADDR_STR_SZ];
#define TX_FILE_USED 1
@ -55,11 +55,11 @@ extern char udata[TX_ADDR_STR_SZ];
extern int init_args(int argc, char *argv[]);
extern void usage(unsigned char *api_name);
extern void usage(char *api_name);
extern void u_delay(int usec);
extern char card_name[WAN_IFNAME_SZ];
extern char if_name[WAN_IFNAME_SZ];
extern char sw_if_name[WAN_IFNAME_SZ];
extern char sw_card_name[WAN_IFNAME_SZ];
extern char sw_if_name[WAN_IFNAME_SZ];
extern char sw_card_name[WAN_IFNAME_SZ];

View File

@ -66,12 +66,16 @@ libsangoma_la-libsangoma.lo libsangoma_la-libsangoma.o: libsangoma.c \
../../patches/kdrivers/include/linux/wanpipe_version.h \
../../patches/kdrivers/include/linux/wanpipe_kernel.h \
/lib/modules/2.6.18-8.1.15.el5/build/include/linux/version.h \
../../patches/kdrivers/include/linux/wanpipe_abstr_types.h \
../../patches/kdrivers/include/linux/wanpipe_cfg.h \
../../patches/kdrivers/include/linux/sdla_56k.h \
../../patches/kdrivers/include/linux/sdla_te1.h \
../../patches/kdrivers/include/linux/sdla_te3.h \
../../patches/kdrivers/include/linux/sdla_remora.h \
../../patches/kdrivers/include/linux/sdla_remora_proslic.h \
../../patches/kdrivers/include/linux/sdla_bri.h \
../../patches/kdrivers/include/linux/xhfc24succ.h \
../../patches/kdrivers/include/linux/sdla_serial.h \
../../patches/kdrivers/include/linux/sdla_front_end.h \
../../patches/kdrivers/include/linux/wanpipe.h \
../../patches/kdrivers/include/linux/wanpipe_debug.h \
@ -82,7 +86,8 @@ libsangoma_la-libsangoma.lo libsangoma_la-libsangoma.o: libsangoma.c \
../../patches/kdrivers/include/linux/wanpipe_includes.h \
../../patches/kdrivers/include/linux/if_wanpipe.h \
/lib/modules/2.6.18-8.1.15.el5/build/include/linux/sockios.h \
../../patches/kdrivers/include/linux/wanpipe_codec_iface.h
../../patches/kdrivers/include/linux/wanpipe_codec_iface.h \
../../patches/kdrivers/include/linux/wanpipe_tdm_api_iface.h
libsangoma.h:
@ -302,6 +307,8 @@ libsangoma.h:
/lib/modules/2.6.18-8.1.15.el5/build/include/linux/version.h:
../../patches/kdrivers/include/linux/wanpipe_abstr_types.h:
../../patches/kdrivers/include/linux/wanpipe_cfg.h:
../../patches/kdrivers/include/linux/sdla_56k.h:
@ -314,6 +321,12 @@ libsangoma.h:
../../patches/kdrivers/include/linux/sdla_remora_proslic.h:
../../patches/kdrivers/include/linux/sdla_bri.h:
../../patches/kdrivers/include/linux/xhfc24succ.h:
../../patches/kdrivers/include/linux/sdla_serial.h:
../../patches/kdrivers/include/linux/sdla_front_end.h:
../../patches/kdrivers/include/linux/wanpipe.h:
@ -335,3 +348,5 @@ libsangoma.h:
/lib/modules/2.6.18-8.1.15.el5/build/include/linux/sockios.h:
../../patches/kdrivers/include/linux/wanpipe_codec_iface.h:
../../patches/kdrivers/include/linux/wanpipe_tdm_api_iface.h:

View File

@ -1,336 +1 @@
libsangoma_la-sangoma_pri.lo libsangoma_la-sangoma_pri.o: sangoma_pri.c \
./libsangoma.h /usr/include/stdlib.h /usr/include/features.h \
/usr/include/sys/cdefs.h /usr/include/gnu/stubs.h \
/usr/lib/gcc/i386-redhat-linux/3.4.3/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/wordsize.h /usr/include/bits/typesizes.h \
/usr/include/time.h /usr/include/sys/select.h \
/usr/include/bits/select.h /usr/include/bits/sigset.h \
/usr/include/bits/time.h /usr/include/sys/sysmacros.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \
/usr/include/alloca.h /usr/include/stdio.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \
/usr/include/gconv.h \
/usr/lib/gcc/i386-redhat-linux/3.4.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/ctype.h /usr/include/unistd.h \
/usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
/usr/include/bits/confname.h /usr/include/getopt.h \
/usr/include/sys/time.h /usr/include/sys/socket.h \
/usr/include/sys/uio.h /usr/include/bits/uio.h \
/usr/include/bits/socket.h \
/usr/lib/gcc/i386-redhat-linux/3.4.3/include/limits.h \
/usr/lib/gcc/i386-redhat-linux/3.4.3/include/syslimits.h \
/usr/include/limits.h /usr/include/bits/posix1_lim.h \
/usr/include/bits/local_lim.h /usr/src/linux/include/linux/limits.h \
/usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
/usr/include/bits/sockaddr.h /usr/src/linux/include/asm/socket.h \
/usr/src/linux/include/asm/sockios.h /usr/include/netinet/in.h \
/usr/include/stdint.h /usr/include/bits/in.h \
/usr/include/bits/byteswap.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/errno.h /usr/include/bits/errno.h \
/usr/src/linux/include/linux/errno.h /usr/src/linux/include/asm/errno.h \
/usr/src/linux/include/asm-generic/errno.h \
/usr/src/linux/include/asm-generic/errno-base.h /usr/include/fcntl.h \
/usr/include/bits/fcntl.h /usr/include/sys/stat.h \
/usr/include/bits/stat.h /usr/include/sys/ioctl.h \
/usr/include/bits/ioctls.h /usr/src/linux/include/asm/ioctls.h \
/usr/src/linux/include/asm/ioctl.h /usr/include/bits/ioctl-types.h \
/usr/include/sys/ttydefaults.h /usr/src/linux/include/linux/if.h \
/usr/src/linux/include/linux/types.h \
/usr/src/linux/include/linux/posix_types.h \
/usr/src/linux/include/linux/stddef.h \
/usr/src/linux/include/linux/compiler.h \
/usr/src/linux/include/asm/posix_types.h \
/usr/src/linux/include/asm/types.h \
/usr/src/linux/include/linux/socket.h \
/usr/src/linux/include/linux/hdlc/ioctl.h \
/usr/src/linux/include/linux/wanpipe_defines.h \
/usr/src/linux/include/linux/wanpipe_version.h \
/usr/src/linux/include/linux/wanpipe_kernel.h \
/usr/src/linux/include/linux/version.h \
/usr/src/linux/include/linux/wanpipe_cfg.h \
/usr/src/linux/include/linux/sdla_56k.h \
/usr/src/linux/include/linux/sdla_te1.h \
/usr/src/linux/include/linux/sdla_te3.h \
/usr/src/linux/include/linux/sdla_remora.h \
/usr/src/linux/include/linux/sdla_remora_proslic.h \
/usr/src/linux/include/linux/sdla_front_end.h \
/usr/src/linux/include/linux/wanpipe.h \
/usr/src/linux/include/linux/wanpipe_debug.h \
/usr/src/linux/include/linux/wanpipe_common.h \
/usr/src/linux/include/linux/wanpipe_events.h \
/usr/src/linux/include/linux/wanrouter.h /usr/include/poll.h \
/usr/include/sys/poll.h /usr/include/bits/poll.h \
/usr/src/linux/include/linux/wanpipe_tdm_api.h \
/usr/src/linux/include/linux/wanpipe_includes.h \
/usr/src/linux/include/linux/if_wanpipe.h \
/usr/src/linux/include/linux/sockios.h \
/usr/src/linux/include/linux/wanpipe_codec_iface.h \
/usr/include/signal.h /usr/include/bits/signum.h \
/usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \
/usr/include/bits/sigcontext.h /usr/src/linux/include/asm/sigcontext.h \
/usr/include/bits/sigstack.h /usr/include/sys/ucontext.h \
/usr/include/bits/sigthread.h /usr/include/sys/signal.h \
/usr/include/sys/wait.h /usr/include/sys/resource.h \
/usr/include/bits/resource.h ./sangoma_pri.h /usr/src/libpri/libpri.h \
/usr/src/libpri/pri_internal.h
./libsangoma.h:
/usr/include/stdlib.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/gnu/stubs.h:
/usr/lib/gcc/i386-redhat-linux/3.4.3/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/wordsize.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/bits/sched.h:
/usr/include/alloca.h:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/include/bits/wchar.h:
/usr/include/gconv.h:
/usr/lib/gcc/i386-redhat-linux/3.4.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/ctype.h:
/usr/include/unistd.h:
/usr/include/bits/posix_opt.h:
/usr/include/bits/environments.h:
/usr/include/bits/confname.h:
/usr/include/getopt.h:
/usr/include/sys/time.h:
/usr/include/sys/socket.h:
/usr/include/sys/uio.h:
/usr/include/bits/uio.h:
/usr/include/bits/socket.h:
/usr/lib/gcc/i386-redhat-linux/3.4.3/include/limits.h:
/usr/lib/gcc/i386-redhat-linux/3.4.3/include/syslimits.h:
/usr/include/limits.h:
/usr/include/bits/posix1_lim.h:
/usr/include/bits/local_lim.h:
/usr/src/linux/include/linux/limits.h:
/usr/include/bits/posix2_lim.h:
/usr/include/bits/xopen_lim.h:
/usr/include/bits/sockaddr.h:
/usr/src/linux/include/asm/socket.h:
/usr/src/linux/include/asm/sockios.h:
/usr/include/netinet/in.h:
/usr/include/stdint.h:
/usr/include/bits/in.h:
/usr/include/bits/byteswap.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/errno.h:
/usr/include/bits/errno.h:
/usr/src/linux/include/linux/errno.h:
/usr/src/linux/include/asm/errno.h:
/usr/src/linux/include/asm-generic/errno.h:
/usr/src/linux/include/asm-generic/errno-base.h:
/usr/include/fcntl.h:
/usr/include/bits/fcntl.h:
/usr/include/sys/stat.h:
/usr/include/bits/stat.h:
/usr/include/sys/ioctl.h:
/usr/include/bits/ioctls.h:
/usr/src/linux/include/asm/ioctls.h:
/usr/src/linux/include/asm/ioctl.h:
/usr/include/bits/ioctl-types.h:
/usr/include/sys/ttydefaults.h:
/usr/src/linux/include/linux/if.h:
/usr/src/linux/include/linux/types.h:
/usr/src/linux/include/linux/posix_types.h:
/usr/src/linux/include/linux/stddef.h:
/usr/src/linux/include/linux/compiler.h:
/usr/src/linux/include/asm/posix_types.h:
/usr/src/linux/include/asm/types.h:
/usr/src/linux/include/linux/socket.h:
/usr/src/linux/include/linux/hdlc/ioctl.h:
/usr/src/linux/include/linux/wanpipe_defines.h:
/usr/src/linux/include/linux/wanpipe_version.h:
/usr/src/linux/include/linux/wanpipe_kernel.h:
/usr/src/linux/include/linux/version.h:
/usr/src/linux/include/linux/wanpipe_cfg.h:
/usr/src/linux/include/linux/sdla_56k.h:
/usr/src/linux/include/linux/sdla_te1.h:
/usr/src/linux/include/linux/sdla_te3.h:
/usr/src/linux/include/linux/sdla_remora.h:
/usr/src/linux/include/linux/sdla_remora_proslic.h:
/usr/src/linux/include/linux/sdla_front_end.h:
/usr/src/linux/include/linux/wanpipe.h:
/usr/src/linux/include/linux/wanpipe_debug.h:
/usr/src/linux/include/linux/wanpipe_common.h:
/usr/src/linux/include/linux/wanpipe_events.h:
/usr/src/linux/include/linux/wanrouter.h:
/usr/include/poll.h:
/usr/include/sys/poll.h:
/usr/include/bits/poll.h:
/usr/src/linux/include/linux/wanpipe_tdm_api.h:
/usr/src/linux/include/linux/wanpipe_includes.h:
/usr/src/linux/include/linux/if_wanpipe.h:
/usr/src/linux/include/linux/sockios.h:
/usr/src/linux/include/linux/wanpipe_codec_iface.h:
/usr/include/signal.h:
/usr/include/bits/signum.h:
/usr/include/bits/siginfo.h:
/usr/include/bits/sigaction.h:
/usr/include/bits/sigcontext.h:
/usr/src/linux/include/asm/sigcontext.h:
/usr/include/bits/sigstack.h:
/usr/include/sys/ucontext.h:
/usr/include/bits/sigthread.h:
/usr/include/sys/signal.h:
/usr/include/sys/wait.h:
/usr/include/sys/resource.h:
/usr/include/bits/resource.h:
./sangoma_pri.h:
/usr/src/libpri/libpri.h:
/usr/src/libpri/pri_internal.h:
# dummy

View File

@ -0,0 +1,215 @@
K 25
svn:wc:ra_dav:version-url
V 32
/svn/libsangoma/!svn/ver/1/trunk
END
configure
K 25
svn:wc:ra_dav:version-url
V 42
/svn/libsangoma/!svn/ver/1/trunk/configure
END
Makefile.in
K 25
svn:wc:ra_dav:version-url
V 44
/svn/libsangoma/!svn/ver/1/trunk/Makefile.in
END
config.log
K 25
svn:wc:ra_dav:version-url
V 43
/svn/libsangoma/!svn/ver/1/trunk/config.log
END
AUTHORS
K 25
svn:wc:ra_dav:version-url
V 40
/svn/libsangoma/!svn/ver/1/trunk/AUTHORS
END
depcomp
K 25
svn:wc:ra_dav:version-url
V 40
/svn/libsangoma/!svn/ver/1/trunk/depcomp
END
compile
K 25
svn:wc:ra_dav:version-url
V 40
/svn/libsangoma/!svn/ver/1/trunk/compile
END
config.guess
K 25
svn:wc:ra_dav:version-url
V 45
/svn/libsangoma/!svn/ver/1/trunk/config.guess
END
svn-commit.2.tmp
K 25
svn:wc:ra_dav:version-url
V 49
/svn/libsangoma/!svn/ver/1/trunk/svn-commit.2.tmp
END
ltmain.sh
K 25
svn:wc:ra_dav:version-url
V 42
/svn/libsangoma/!svn/ver/1/trunk/ltmain.sh
END
config.sub
K 25
svn:wc:ra_dav:version-url
V 43
/svn/libsangoma/!svn/ver/1/trunk/config.sub
END
libsangoma.c
K 25
svn:wc:ra_dav:version-url
V 45
/svn/libsangoma/!svn/ver/1/trunk/libsangoma.c
END
libsangoma.dsp
K 25
svn:wc:ra_dav:version-url
V 47
/svn/libsangoma/!svn/ver/1/trunk/libsangoma.dsp
END
libsangoma.h
K 25
svn:wc:ra_dav:version-url
V 45
/svn/libsangoma/!svn/ver/1/trunk/libsangoma.h
END
g711.h
K 25
svn:wc:ra_dav:version-url
V 39
/svn/libsangoma/!svn/ver/1/trunk/g711.h
END
INSTALL
K 25
svn:wc:ra_dav:version-url
V 40
/svn/libsangoma/!svn/ver/1/trunk/INSTALL
END
libsangoma.dsw
K 25
svn:wc:ra_dav:version-url
V 47
/svn/libsangoma/!svn/ver/1/trunk/libsangoma.dsw
END
COPYING
K 25
svn:wc:ra_dav:version-url
V 40
/svn/libsangoma/!svn/ver/1/trunk/COPYING
END
NEWS
K 25
svn:wc:ra_dav:version-url
V 37
/svn/libsangoma/!svn/ver/1/trunk/NEWS
END
Makefile
K 25
svn:wc:ra_dav:version-url
V 41
/svn/libsangoma/!svn/ver/1/trunk/Makefile
END
sangoma_pri.c
K 25
svn:wc:ra_dav:version-url
V 46
/svn/libsangoma/!svn/ver/1/trunk/sangoma_pri.c
END
libsangoma.so.conf
K 25
svn:wc:ra_dav:version-url
V 51
/svn/libsangoma/!svn/ver/1/trunk/libsangoma.so.conf
END
win_api_common.h
K 25
svn:wc:ra_dav:version-url
V 49
/svn/libsangoma/!svn/ver/1/trunk/win_api_common.h
END
sangoma_pri.h
K 25
svn:wc:ra_dav:version-url
V 46
/svn/libsangoma/!svn/ver/1/trunk/sangoma_pri.h
END
version
K 25
svn:wc:ra_dav:version-url
V 40
/svn/libsangoma/!svn/ver/1/trunk/version
END
configure.in
K 25
svn:wc:ra_dav:version-url
V 45
/svn/libsangoma/!svn/ver/1/trunk/configure.in
END
ChangeLog
K 25
svn:wc:ra_dav:version-url
V 42
/svn/libsangoma/!svn/ver/1/trunk/ChangeLog
END
config.status
K 25
svn:wc:ra_dav:version-url
V 46
/svn/libsangoma/!svn/ver/1/trunk/config.status
END
svn-commit.tmp
K 25
svn:wc:ra_dav:version-url
V 47
/svn/libsangoma/!svn/ver/1/trunk/svn-commit.tmp
END
README
K 25
svn:wc:ra_dav:version-url
V 39
/svn/libsangoma/!svn/ver/1/trunk/README
END
config.h.in
K 25
svn:wc:ra_dav:version-url
V 44
/svn/libsangoma/!svn/ver/1/trunk/config.h.in
END
libtool
K 25
svn:wc:ra_dav:version-url
V 40
/svn/libsangoma/!svn/ver/1/trunk/libtool
END
missing
K 25
svn:wc:ra_dav:version-url
V 40
/svn/libsangoma/!svn/ver/1/trunk/missing
END
Makefile.am
K 25
svn:wc:ra_dav:version-url
V 44
/svn/libsangoma/!svn/ver/1/trunk/Makefile.am
END
install-sh
K 25
svn:wc:ra_dav:version-url
V 43
/svn/libsangoma/!svn/ver/1/trunk/install-sh
END
libsangoma.vcproj
K 25
svn:wc:ra_dav:version-url
V 50
/svn/libsangoma/!svn/ver/1/trunk/libsangoma.vcproj
END

View File

@ -1,15 +1,15 @@
8
dir
237
svn://sangoma.freeswitch.org/libsangoma/trunk
svn://sangoma.freeswitch.org
1
https://www.sangomapbx.com/svn/libsangoma/trunk
https://www.sangomapbx.com/svn/libsangoma
2007-07-24T23:10:36.931930Z
231
ncorbic
2008-02-28T18:51:53.196120Z
1
root
svn:special svn:externals svn:needs-lock
@ -24,7 +24,7 @@ svn:special svn:externals svn:needs-lock
2028fedf-720c-0410-83b8-d54a3e729fb0
8fe45b59-3c47-0410-bdf9-e5d932a076a6
configure
file
@ -32,11 +32,11 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
cdcb22cae8ad2d0de88542d1adf5b13d
2007-02-07T19:00:12.109961Z
166
ncorbic
2008-02-28T18:51:53.196120Z
1
root
has-props
Makefile.in
@ -45,11 +45,23 @@ file
2007-07-24T22:45:02.000000Z
2008-02-28T19:04:34.000000Z
1c05e844314274f082a74abf3f446239
2007-05-29T18:03:36.038276Z
206
ncorbic
2008-02-28T18:51:53.196120Z
1
root
config.log
file
2008-02-28T19:04:34.000000Z
1584c0969324cd96c0864b8e43ee0b0f
2008-02-28T18:51:53.196120Z
1
root
AUTHORS
file
@ -57,11 +69,11 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
d41d8cd98f00b204e9800998ecf8427e
2006-02-10T16:20:41.709688Z
2008-02-28T18:51:53.196120Z
1
anthm
root
depcomp
file
@ -69,11 +81,11 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
e181e2c8720c60522c4c4c981108e367
2006-02-10T16:20:41.709688Z
2008-02-28T18:51:53.196120Z
1
anthm
root
has-props
compile
@ -82,11 +94,11 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
a7ecc032b527a0d578545f19d3418073
2006-02-10T16:20:41.709688Z
2008-02-28T18:51:53.196120Z
1
anthm
root
has-props
config.guess
@ -95,11 +107,48 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
9ae396244b8f138c76514a6b7531e696
2006-02-10T16:20:41.709688Z
2008-02-28T18:51:53.196120Z
1
anthm
root
has-props
svn-commit.2.tmp
file
2008-02-28T19:04:34.000000Z
9bf5427f205140ba936f4feb06d54cac
2008-02-28T18:51:53.196120Z
1
root
ltmain.sh
file
2008-02-28T19:04:34.000000Z
c8215e3aa0858d700783015614f53b79
2008-02-28T18:51:53.196120Z
1
root
config.sub
file
2008-02-28T19:04:34.000000Z
3d36962d51070d30b7554203b0d7c01c
2008-02-28T18:51:53.196120Z
1
root
has-props
libsangoma.c
@ -108,36 +157,11 @@ file
2007-07-24T23:09:55.000000Z
cb02ecd239d3d3d37cf6d5e704a0dc39
2007-07-24T23:10:36.931930Z
231
ncorbic
ltmain.sh
file
2007-05-17T23:49:20.000000Z
c8215e3aa0858d700783015614f53b79
2006-02-10T16:20:41.709688Z
2008-02-28T19:04:34.000000Z
20fa69ba4181e245e810703d4c1787bd
2008-02-28T18:51:53.196120Z
1
anthm
config.sub
file
2007-05-17T23:49:20.000000Z
3d36962d51070d30b7554203b0d7c01c
2006-02-10T16:20:41.709688Z
1
anthm
has-props
root
libsangoma.dsp
file
@ -145,11 +169,11 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
f934aab66c529599725686f321d182e6
2006-12-04T20:48:10.874618Z
156
anthm
2008-02-28T18:51:53.196120Z
1
root
libsangoma.h
file
@ -157,11 +181,11 @@ file
2007-07-24T22:47:49.000000Z
19c2545ffa4e1a11f2a1b5f4850a10bd
2007-07-24T22:47:39.060265Z
230
ncorbic
2008-02-28T19:04:34.000000Z
3a381ddb82700688b9ea1dcdb1f10d6a
2008-02-28T18:51:53.196120Z
1
root
g711.h
file
@ -169,11 +193,11 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
0f725f95ced42af15dcaef21f3a1722b
2006-11-06T23:11:15.401413Z
119
ncorbic
2008-02-28T18:51:53.196120Z
1
root
INSTALL
file
@ -181,23 +205,11 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
40539bd3eff06e4b82f380103145415b
2006-08-08T19:52:23.727343Z
94
ncorbic
libsangoma.dsw
file
2007-05-17T23:49:20.000000Z
f13496d2105bae2add104c36a1d656f6
2006-12-04T20:48:10.874618Z
156
anthm
2008-02-28T18:51:53.196120Z
1
root
COPYING
file
@ -205,11 +217,47 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
d41d8cd98f00b204e9800998ecf8427e
2006-02-10T16:20:41.709688Z
2008-02-28T18:51:53.196120Z
1
anthm
root
libsangoma.dsw
file
2008-02-28T19:04:34.000000Z
f13496d2105bae2add104c36a1d656f6
2008-02-28T18:51:53.196120Z
1
root
diff
file
2
deleted
NEWS
file
@ -217,11 +265,23 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
d41d8cd98f00b204e9800998ecf8427e
2006-02-10T16:20:41.709688Z
2008-02-28T18:51:53.196120Z
1
anthm
root
Makefile
file
2008-02-28T19:04:34.000000Z
c4406ae0adf00115003a0530d2e2c5d0
2008-02-28T18:51:53.196120Z
1
root
libsangoma.so.conf
file
@ -229,11 +289,11 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
bcdcb23c5d5fb460cee2ce315ef7bd32
2006-10-19T19:27:09.335085Z
101
ncorbic
2008-02-28T18:51:53.196120Z
1
root
sangoma_pri.c
file
@ -241,11 +301,11 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
e2a6c68fadfefb2d2b16c52534e85675
2006-12-04T20:47:20.283144Z
155
anthm
2008-02-28T18:51:53.196120Z
1
root
win_api_common.h
file
@ -253,11 +313,11 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
b6be170d18fa90b79f7264cf8b0f7348
2006-12-04T22:21:07.339224Z
157
mikej
2008-02-28T18:51:53.196120Z
1
root
version
file
@ -265,11 +325,11 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
35f672d1fb01b542f667952c9dbb26fe
2006-02-10T16:20:41.709688Z
2008-02-28T18:51:53.196120Z
1
anthm
root
sangoma_pri.h
file
@ -277,11 +337,11 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
f24c6cf396aeaa6df2747f7f6b32969d
2006-03-24T14:19:31.976520Z
28
anthm
2008-02-28T18:51:53.196120Z
1
root
configure.in
file
@ -289,11 +349,24 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
5b9888fc365c4ebffdbb55656c091a2f
2007-02-07T19:00:12.109961Z
166
ncorbic
2008-02-28T18:51:53.196120Z
1
root
config.status
file
2008-02-28T19:04:34.000000Z
75ac9809637055fcbd3f4be64fab529f
2008-02-28T18:51:53.196120Z
1
root
has-props
ChangeLog
file
@ -301,11 +374,23 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
d41d8cd98f00b204e9800998ecf8427e
2006-02-10T16:20:41.709688Z
2008-02-28T18:51:53.196120Z
1
anthm
root
svn-commit.tmp
file
2008-02-28T19:04:34.000000Z
4ac38b24bcff9c3975171af8ccbcfa36
2008-02-28T18:51:53.196120Z
1
root
README
file
@ -313,11 +398,11 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
e8a0abce86211364eb60bbe6e07d4b05
2006-02-14T19:06:52.853886Z
6
nenad
2008-02-28T18:51:53.196120Z
1
root
config.h.in
file
@ -325,23 +410,24 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
5c51918deee8d041af37226bd4b4271e
2006-02-10T16:20:41.709688Z
2008-02-28T18:51:53.196120Z
1
anthm
root
Makefile.am
libtool
file
2007-07-24T22:45:02.000000Z
061d814c4cf9a1066e4ff2501fa0a100
2007-05-29T18:03:36.038276Z
206
ncorbic
2008-02-28T19:04:34.000000Z
898515184ba0d7df32a1913b7f3ee099
2008-02-28T18:51:53.196120Z
1
root
has-props
missing
file
@ -349,24 +435,27 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
fd5dd60aa8cefab9462677280ea74a61
2006-02-10T16:20:41.709688Z
2008-02-28T18:51:53.196120Z
1
anthm
root
has-props
aclocal.m4
Makefile.am
file
2007-05-17T23:49:20.000000Z
dd02d76e53ac83f5112d68797e8f52e3
2007-02-07T19:00:12.109961Z
166
ncorbic
2008-02-28T19:04:34.000000Z
061d814c4cf9a1066e4ff2501fa0a100
2008-02-28T18:51:53.196120Z
1
root
examples
dir
install-sh
file
@ -374,25 +463,22 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
92067666ddce97609bd0ec67d36460cd
2006-02-10T16:20:41.709688Z
2008-02-28T18:51:53.196120Z
1
anthm
root
has-props
examples
dir
libsangoma.vcproj
file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
a09711e3b6aac93dd48d8e9b3014955f
2006-12-04T22:24:41.715361Z
158
mikej
2008-02-28T18:51:53.196120Z
1
root

View File

@ -0,0 +1,5 @@
K 14
svn:executable
V 0
END

View File

@ -0,0 +1,5 @@
K 14
svn:executable
V 0
END

View File

@ -0,0 +1,679 @@
# Makefile.in generated by automake 1.9.2 from Makefile.am.
# Makefile. Generated from Makefile.in by configure.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
SOURCES = $(libsangoma_a_SOURCES) $(libsangoma_la_SOURCES)
srcdir = .
top_srcdir = .
pkgdatadir = $(datadir)/libsangoma
pkglibdir = $(libdir)/libsangoma
pkgincludedir = $(includedir)/libsangoma
top_builddir = .
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = /usr/bin/install -c
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = i686-pc-linux-gnu
host_triplet = i686-pc-linux-gnu
#am__append_1 = sangoma_pri.c sangoma_pri.h
#am__append_2 = sangoma_pri.h
#am__append_3 = -I$(libpripath)
#am__append_4 = -L$(libpripath) -lpri
DIST_COMMON = README $(am__configure_deps) \
$(am__library_include_HEADERS_DIST) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(top_srcdir)/configure AUTHORS COPYING \
ChangeLog INSTALL NEWS compile config.guess config.sub depcomp \
install-sh ltmain.sh missing
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno configure.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libdir)" \
"$(DESTDIR)$(library_includedir)"
libLIBRARIES_INSTALL = $(INSTALL_DATA)
LIBRARIES = $(lib_LIBRARIES)
ARFLAGS = cru
libsangoma_a_AR = $(AR) $(ARFLAGS)
libsangoma_a_LIBADD =
am_libsangoma_a_OBJECTS =
libsangoma_a_OBJECTS = $(am_libsangoma_a_OBJECTS)
libLTLIBRARIES_INSTALL = $(INSTALL)
LTLIBRARIES = $(lib_LTLIBRARIES)
libsangoma_la_LIBADD =
am__libsangoma_la_SOURCES_DIST = libsangoma.c libsangoma.h \
sangoma_pri.c sangoma_pri.h
#am__objects_1 = libsangoma_la-sangoma_pri.lo
am__objects_2 = libsangoma_la-libsangoma.lo $(am__objects_1)
am_libsangoma_la_OBJECTS = $(am__objects_2)
libsangoma_la_OBJECTS = $(am_libsangoma_la_OBJECTS)
DEFAULT_INCLUDES = -I. -I$(srcdir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(libsangoma_a_SOURCES) $(libsangoma_la_SOURCES)
DIST_SOURCES = $(libsangoma_a_SOURCES) \
$(am__libsangoma_la_SOURCES_DIST)
am__library_include_HEADERS_DIST = libsangoma.h sangoma_pri.h
library_includeHEADERS_INSTALL = $(INSTALL_HEADER)
HEADERS = $(library_include_HEADERS)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = ${SHELL} /usr/src/libsangoma/trunk/missing --run aclocal-1.9
AMDEP_FALSE = #
AMDEP_TRUE =
AMTAR = ${SHELL} /usr/src/libsangoma/trunk/missing --run tar
AR = ar
AUTOCONF = ${SHELL} /usr/src/libsangoma/trunk/missing --run autoconf
AUTOHEADER = ${SHELL} /usr/src/libsangoma/trunk/missing --run autoheader
AUTOMAKE = ${SHELL} /usr/src/libsangoma/trunk/missing --run automake-1.9
AWK = gawk
CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -g -O2
CPP = gcc -E
CPPFLAGS =
CXX = g++
CXXCPP = g++ -E
CXXDEPMODE = depmode=gcc3
CXXFLAGS = -g -O2
CYGPATH_W = echo
DEFS = -DPACKAGE_NAME=\"libsangoma\" -DPACKAGE_TARNAME=\"libsangoma\" -DPACKAGE_VERSION=\"1.0.0\" -DPACKAGE_STRING=\"libsangoma\ 1.0.0\" -DPACKAGE_BUGREPORT=\"anthmct@yahoo.com\" -DPACKAGE=\"libsangoma\" -DVERSION=\"1.0.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETINET_IN_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_MATH_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_SYS_SELECT_H=1 -DHAVE_SYS_SOCKET_H=1 -DSELECT_TYPE_ARG1=int -DSELECT_TYPE_ARG234=\(fd_set\ \*\) -DSELECT_TYPE_ARG5=\(struct\ timeval\ \*\) -DHAVE_GETTIMEOFDAY=1 -DHAVE_MEMSET=1 -DHAVE_SELECT=1 -DHAVE_SOCKET=1
DEPDIR = .deps
ECHO = echo
ECHO_C =
ECHO_N = -n
ECHO_T =
EGREP = grep -E
EXEEXT =
F77 = g77
FFLAGS = -g -O2
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
LDFLAGS =
LIBOBJS =
LIBPRI_FALSE =
LIBPRI_TRUE = #
LIBS =
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LN_S = ln -s
LTLIBOBJS =
MAKEINFO = ${SHELL} /usr/src/libsangoma/trunk/missing --run makeinfo
OBJEXT = o
PACKAGE = libsangoma
PACKAGE_BUGREPORT = anthmct@yahoo.com
PACKAGE_NAME = libsangoma
PACKAGE_STRING = libsangoma 1.0.0
PACKAGE_TARNAME = libsangoma
PACKAGE_VERSION = 1.0.0
PATH_SEPARATOR = :
RANLIB = ranlib
SET_MAKE =
SHELL = /bin/sh
STRIP = strip
VERSION = 1.0.0
ac_ct_AR = ar
ac_ct_CC = gcc
ac_ct_CXX = g++
ac_ct_F77 = g77
ac_ct_RANLIB = ranlib
ac_ct_STRIP = strip
am__fastdepCC_FALSE = #
am__fastdepCC_TRUE =
am__fastdepCXX_FALSE = #
am__fastdepCXX_TRUE =
am__include = include
am__leading_dot = .
am__quote =
am__tar = ${AMTAR} chof - "$$tardir"
am__untar = ${AMTAR} xf -
bindir = ${exec_prefix}/bin
build = i686-pc-linux-gnu
build_alias =
build_cpu = i686
build_os = linux-gnu
build_vendor = pc
datadir = ${prefix}/share
exec_prefix = ${prefix}
host = i686-pc-linux-gnu
host_alias =
host_cpu = i686
host_os = linux-gnu
host_vendor = pc
includedir = ${prefix}/include
infodir = ${prefix}/info
install_sh = /usr/src/libsangoma/trunk/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
libpripath =
localstatedir = ${prefix}/var
mandir = ${prefix}/man
mkdir_p = mkdir -p --
oldincludedir = /usr/include
prefix = /usr/local
program_transform_name = s,x,x,
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
sysconfdir = ${prefix}/etc
target_alias =
KINC = /lib/modules/$(shell uname -r)/build
WINC = ../../patches/kdrivers/include
AM_CFLAGS = -fPIC -Wall -Wstrict-prototypes -Wmissing-prototypes -g -I$(WINC) -I$(KINC)/include -I. \
-D__LINUX__ -D_REENTRANT -D_GNU_SOURCE -O2 -D_DEBUG_=2 -D_GNUC_ -I../lib -I$(KINC)/include
LIB_SOURCES = libsangoma.c libsangoma.h $(am__append_1)
library_includedir = $(includedir)
library_include_HEADERS = libsangoma.h $(am__append_2)
lib_LTLIBRARIES = libsangoma.la
libsangoma_la_CFLAGS = $(AM_CFLAGS) $(am__append_3)
libsangoma_la_LDFLAGS = -version-info 1:0:0 $(am__append_4)
libsangoma_la_SOURCES = $(LIB_SOURCES)
lib_LIBRARIES = libsangoma.a
libsangoma_a_CFLAGS = $(AM_CFLAGS)
libsangoma_a_SOURCES = $(LIB_SOUCES)
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
am--refresh:
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
cd $(srcdir) && $(AUTOMAKE) --gnu \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: $(am__configure_deps)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
install-libLIBRARIES: $(lib_LIBRARIES)
@$(NORMAL_INSTALL)
test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
@list='$(lib_LIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
f=$(am__strip_dir) \
echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
$(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
else :; fi; \
done
@$(POST_INSTALL)
@list='$(lib_LIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
p=$(am__strip_dir) \
echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \
$(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \
else :; fi; \
done
uninstall-libLIBRARIES:
@$(NORMAL_UNINSTALL)
@list='$(lib_LIBRARIES)'; for p in $$list; do \
p=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \
rm -f "$(DESTDIR)$(libdir)/$$p"; \
done
clean-libLIBRARIES:
-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
libsangoma.a: $(libsangoma_a_OBJECTS) $(libsangoma_a_DEPENDENCIES)
-rm -f libsangoma.a
$(libsangoma_a_AR) libsangoma.a $(libsangoma_a_OBJECTS) $(libsangoma_a_LIBADD)
$(RANLIB) libsangoma.a
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
f=$(am__strip_dir) \
echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
$(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
else :; fi; \
done
uninstall-libLTLIBRARIES:
@$(NORMAL_UNINSTALL)
@set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
p=$(am__strip_dir) \
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
done
clean-libLTLIBRARIES:
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
test "$$dir" != "$$p" || dir=.; \
echo "rm -f \"$${dir}/so_locations\""; \
rm -f "$${dir}/so_locations"; \
done
libsangoma.la: $(libsangoma_la_OBJECTS) $(libsangoma_la_DEPENDENCIES)
$(LINK) -rpath $(libdir) $(libsangoma_la_LDFLAGS) $(libsangoma_la_OBJECTS) $(libsangoma_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
include ./$(DEPDIR)/libsangoma_la-libsangoma.Plo
include ./$(DEPDIR)/libsangoma_la-sangoma_pri.Plo
.c.o:
if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
# source='$<' object='$@' libtool=no \
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
# $(COMPILE) -c $<
.c.obj:
if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
# source='$<' object='$@' libtool=no \
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
# $(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
# source='$<' object='$@' libtool=yes \
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
# $(LTCOMPILE) -c -o $@ $<
libsangoma_la-libsangoma.lo: libsangoma.c
if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -MT libsangoma_la-libsangoma.lo -MD -MP -MF "$(DEPDIR)/libsangoma_la-libsangoma.Tpo" -c -o libsangoma_la-libsangoma.lo `test -f 'libsangoma.c' || echo '$(srcdir)/'`libsangoma.c; \
then mv -f "$(DEPDIR)/libsangoma_la-libsangoma.Tpo" "$(DEPDIR)/libsangoma_la-libsangoma.Plo"; else rm -f "$(DEPDIR)/libsangoma_la-libsangoma.Tpo"; exit 1; fi
# source='libsangoma.c' object='libsangoma_la-libsangoma.lo' libtool=yes \
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
# $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -c -o libsangoma_la-libsangoma.lo `test -f 'libsangoma.c' || echo '$(srcdir)/'`libsangoma.c
libsangoma_la-sangoma_pri.lo: sangoma_pri.c
if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -MT libsangoma_la-sangoma_pri.lo -MD -MP -MF "$(DEPDIR)/libsangoma_la-sangoma_pri.Tpo" -c -o libsangoma_la-sangoma_pri.lo `test -f 'sangoma_pri.c' || echo '$(srcdir)/'`sangoma_pri.c; \
then mv -f "$(DEPDIR)/libsangoma_la-sangoma_pri.Tpo" "$(DEPDIR)/libsangoma_la-sangoma_pri.Plo"; else rm -f "$(DEPDIR)/libsangoma_la-sangoma_pri.Tpo"; exit 1; fi
# source='sangoma_pri.c' object='libsangoma_la-sangoma_pri.lo' libtool=yes \
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
# $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -c -o libsangoma_la-sangoma_pri.lo `test -f 'sangoma_pri.c' || echo '$(srcdir)/'`sangoma_pri.c
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
install-library_includeHEADERS: $(library_include_HEADERS)
@$(NORMAL_INSTALL)
test -z "$(library_includedir)" || $(mkdir_p) "$(DESTDIR)$(library_includedir)"
@list='$(library_include_HEADERS)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(library_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(library_includedir)/$$f'"; \
$(library_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(library_includedir)/$$f"; \
done
uninstall-library_includeHEADERS:
@$(NORMAL_UNINSTALL)
@list='$(library_include_HEADERS)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(library_includedir)/$$f'"; \
rm -f "$(DESTDIR)$(library_includedir)/$$f"; \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
$(am__remove_distdir)
mkdir $(distdir)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& cd $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-am
all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS)
installdirs:
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(library_includedir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libLIBRARIES clean-libLTLIBRARIES \
clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am: install-library_includeHEADERS
install-exec-am: install-libLIBRARIES install-libLTLIBRARIES
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-info-am uninstall-libLIBRARIES \
uninstall-libLTLIBRARIES uninstall-library_includeHEADERS
.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \
clean-generic clean-libLIBRARIES clean-libLTLIBRARIES \
clean-libtool ctags dist dist-all dist-bzip2 dist-gzip \
dist-shar dist-tarZ dist-zip distcheck distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-exec install-exec-am \
install-info install-info-am install-libLIBRARIES \
install-libLTLIBRARIES install-library_includeHEADERS \
install-man install-strip installcheck installcheck-am \
installdirs maintainer-clean maintainer-clean-generic \
mostlyclean mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
uninstall-am uninstall-info-am uninstall-libLIBRARIES \
uninstall-libLTLIBRARIES uninstall-library_includeHEADERS
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,983 @@
#! /bin/sh
# Generated by configure.
# Run this file to recreate the current configuration.
# Compiler output produced by configure, useful for debugging
# configure, is in config.log if it exists.
debug=false
ac_cs_recheck=false
ac_cs_silent=false
SHELL=${CONFIG_SHELL-/bin/sh}
## --------------------- ##
## M4sh Initialization. ##
## --------------------- ##
# Be Bourne compatible
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
# Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
set -o posix
fi
DUALCASE=1; export DUALCASE # for MKS sh
# Support unset when possible.
if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
as_unset=unset
else
as_unset=false
fi
# Work around bugs in pre-3.0 UWIN ksh.
$as_unset ENV MAIL MAILPATH
PS1='$ '
PS2='> '
PS4='+ '
# NLS nuisances.
for as_var in \
LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
LC_TELEPHONE LC_TIME
do
if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
eval $as_var=C; export $as_var
else
$as_unset $as_var
fi
done
# Required to use basename.
if expr a : '\(a\)' >/dev/null 2>&1; then
as_expr=expr
else
as_expr=false
fi
if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
as_basename=basename
else
as_basename=false
fi
# Name of the executable.
as_me=`$as_basename "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)$' \| \
. : '\(.\)' 2>/dev/null ||
echo X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
/^X\/\(\/\/\)$/{ s//\1/; q; }
/^X\/\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
# PATH needs CR, and LINENO needs CR and PATH.
# Avoid depending upon Character Ranges.
as_cr_letters='abcdefghijklmnopqrstuvwxyz'
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
# The user is always right.
if test "${PATH_SEPARATOR+set}" != set; then
echo "#! /bin/sh" >conf$$.sh
echo "exit 0" >>conf$$.sh
chmod +x conf$$.sh
if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
PATH_SEPARATOR=';'
else
PATH_SEPARATOR=:
fi
rm -f conf$$.sh
fi
as_lineno_1=$LINENO
as_lineno_2=$LINENO
as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
test "x$as_lineno_1" != "x$as_lineno_2" &&
test "x$as_lineno_3" = "x$as_lineno_2" || {
# Find who we are. Look in the path if we contain no path at all
# relative or not.
case $0 in
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
done
;;
esac
# We did not find ourselves, most probably we were run as `sh COMMAND'
# in which case we are not to be found in the path.
if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
{ { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
{ (exit 1); exit 1; }; }
fi
case $CONFIG_SHELL in
'')
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for as_base in sh bash ksh sh5; do
case $as_dir in
/*)
if ("$as_dir/$as_base" -c '
as_lineno_1=$LINENO
as_lineno_2=$LINENO
as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
test "x$as_lineno_1" != "x$as_lineno_2" &&
test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
$as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
$as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
CONFIG_SHELL=$as_dir/$as_base
export CONFIG_SHELL
exec "$CONFIG_SHELL" "$0" ${1+"$@"}
fi;;
esac
done
done
;;
esac
# Create $as_me.lineno as a copy of $as_myself, but with $LINENO
# uniformly replaced by the line number. The first 'sed' inserts a
# line-number line before each line; the second 'sed' does the real
# work. The second script uses 'N' to pair each line-number line
# with the numbered line, and appends trailing '-' during
# substitution so that $LINENO is not a special case at line end.
# (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
# second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
sed '=' <$as_myself |
sed '
N
s,$,-,
: loop
s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
t loop
s,-$,,
s,^['$as_cr_digits']*\n,,
' >$as_me.lineno &&
chmod +x $as_me.lineno ||
{ { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
{ (exit 1); exit 1; }; }
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensible to this).
. ./$as_me.lineno
# Exit status is that of the last command.
exit
}
case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
*c*,-n*) ECHO_N= ECHO_C='
' ECHO_T=' ' ;;
*c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
*) ECHO_N= ECHO_C='\c' ECHO_T= ;;
esac
if expr a : '\(a\)' >/dev/null 2>&1; then
as_expr=expr
else
as_expr=false
fi
rm -f conf$$ conf$$.exe conf$$.file
echo >conf$$.file
if ln -s conf$$.file conf$$ 2>/dev/null; then
# We could just check for DJGPP; but this test a) works b) is more generic
# and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
if test -f conf$$.exe; then
# Don't use ln at all; we don't have any links
as_ln_s='cp -p'
else
as_ln_s='ln -s'
fi
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
as_ln_s='cp -p'
fi
rm -f conf$$ conf$$.exe conf$$.file
if mkdir -p . 2>/dev/null; then
as_mkdir_p=:
else
test -d ./-p && rmdir ./-p
as_mkdir_p=false
fi
as_executable_p="test -f"
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
# Sed expression to map a string onto a valid variable name.
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
# IFS
# We need space, tab and new line, in precisely that order.
as_nl='
'
IFS=" $as_nl"
# CDPATH.
$as_unset CDPATH
exec 6>&1
# Open the log real soon, to keep \$[0] and so on meaningful, and to
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. Logging --version etc. is OK.
exec 5>>config.log
{
echo
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## Running $as_me. ##
_ASBOX
} >&5
cat >&5 <<_CSEOF
This file was extended by libsangoma $as_me 1.0.0, which was
generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
CONFIG_LINKS = $CONFIG_LINKS
CONFIG_COMMANDS = $CONFIG_COMMANDS
$ $0 $@
_CSEOF
echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
echo >&5
config_files=" Makefile"
config_commands=" depfiles"
ac_cs_usage="\
\`$as_me' instantiates files from templates according to the
current configuration.
Usage: $0 [OPTIONS] [FILE]...
-h, --help print this help, then exit
-V, --version print version number, then exit
-q, --quiet do not print progress messages
-d, --debug don't remove temporary files
--recheck update $as_me by reconfiguring in the same conditions
--file=FILE[:TEMPLATE]
instantiate the configuration file FILE
Configuration files:
$config_files
Configuration commands:
$config_commands
Report bugs to <bug-autoconf@gnu.org>."
ac_cs_version="\
libsangoma config.status 1.0.0
configured by ./configure, generated by GNU Autoconf 2.59,
with options \"\"
Copyright (C) 2003 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
srcdir=.
INSTALL="/usr/bin/install -c"
# If no file are specified by the user, then we need to provide default
# value. By we need to know if files were specified by the user.
ac_need_defaults=:
while test $# != 0
do
case $1 in
--*=*)
ac_option=`expr "x$1" : 'x\([^=]*\)='`
ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
ac_shift=:
;;
-*)
ac_option=$1
ac_optarg=$2
ac_shift=shift
;;
*) # This is not an option, so the user has probably given explicit
# arguments.
ac_option=$1
ac_need_defaults=false;;
esac
case $ac_option in
# Handling of the options.
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
ac_cs_recheck=: ;;
--version | --vers* | -V )
echo "$ac_cs_version"; exit 0 ;;
--he | --h)
# Conflict between --help and --header
{ { echo "$as_me:$LINENO: error: ambiguous option: $1
Try \`$0 --help' for more information." >&5
echo "$as_me: error: ambiguous option: $1
Try \`$0 --help' for more information." >&2;}
{ (exit 1); exit 1; }; };;
--help | --hel | -h )
echo "$ac_cs_usage"; exit 0 ;;
--debug | --d* | -d )
debug=: ;;
--file | --fil | --fi | --f )
$ac_shift
CONFIG_FILES="$CONFIG_FILES $ac_optarg"
ac_need_defaults=false;;
--header | --heade | --head | --hea )
$ac_shift
CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
ac_need_defaults=false;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil | --si | --s)
ac_cs_silent=: ;;
# This is an error.
-*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
Try \`$0 --help' for more information." >&5
echo "$as_me: error: unrecognized option: $1
Try \`$0 --help' for more information." >&2;}
{ (exit 1); exit 1; }; } ;;
*) ac_config_targets="$ac_config_targets $1" ;;
esac
shift
done
ac_configure_extra_args=
if $ac_cs_silent; then
exec 6>/dev/null
ac_configure_extra_args="$ac_configure_extra_args --silent"
fi
if $ac_cs_recheck; then
echo "running /bin/sh ./configure " $ac_configure_extra_args " --no-create --no-recursion" >&6
exec /bin/sh ./configure $ac_configure_extra_args --no-create --no-recursion
fi
#
# INIT-COMMANDS section.
#
AMDEP_TRUE="" ac_aux_dir="."
for ac_config_target in $ac_config_targets
do
case "$ac_config_target" in
# Handling of arguments.
"Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
*) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
{ (exit 1); exit 1; }; };;
esac
done
# If the user did not use the arguments to specify the items to instantiate,
# then the envvar interface is used. Set only those that are not.
# We use the long form for the default assignment because of an extremely
# bizarre bug on SunOS 4.1.3.
if $ac_need_defaults; then
test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
fi
# Have a temporary directory for convenience. Make it in the build tree
# simply because there is no reason to put it here, and in addition,
# creating and moving files from /tmp can sometimes cause problems.
# Create a temporary directory, and hook for its removal unless debugging.
$debug ||
{
trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
trap '{ (exit 1); exit 1; }' 1 2 13 15
}
# Create a (secure) tmp directory for tmp files.
{
tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
test -n "$tmp" && test -d "$tmp"
} ||
{
tmp=./confstat$$-$RANDOM
(umask 077 && mkdir $tmp)
} ||
{
echo "$me: cannot create a temporary directory in ." >&2
{ (exit 1); exit 1; }
}
#
# CONFIG_FILES section.
#
# No need to generate the scripts if there are no CONFIG_FILES.
# This happens for instance when ./config.status config.h
if test -n "$CONFIG_FILES"; then
# Protect against being on the right side of a sed subst in config.status.
sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g;
s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF
s,@SHELL@,/bin/sh,;t t
s,@PATH_SEPARATOR@,:,;t t
s,@PACKAGE_NAME@,libsangoma,;t t
s,@PACKAGE_TARNAME@,libsangoma,;t t
s,@PACKAGE_VERSION@,1.0.0,;t t
s,@PACKAGE_STRING@,libsangoma 1.0.0,;t t
s,@PACKAGE_BUGREPORT@,anthmct@yahoo.com,;t t
s,@exec_prefix@,${prefix},;t t
s,@prefix@,/usr/local,;t t
s,@program_transform_name@,s,x,x,,;t t
s,@bindir@,${exec_prefix}/bin,;t t
s,@sbindir@,${exec_prefix}/sbin,;t t
s,@libexecdir@,${exec_prefix}/libexec,;t t
s,@datadir@,${prefix}/share,;t t
s,@sysconfdir@,${prefix}/etc,;t t
s,@sharedstatedir@,${prefix}/com,;t t
s,@localstatedir@,${prefix}/var,;t t
s,@libdir@,${exec_prefix}/lib,;t t
s,@includedir@,${prefix}/include,;t t
s,@oldincludedir@,/usr/include,;t t
s,@infodir@,${prefix}/info,;t t
s,@mandir@,${prefix}/man,;t t
s,@build_alias@,,;t t
s,@host_alias@,,;t t
s,@target_alias@,,;t t
s,@DEFS@,-DPACKAGE_NAME=\"libsangoma\" -DPACKAGE_TARNAME=\"libsangoma\" -DPACKAGE_VERSION=\"1.0.0\" -DPACKAGE_STRING=\"libsangoma\ 1.0.0\" -DPACKAGE_BUGREPORT=\"anthmct@yahoo.com\" -DPACKAGE=\"libsangoma\" -DVERSION=\"1.0.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETINET_IN_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_MATH_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_SYS_SELECT_H=1 -DHAVE_SYS_SOCKET_H=1 -DSELECT_TYPE_ARG1=int -DSELECT_TYPE_ARG234=\(fd_set\ \*\) -DSELECT_TYPE_ARG5=\(struct\ timeval\ \*\) -DHAVE_GETTIMEOFDAY=1 -DHAVE_MEMSET=1 -DHAVE_SELECT=1 -DHAVE_SOCKET=1 ,;t t
s,@ECHO_C@,,;t t
s,@ECHO_N@,-n,;t t
s,@ECHO_T@,,;t t
s,@LIBS@,,;t t
s,@INSTALL_PROGRAM@,${INSTALL},;t t
s,@INSTALL_SCRIPT@,${INSTALL},;t t
s,@INSTALL_DATA@,${INSTALL} -m 644,;t t
s,@CYGPATH_W@,echo,;t t
s,@PACKAGE@,libsangoma,;t t
s,@VERSION@,1.0.0,;t t
s,@ACLOCAL@,${SHELL} /usr/src/libsangoma/trunk/missing --run aclocal-1.9,;t t
s,@AUTOCONF@,${SHELL} /usr/src/libsangoma/trunk/missing --run autoconf,;t t
s,@AUTOMAKE@,${SHELL} /usr/src/libsangoma/trunk/missing --run automake-1.9,;t t
s,@AUTOHEADER@,${SHELL} /usr/src/libsangoma/trunk/missing --run autoheader,;t t
s,@MAKEINFO@,${SHELL} /usr/src/libsangoma/trunk/missing --run makeinfo,;t t
s,@install_sh@,/usr/src/libsangoma/trunk/install-sh,;t t
s,@STRIP@,strip,;t t
s,@ac_ct_STRIP@,strip,;t t
s,@INSTALL_STRIP_PROGRAM@,${SHELL} $(install_sh) -c -s,;t t
s,@mkdir_p@,mkdir -p --,;t t
s,@AWK@,gawk,;t t
s,@SET_MAKE@,,;t t
s,@am__leading_dot@,.,;t t
s,@AMTAR@,${SHELL} /usr/src/libsangoma/trunk/missing --run tar,;t t
s,@am__tar@,${AMTAR} chof - "$$tardir",;t t
s,@am__untar@,${AMTAR} xf -,;t t
s,@CC@,gcc,;t t
s,@CFLAGS@,-g -O2,;t t
s,@LDFLAGS@,,;t t
s,@CPPFLAGS@,,;t t
s,@ac_ct_CC@,gcc,;t t
s,@EXEEXT@,,;t t
s,@OBJEXT@,o,;t t
s,@DEPDIR@,.deps,;t t
s,@am__include@,include,;t t
s,@am__quote@,,;t t
s,@AMDEP_TRUE@,,;t t
s,@AMDEP_FALSE@,#,;t t
s,@AMDEPBACKSLASH@,\,;t t
s,@CCDEPMODE@,depmode=gcc3,;t t
s,@am__fastdepCC_TRUE@,,;t t
s,@am__fastdepCC_FALSE@,#,;t t
s,@build@,i686-pc-linux-gnu,;t t
s,@build_cpu@,i686,;t t
s,@build_vendor@,pc,;t t
s,@build_os@,linux-gnu,;t t
s,@host@,i686-pc-linux-gnu,;t t
s,@host_cpu@,i686,;t t
s,@host_vendor@,pc,;t t
s,@host_os@,linux-gnu,;t t
s,@EGREP@,grep -E,;t t
s,@LN_S@,ln -s,;t t
s,@ECHO@,echo,;t t
s,@AR@,ar,;t t
s,@ac_ct_AR@,ar,;t t
s,@RANLIB@,ranlib,;t t
s,@ac_ct_RANLIB@,ranlib,;t t
s,@CPP@,gcc -E,;t t
s,@CXX@,g++,;t t
s,@CXXFLAGS@,-g -O2,;t t
s,@ac_ct_CXX@,g++,;t t
s,@CXXDEPMODE@,depmode=gcc3,;t t
s,@am__fastdepCXX_TRUE@,,;t t
s,@am__fastdepCXX_FALSE@,#,;t t
s,@CXXCPP@,g++ -E,;t t
s,@F77@,g77,;t t
s,@FFLAGS@,-g -O2,;t t
s,@ac_ct_F77@,g77,;t t
s,@LIBTOOL@,$(SHELL) $(top_builddir)/libtool,;t t
s,@LIBPRI_TRUE@,#,;t t
s,@LIBPRI_FALSE@,,;t t
s,@libpripath@,,;t t
s,@LIBOBJS@,,;t t
s,@LTLIBOBJS@,,;t t
CEOF
# Split the substitutions into bite-sized pieces for seds with
# small command number limits, like on Digital OSF/1 and HP-UX.
ac_max_sed_lines=48
ac_sed_frag=1 # Number of current file.
ac_beg=1 # First line for current file.
ac_end=$ac_max_sed_lines # Line after last line for current file.
ac_more_lines=:
ac_sed_cmds=
while $ac_more_lines; do
if test $ac_beg -gt 1; then
sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
else
sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
fi
if test ! -s $tmp/subs.frag; then
ac_more_lines=false
else
# The purpose of the label and of the branching condition is to
# speed up the sed processing (if there are no `@' at all, there
# is no need to browse any of the substitutions).
# These are the two extra sed commands mentioned above.
(echo ':t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
if test -z "$ac_sed_cmds"; then
ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
else
ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
fi
ac_sed_frag=`expr $ac_sed_frag + 1`
ac_beg=$ac_end
ac_end=`expr $ac_end + $ac_max_sed_lines`
fi
done
if test -z "$ac_sed_cmds"; then
ac_sed_cmds=cat
fi
fi # test -n "$CONFIG_FILES"
for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
case $ac_file in
- | *:- | *:-:* ) # input from stdin
cat >$tmp/stdin
ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
*:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
* ) ac_file_in=$ac_file.in ;;
esac
# Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
ac_dir=`(dirname "$ac_file") 2>/dev/null ||
$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$ac_file" : 'X\(//\)[^/]' \| \
X"$ac_file" : 'X\(//\)$' \| \
X"$ac_file" : 'X\(/\)' \| \
. : '\(.\)' 2>/dev/null ||
echo X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
/^X\(\/\/\)$/{ s//\1/; q; }
/^X\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
{ if $as_mkdir_p; then
mkdir -p "$ac_dir"
else
as_dir="$ac_dir"
as_dirs=
while test ! -d "$as_dir"; do
as_dirs="$as_dir $as_dirs"
as_dir=`(dirname "$as_dir") 2>/dev/null ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| \
. : '\(.\)' 2>/dev/null ||
echo X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
/^X\(\/\/\)$/{ s//\1/; q; }
/^X\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
done
test ! -n "$as_dirs" || mkdir $as_dirs
fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
{ (exit 1); exit 1; }; }; }
ac_builddir=.
if test "$ac_dir" != .; then
ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
# A "../" for each directory in $ac_dir_suffix.
ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
else
ac_dir_suffix= ac_top_builddir=
fi
case $srcdir in
.) # No --srcdir option. We are building in place.
ac_srcdir=.
if test -z "$ac_top_builddir"; then
ac_top_srcdir=.
else
ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
fi ;;
[\\/]* | ?:[\\/]* ) # Absolute path.
ac_srcdir=$srcdir$ac_dir_suffix;
ac_top_srcdir=$srcdir ;;
*) # Relative path.
ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_builddir$srcdir ;;
esac
# Do not use `cd foo && pwd` to compute absolute paths, because
# the directories may not exist.
case `pwd` in
.) ac_abs_builddir="$ac_dir";;
*)
case "$ac_dir" in
.) ac_abs_builddir=`pwd`;;
[\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
*) ac_abs_builddir=`pwd`/"$ac_dir";;
esac;;
esac
case $ac_abs_builddir in
.) ac_abs_top_builddir=${ac_top_builddir}.;;
*)
case ${ac_top_builddir}. in
.) ac_abs_top_builddir=$ac_abs_builddir;;
[\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
*) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
esac;;
esac
case $ac_abs_builddir in
.) ac_abs_srcdir=$ac_srcdir;;
*)
case $ac_srcdir in
.) ac_abs_srcdir=$ac_abs_builddir;;
[\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
*) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
esac;;
esac
case $ac_abs_builddir in
.) ac_abs_top_srcdir=$ac_top_srcdir;;
*)
case $ac_top_srcdir in
.) ac_abs_top_srcdir=$ac_abs_builddir;;
[\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
*) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
esac;;
esac
case $INSTALL in
[\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
*) ac_INSTALL=$ac_top_builddir$INSTALL ;;
esac
if test x"$ac_file" != x-; then
{ echo "$as_me:$LINENO: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
rm -f "$ac_file"
fi
# Let's still pretend it is `configure' which instantiates (i.e., don't
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
if test x"$ac_file" = x-; then
configure_input=
else
configure_input="$ac_file. "
fi
configure_input=$configure_input"Generated from `echo $ac_file_in |
sed 's,.*/,,'` by configure."
# First look for the input files in the build tree, otherwise in the
# src tree.
ac_file_inputs=`IFS=:
for f in $ac_file_in; do
case $f in
-) echo $tmp/stdin ;;
[\\/$]*)
# Absolute (can't be DOS-style, as IFS=:)
test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
echo "$f";;
*) # Relative
if test -f "$f"; then
# Build tree
echo "$f"
elif test -f "$srcdir/$f"; then
# Source tree
echo "$srcdir/$f"
else
# /dev/null tree
{ { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
fi;;
esac
done` || { (exit 1); exit 1; }
sed "/^[ ]*VPATH[ ]*=/{
s/:*\$(srcdir):*/:/;
s/:*\${srcdir}:*/:/;
s/:*@srcdir@:*/:/;
s/^\([^=]*=[ ]*\):*/\1/;
s/:*$//;
s/^[^=]*=[ ]*$//;
}
:t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
s,@configure_input@,$configure_input,;t t
s,@srcdir@,$ac_srcdir,;t t
s,@abs_srcdir@,$ac_abs_srcdir,;t t
s,@top_srcdir@,$ac_top_srcdir,;t t
s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
s,@builddir@,$ac_builddir,;t t
s,@abs_builddir@,$ac_abs_builddir,;t t
s,@top_builddir@,$ac_top_builddir,;t t
s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
s,@INSTALL@,$ac_INSTALL,;t t
" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
rm -f $tmp/stdin
if test x"$ac_file" != x-; then
mv $tmp/out $ac_file
else
cat $tmp/out
rm -f $tmp/out
fi
done
#
# CONFIG_COMMANDS section.
#
for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$ac_dest" : 'X\(//\)[^/]' \| \
X"$ac_dest" : 'X\(//\)$' \| \
X"$ac_dest" : 'X\(/\)' \| \
. : '\(.\)' 2>/dev/null ||
echo X"$ac_dest" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
/^X\(\/\/\)$/{ s//\1/; q; }
/^X\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
{ if $as_mkdir_p; then
mkdir -p "$ac_dir"
else
as_dir="$ac_dir"
as_dirs=
while test ! -d "$as_dir"; do
as_dirs="$as_dir $as_dirs"
as_dir=`(dirname "$as_dir") 2>/dev/null ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| \
. : '\(.\)' 2>/dev/null ||
echo X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
/^X\(\/\/\)$/{ s//\1/; q; }
/^X\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
done
test ! -n "$as_dirs" || mkdir $as_dirs
fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
{ (exit 1); exit 1; }; }; }
ac_builddir=.
if test "$ac_dir" != .; then
ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
# A "../" for each directory in $ac_dir_suffix.
ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
else
ac_dir_suffix= ac_top_builddir=
fi
case $srcdir in
.) # No --srcdir option. We are building in place.
ac_srcdir=.
if test -z "$ac_top_builddir"; then
ac_top_srcdir=.
else
ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
fi ;;
[\\/]* | ?:[\\/]* ) # Absolute path.
ac_srcdir=$srcdir$ac_dir_suffix;
ac_top_srcdir=$srcdir ;;
*) # Relative path.
ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_builddir$srcdir ;;
esac
# Do not use `cd foo && pwd` to compute absolute paths, because
# the directories may not exist.
case `pwd` in
.) ac_abs_builddir="$ac_dir";;
*)
case "$ac_dir" in
.) ac_abs_builddir=`pwd`;;
[\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
*) ac_abs_builddir=`pwd`/"$ac_dir";;
esac;;
esac
case $ac_abs_builddir in
.) ac_abs_top_builddir=${ac_top_builddir}.;;
*)
case ${ac_top_builddir}. in
.) ac_abs_top_builddir=$ac_abs_builddir;;
[\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
*) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
esac;;
esac
case $ac_abs_builddir in
.) ac_abs_srcdir=$ac_srcdir;;
*)
case $ac_srcdir in
.) ac_abs_srcdir=$ac_abs_builddir;;
[\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
*) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
esac;;
esac
case $ac_abs_builddir in
.) ac_abs_top_srcdir=$ac_top_srcdir;;
*)
case $ac_top_srcdir in
.) ac_abs_top_srcdir=$ac_abs_builddir;;
[\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
*) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
esac;;
esac
{ echo "$as_me:$LINENO: executing $ac_dest commands" >&5
echo "$as_me: executing $ac_dest commands" >&6;}
case $ac_dest in
depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
# Strip MF so we end up with the name of the file.
mf=`echo "$mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile or not.
# We used to match only the files named `Makefile.in', but
# some people rename them; so instead we look at the file content.
# Grep'ing the first line is not enough: some people post-process
# each Makefile.in and add a new line on top of each file to say so.
# So let's grep whole file.
if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
dirpart=`(dirname "$mf") 2>/dev/null ||
$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$mf" : 'X\(//\)[^/]' \| \
X"$mf" : 'X\(//\)$' \| \
X"$mf" : 'X\(/\)' \| \
. : '\(.\)' 2>/dev/null ||
echo X"$mf" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
/^X\(\/\/\)$/{ s//\1/; q; }
/^X\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
else
continue
fi
# Extract the definition of DEPDIR, am__include, and am__quote
# from the Makefile without running `make'.
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
test -z "am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# When using ansi2knr, U may be empty or an underscore; expand it
U=`sed -n 's/^U = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`(dirname "$file") 2>/dev/null ||
$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$file" : 'X\(//\)[^/]' \| \
X"$file" : 'X\(//\)$' \| \
X"$file" : 'X\(/\)' \| \
. : '\(.\)' 2>/dev/null ||
echo X"$file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
/^X\(\/\/\)$/{ s//\1/; q; }
/^X\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
{ if $as_mkdir_p; then
mkdir -p $dirpart/$fdir
else
as_dir=$dirpart/$fdir
as_dirs=
while test ! -d "$as_dir"; do
as_dirs="$as_dir $as_dirs"
as_dir=`(dirname "$as_dir") 2>/dev/null ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| \
. : '\(.\)' 2>/dev/null ||
echo X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
/^X\(\/\/\)$/{ s//\1/; q; }
/^X\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
done
test ! -n "$as_dirs" || mkdir $as_dirs
fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
{ (exit 1); exit 1; }; }; }
# echo "creating $dirpart/$file"
echo '# dummy' > "$dirpart/$file"
done
done
;;
esac
done
{ (exit 0); exit 0; }

View File

@ -22,16 +22,17 @@
#include "libsangoma.h"
#define DFT_CARD "wanpipe1"
#ifndef WP_TDM_EVENT_FE_ALARM
#ifndef WP_TDM_FEATURE_FE_ALARM
#warning "Warning: TDM FE ALARM not supported by driver"
#endif
#ifndef WP_TDMAPI_EVENT_DTMF
#warning "Warning: TDM EVENTS not supported by driver"
#ifndef WP_TDM_FEATURE_DTMF_EVENTS
#warning "Warning: TDM DTMF not supported by driver"
#endif
#ifndef WP_TDM_FEATURE_EVENTS
#warning "Warning: TDM EVENTS not supported by driver"
#endif
#if defined(WIN32)
@ -520,7 +521,7 @@ int sangoma_get_full_cfg(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
printf("\tusr_mtu_mru:\t%d\n",tdm_api->wp_tdm_cmd.usr_mtu_mru);
printf("\tidle flag:\t0x%02X\n",tdm_api->wp_tdm_cmd.idle_flag);
#ifdef WP_TDM_EVENT_FE_ALARM
#ifdef WP_TDM_FEATURE_FE_ALARM
printf("\tfe alarms:\t0x%02X\n",tdm_api->wp_tdm_cmd.fe_alarms);
#endif
@ -765,7 +766,7 @@ int sangoma_tdm_write_rbs(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api, unsigned char
int sangoma_tdm_read_event(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
{
#ifdef WP_TDM_EVENT_TDM_API_EVENTS
#ifdef WP_TDM_FEATURE_EVENTS
wp_tdm_api_event_t *rx_event;
@ -793,7 +794,8 @@ int sangoma_tdm_read_event(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
}
break;
#ifdef WP_TDM_FEATURE_DTMF_EVENTS
case WP_TDMAPI_EVENT_DTMF:
printf("%d: GOT DTMF EVENT\n",(int)fd);
if (tdm_api->wp_tdm_event.wp_dtmf_event) {
@ -803,6 +805,7 @@ int sangoma_tdm_read_event(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
rx_event->wp_tdm_api_event_dtmf_port);
}
break;
#endif
case WP_TDMAPI_EVENT_RXHOOK:
printf("%d: GOT RXHOOK EVENT\n",(int)fd);
@ -828,13 +831,13 @@ int sangoma_tdm_read_event(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
}
break;
#ifdef WP_TDM_EVENT_FE_ALARM
case WP_TDMAPI_EVENT_FE_ALARM:
#ifdef WP_TDM_FEATURE_FE_ALARM
case WP_TDMAPI_EVENT_ALARM:
printf("%d: GOT FE ALARMS EVENT %i\n",(int)fd,
rx_event->wp_tdm_api_event_fe_alarm);
rx_event->wp_tdm_api_event_alarm);
if (tdm_api->wp_tdm_event.wp_fe_alarm_event) {
tdm_api->wp_tdm_event.wp_fe_alarm_event(fd,
rx_event->wp_tdm_api_event_fe_alarm);
rx_event->wp_tdm_api_event_alarm);
}
#endif
@ -845,13 +848,12 @@ int sangoma_tdm_read_event(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
return 0;
#else
return -EINVAL;
printf("Error: Read Event not supported!\n");
return -1;
#endif
}
#ifdef WP_TDMAPI_EVENT_DTMF
#ifdef WP_TDM_FEATURE_DTMF_EVENTS
int sangoma_tdm_enable_dtmf_events(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
{
int err;
@ -911,6 +913,7 @@ int sangoma_tdm_disable_rm_dtmf_events(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
return 0;
}
#endif
int sangoma_tdm_enable_rxhook_events(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
{
@ -927,33 +930,6 @@ int sangoma_tdm_enable_rxhook_events(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
return 0;
}
int sangoma_tdm_enable_hwec(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
{
int err;
tdm_api->wp_tdm_cmd.cmd = SIOC_WP_TDM_ENABLE_HWEC;
err=sangoma_tdm_cmd_exec(fd,tdm_api);
if (err){
return err;
}
return 0;
}
int sangoma_tdm_disable_hwec(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
{
int err;
tdm_api->wp_tdm_cmd.cmd = SIOC_WP_TDM_DISABLE_HWEC;
err=sangoma_tdm_cmd_exec(fd,tdm_api);
if (err){
return err;
}
return 0;
}
int sangoma_tdm_disable_rxhook_events(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
{
int err;
@ -1156,13 +1132,39 @@ int sangoma_tdm_disable_tone_events(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api) {
return tdm_api->wp_tdm_cmd.rbs_poll;
}
#endif
int sangoma_tdm_enable_hwec(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
{
int err;
tdm_api->wp_tdm_cmd.cmd = SIOC_WP_TDM_ENABLE_HWEC;
err=sangoma_tdm_cmd_exec(fd,tdm_api);
if (err){
return err;
}
return 0;
}
int sangoma_tdm_disable_hwec(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
{
int err;
tdm_api->wp_tdm_cmd.cmd = SIOC_WP_TDM_DISABLE_HWEC;
err=sangoma_tdm_cmd_exec(fd,tdm_api);
if (err){
return err;
}
return 0;
}
/*========================================================
* GET Front End Alarms
*
*/
#ifdef WP_TDM_EVENT_FE_ALARM
#ifdef WP_TDM_FEATURE_FE_ALARM
int sangoma_tdm_get_fe_alarms(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
{
int err;
@ -1178,4 +1180,26 @@ int sangoma_tdm_get_fe_alarms(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
}
#endif
/* get current Line Connection state - Connected/Disconnected */
int sangoma_tdm_get_fe_status(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api, unsigned char *current_status)
{
int err;
tdm_api->wp_tdm_cmd.cmd = SIOC_WP_TDM_GET_FE_STATUS;
err = sangoma_tdm_cmd_exec(fd, tdm_api);
*current_status = tdm_api->wp_tdm_cmd.fe_status;
return err;
}
/* set current Line Connection state - Connected/Disconnected. valid only for ISDN BRI */
int sangoma_tdm_set_fe_status(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api, unsigned char new_status)
{
tdm_api->wp_tdm_cmd.cmd = SIOC_WP_TDM_SET_FE_STATUS;
tdm_api->wp_tdm_cmd.fe_status = new_status;
return sangoma_tdm_cmd_exec(fd, tdm_api);
}
#endif /* WANPIPE_TDM_API */

View File

@ -50,6 +50,7 @@ typedef unsigned __int32 u_int32_t;
typedef HANDLE sng_fd_t;
#else
/* L I N U X */
#include <stdlib.h>
#include <ctype.h>
#include <unistd.h>
@ -76,6 +77,7 @@ typedef HANDLE sng_fd_t;
#ifdef WANPIPE_TDM_API
# include <linux/wanpipe_tdm_api.h>
#endif
#endif
#define FNAME_LEN 50
@ -176,15 +178,20 @@ int sangoma_tdm_disable_tone_events(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
int sangoma_tdm_get_fe_alarms(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
int sangoma_tdm_enable_hwec(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
int sangoma_tdm_disable_hwec(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
int sangoma_tdm_txsig_onhook(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
int sangoma_tdm_txsig_offhook(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
int sangoma_tdm_txsig_start(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
int sangoma_tdm_txsig_kewl(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
int sangoma_tdm_enable_hwec(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
int sangoma_tdm_disable_hwec(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
/* get current Line Connection state - Connected/Disconnected */
int sangoma_tdm_get_fe_status(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api, unsigned char *current_status);
/* set current Line Connection state - Connected/Disconnected. valid only for ISDN BRI */
int sangoma_tdm_set_fe_status(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api, unsigned char new_status);
#ifndef LIBSANGOMA_GET_HWCODING
#define LIBSANGOMA_GET_HWCODING 1
#endif
@ -193,3 +200,4 @@ int sangoma_tdm_get_hw_coding(int fd, wanpipe_tdm_api_t *tdm_api);
#endif /* WANPIPE_TDM_API */
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,5 @@
Added new event support
--This line, and those below, will be ignored--
M libsangoma.c
M libsangoma.h

View File

@ -0,0 +1,5 @@
Added new event features
--This line, and those below, will be ignored--
M libsangoma.c
M libsangoma.h

View File

@ -1,8 +1,8 @@
# Makefile.in generated by automake 1.9.2 from Makefile.am.
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# Makefile. Generated from Makefile.in by configure.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004 Free Software Foundation, Inc.
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@ -16,8 +16,6 @@
SOURCES = $(libsangoma_a_SOURCES) $(libsangoma_la_SOURCES)
srcdir = .
top_srcdir = .
@ -87,11 +85,11 @@ depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(libsangoma_a_SOURCES) $(libsangoma_la_SOURCES)
DIST_SOURCES = $(libsangoma_a_SOURCES) \
@ -112,14 +110,14 @@ DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = ${SHELL} /root/3.2/wanpipe/api/libsangoma/missing --run aclocal-1.9
ACLOCAL = ${SHELL} /root/3.3/wanpipe/api/libsangoma/missing --run aclocal-1.9
AMDEP_FALSE = #
AMDEP_TRUE =
AMTAR = ${SHELL} /root/3.2/wanpipe/api/libsangoma/missing --run tar
AMTAR = ${SHELL} /root/3.3/wanpipe/api/libsangoma/missing --run tar
AR = ar
AUTOCONF = ${SHELL} /root/3.2/wanpipe/api/libsangoma/missing --run autoconf
AUTOHEADER = ${SHELL} /root/3.2/wanpipe/api/libsangoma/missing --run autoheader
AUTOMAKE = ${SHELL} /root/3.2/wanpipe/api/libsangoma/missing --run automake-1.9
AUTOCONF = ${SHELL} /root/3.3/wanpipe/api/libsangoma/missing --run autoconf
AUTOHEADER = ${SHELL} /root/3.3/wanpipe/api/libsangoma/missing --run autoheader
AUTOMAKE = ${SHELL} /root/3.3/wanpipe/api/libsangoma/missing --run automake-1.9
AWK = gawk
CC = gcc
CCDEPMODE = depmode=gcc3
@ -153,7 +151,7 @@ LIBS =
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LN_S = ln -s
LTLIBOBJS =
MAKEINFO = ${SHELL} /root/3.2/wanpipe/api/libsangoma/missing --run makeinfo
MAKEINFO = ${SHELL} /root/3.3/wanpipe/api/libsangoma/missing --run makeinfo
OBJEXT = o
PACKAGE = libsangoma
PACKAGE_BUGREPORT = anthmct@yahoo.com
@ -163,6 +161,7 @@ PACKAGE_TARNAME = libsangoma
PACKAGE_VERSION = 1.0.0
PATH_SEPARATOR = :
RANLIB = ranlib
SED = /bin/sed
SET_MAKE =
SHELL = /bin/sh
STRIP = strip
@ -197,7 +196,7 @@ host_os = linux-gnu
host_vendor = pc
includedir = ${prefix}/include
infodir = ${prefix}/info
install_sh = /root/3.2/wanpipe/api/libsangoma/install-sh
install_sh = /root/3.3/wanpipe/api/libsangoma/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
libpripath =
@ -357,18 +356,18 @@ include ./$(DEPDIR)/libsangoma_la-sangoma_pri.Plo
# $(LTCOMPILE) -c -o $@ $<
libsangoma_la-libsangoma.lo: libsangoma.c
if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -MT libsangoma_la-libsangoma.lo -MD -MP -MF "$(DEPDIR)/libsangoma_la-libsangoma.Tpo" -c -o libsangoma_la-libsangoma.lo `test -f 'libsangoma.c' || echo '$(srcdir)/'`libsangoma.c; \
if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -MT libsangoma_la-libsangoma.lo -MD -MP -MF "$(DEPDIR)/libsangoma_la-libsangoma.Tpo" -c -o libsangoma_la-libsangoma.lo `test -f 'libsangoma.c' || echo '$(srcdir)/'`libsangoma.c; \
then mv -f "$(DEPDIR)/libsangoma_la-libsangoma.Tpo" "$(DEPDIR)/libsangoma_la-libsangoma.Plo"; else rm -f "$(DEPDIR)/libsangoma_la-libsangoma.Tpo"; exit 1; fi
# source='libsangoma.c' object='libsangoma_la-libsangoma.lo' libtool=yes \
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
# $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -c -o libsangoma_la-libsangoma.lo `test -f 'libsangoma.c' || echo '$(srcdir)/'`libsangoma.c
# $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -c -o libsangoma_la-libsangoma.lo `test -f 'libsangoma.c' || echo '$(srcdir)/'`libsangoma.c
libsangoma_la-sangoma_pri.lo: sangoma_pri.c
if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -MT libsangoma_la-sangoma_pri.lo -MD -MP -MF "$(DEPDIR)/libsangoma_la-sangoma_pri.Tpo" -c -o libsangoma_la-sangoma_pri.lo `test -f 'sangoma_pri.c' || echo '$(srcdir)/'`sangoma_pri.c; \
if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -MT libsangoma_la-sangoma_pri.lo -MD -MP -MF "$(DEPDIR)/libsangoma_la-sangoma_pri.Tpo" -c -o libsangoma_la-sangoma_pri.lo `test -f 'sangoma_pri.c' || echo '$(srcdir)/'`sangoma_pri.c; \
then mv -f "$(DEPDIR)/libsangoma_la-sangoma_pri.Tpo" "$(DEPDIR)/libsangoma_la-sangoma_pri.Plo"; else rm -f "$(DEPDIR)/libsangoma_la-sangoma_pri.Tpo"; exit 1; fi
# source='sangoma_pri.c' object='libsangoma_la-sangoma_pri.lo' libtool=yes \
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
# $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -c -o libsangoma_la-sangoma_pri.lo `test -f 'sangoma_pri.c' || echo '$(srcdir)/'`sangoma_pri.c
# $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -c -o libsangoma_la-sangoma_pri.lo `test -f 'sangoma_pri.c' || echo '$(srcdir)/'`sangoma_pri.c
mostlyclean-libtool:
-rm -f *.lo

View File

@ -1,8 +1,8 @@
# Makefile.in generated by automake 1.9.2 from Makefile.am.
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004 Free Software Foundation, Inc.
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@ -16,8 +16,6 @@
SOURCES = $(libsangoma_a_SOURCES) $(libsangoma_la_SOURCES)
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@ -87,11 +85,11 @@ depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(libsangoma_a_SOURCES) $(libsangoma_la_SOURCES)
DIST_SOURCES = $(libsangoma_a_SOURCES) \
@ -163,6 +161,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
@ -357,18 +356,18 @@ distclean-compile:
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
libsangoma_la-libsangoma.lo: libsangoma.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -MT libsangoma_la-libsangoma.lo -MD -MP -MF "$(DEPDIR)/libsangoma_la-libsangoma.Tpo" -c -o libsangoma_la-libsangoma.lo `test -f 'libsangoma.c' || echo '$(srcdir)/'`libsangoma.c; \
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -MT libsangoma_la-libsangoma.lo -MD -MP -MF "$(DEPDIR)/libsangoma_la-libsangoma.Tpo" -c -o libsangoma_la-libsangoma.lo `test -f 'libsangoma.c' || echo '$(srcdir)/'`libsangoma.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsangoma_la-libsangoma.Tpo" "$(DEPDIR)/libsangoma_la-libsangoma.Plo"; else rm -f "$(DEPDIR)/libsangoma_la-libsangoma.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libsangoma.c' object='libsangoma_la-libsangoma.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -c -o libsangoma_la-libsangoma.lo `test -f 'libsangoma.c' || echo '$(srcdir)/'`libsangoma.c
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -c -o libsangoma_la-libsangoma.lo `test -f 'libsangoma.c' || echo '$(srcdir)/'`libsangoma.c
libsangoma_la-sangoma_pri.lo: sangoma_pri.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -MT libsangoma_la-sangoma_pri.lo -MD -MP -MF "$(DEPDIR)/libsangoma_la-sangoma_pri.Tpo" -c -o libsangoma_la-sangoma_pri.lo `test -f 'sangoma_pri.c' || echo '$(srcdir)/'`sangoma_pri.c; \
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -MT libsangoma_la-sangoma_pri.lo -MD -MP -MF "$(DEPDIR)/libsangoma_la-sangoma_pri.Tpo" -c -o libsangoma_la-sangoma_pri.lo `test -f 'sangoma_pri.c' || echo '$(srcdir)/'`sangoma_pri.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsangoma_la-sangoma_pri.Tpo" "$(DEPDIR)/libsangoma_la-sangoma_pri.Plo"; else rm -f "$(DEPDIR)/libsangoma_la-sangoma_pri.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sangoma_pri.c' object='libsangoma_la-sangoma_pri.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -c -o libsangoma_la-sangoma_pri.lo `test -f 'sangoma_pri.c' || echo '$(srcdir)/'`sangoma_pri.c
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsangoma_la_CFLAGS) $(CFLAGS) -c -o libsangoma_la-sangoma_pri.lo `test -f 'sangoma_pri.c' || echo '$(srcdir)/'`sangoma_pri.c
mostlyclean-libtool:
-rm -f *.lo

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,350 @@
# This file was generated.
# It contains the lists of macros which have been traced.
# It can be safely removed.
@request = (
bless( [
'0',
1,
[
'/usr/share/autoconf'
],
[
'/usr/share/autoconf/autoconf/autoconf.m4f',
'/usr/share/aclocal/libtool.m4',
'/usr/share/aclocal-1.9/amversion.m4',
'/usr/share/aclocal-1.9/auxdir.m4',
'/usr/share/aclocal-1.9/cond.m4',
'/usr/share/aclocal-1.9/depend.m4',
'/usr/share/aclocal-1.9/depout.m4',
'/usr/share/aclocal-1.9/init.m4',
'/usr/share/aclocal-1.9/install-sh.m4',
'/usr/share/aclocal-1.9/lead-dot.m4',
'/usr/share/aclocal-1.9/make.m4',
'/usr/share/aclocal-1.9/missing.m4',
'/usr/share/aclocal-1.9/mkdirp.m4',
'/usr/share/aclocal-1.9/options.m4',
'/usr/share/aclocal-1.9/runlog.m4',
'/usr/share/aclocal-1.9/sanity.m4',
'/usr/share/aclocal-1.9/strip.m4',
'/usr/share/aclocal-1.9/tar.m4',
'configure.in'
],
{
'AM_ENABLE_STATIC' => 1,
'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
'AC_TYPE_OFF_T' => 1,
'AC_C_VOLATILE' => 1,
'AC_FUNC_CLOSEDIR_VOID' => 1,
'_LT_AC_SHELL_INIT' => 1,
'AC_REPLACE_FNMATCH' => 1,
'AC_DEFUN' => 1,
'_LT_AC_LANG_CXX_CONFIG' => 1,
'AC_PROG_LIBTOOL' => 1,
'AC_FUNC_STAT' => 1,
'AM_PROG_MKDIR_P' => 1,
'AC_FUNC_WAIT3' => 1,
'AC_STRUCT_TM' => 1,
'AC_FUNC_LSTAT' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AC_FUNC_STRTOD' => 1,
'AC_CHECK_HEADERS' => 1,
'AM_MISSING_PROG' => 1,
'AC_FUNC_STRNLEN' => 1,
'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
'AC_PROG_CXX' => 1,
'_LT_AC_LANG_C_CONFIG' => 1,
'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
'AM_PROG_INSTALL_STRIP' => 1,
'AC_PROG_AWK' => 1,
'_m4_warn' => 1,
'AC_LIBTOOL_OBJDIR' => 1,
'AC_HEADER_MAJOR' => 1,
'AM_SANITY_CHECK' => 1,
'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
'_LT_AC_CHECK_DLFCN' => 1,
'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
'_AM_PROG_TAR' => 1,
'AC_LIBTOOL_GCJ' => 1,
'AC_PROG_GCC_TRADITIONAL' => 1,
'AC_LIBSOURCE' => 1,
'AC_STRUCT_ST_BLOCKS' => 1,
'AC_LIBTOOL_CONFIG' => 1,
'_LT_AC_LANG_F77' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'AC_PROG_MAKE_SET' => 1,
'sinclude' => 1,
'AM_DISABLE_SHARED' => 1,
'AM_PROG_LIBTOOL' => 1,
'_LT_AC_LANG_CXX' => 1,
'AM_PROG_LD' => 1,
'_LT_AC_FILE_LTDLL_C' => 1,
'AC_FUNC_STRERROR_R' => 1,
'AC_FUNC_FORK' => 1,
'AC_DECL_SYS_SIGLIST' => 1,
'AC_FUNC_VPRINTF' => 1,
'AU_DEFUN' => 1,
'AC_PROG_NM' => 1,
'AC_LIBTOOL_DLOPEN' => 1,
'AC_PROG_LD' => 1,
'AC_PROG_LD_GNU' => 1,
'AC_ENABLE_FAST_INSTALL' => 1,
'AC_INIT' => 1,
'AC_STRUCT_TIMEZONE' => 1,
'AC_SUBST' => 1,
'AC_FUNC_ALLOCA' => 1,
'_AM_SET_OPTION' => 1,
'AC_CANONICAL_HOST' => 1,
'_LT_LINKER_BOILERPLATE' => 1,
'AC_PROG_RANLIB' => 1,
'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
'AC_LIBTOOL_PROG_CC_C_O' => 1,
'AC_FUNC_SETPGRP' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AC_FUNC_MMAP' => 1,
'AC_TYPE_SIZE_T' => 1,
'AC_CHECK_TYPES' => 1,
'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'AC_CHECK_MEMBERS' => 1,
'AC_DEFUN_ONCE' => 1,
'AC_FUNC_UTIME_NULL' => 1,
'AC_FUNC_SELECT_ARGTYPES' => 1,
'_LT_AC_LANG_GCJ' => 1,
'AC_HEADER_STAT' => 1,
'AC_FUNC_STRFTIME' => 1,
'AC_C_INLINE' => 1,
'AC_LIBTOOL_RC' => 1,
'AC_DISABLE_FAST_INSTALL' => 1,
'_LT_AC_PROG_ECHO_BACKSLASH' => 1,
'AC_CONFIG_FILES' => 1,
'include' => 1,
'_LT_AC_SYS_LIBPATH_AIX' => 1,
'_LT_AC_TRY_DLOPEN_SELF' => 1,
'LT_AC_PROG_SED' => 1,
'AM_ENABLE_SHARED' => 1,
'AM_GNU_GETTEXT' => 1,
'_LT_AC_LANG_GCJ_CONFIG' => 1,
'AC_FUNC_OBSTACK' => 1,
'AC_CHECK_LIB' => 1,
'AC_ENABLE_SHARED' => 1,
'AC_FUNC_MALLOC' => 1,
'AC_FUNC_GETGROUPS' => 1,
'AC_FUNC_GETLOADAVG' => 1,
'AC_FUNC_FSEEKO' => 1,
'AC_ENABLE_STATIC' => 1,
'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
'AM_PROG_CC_C_O' => 1,
'_LT_AC_TAGVAR' => 1,
'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
'AC_FUNC_MKTIME' => 1,
'AM_CONDITIONAL' => 1,
'AC_HEADER_SYS_WAIT' => 1,
'AC_PROG_LN_S' => 1,
'AC_FUNC_MEMCMP' => 1,
'm4_include' => 1,
'AM_PROG_INSTALL_SH' => 1,
'AC_HEADER_DIRENT' => 1,
'AC_PROG_EGREP' => 1,
'_AC_AM_CONFIG_HEADER_HOOK' => 1,
'AC_PATH_MAGIC' => 1,
'AM_MAKE_INCLUDE' => 1,
'_LT_AC_TAGCONFIG' => 1,
'm4_pattern_forbid' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_LIBTOOL_COMPILER_OPTION' => 1,
'AC_DISABLE_SHARED' => 1,
'_LT_COMPILER_BOILERPLATE' => 1,
'AC_LIBTOOL_SETUP' => 1,
'AC_LIBTOOL_WIN32_DLL' => 1,
'AC_PROG_LD_RELOAD_FLAG' => 1,
'AC_HEADER_TIME' => 1,
'AC_TYPE_MODE_T' => 1,
'AC_FUNC_GETMNTENT' => 1,
'AM_MISSING_HAS_RUN' => 1,
'm4_sinclude' => 1,
'AC_LIBTOOL_DLOPEN_SELF' => 1,
'AC_PATH_X' => 1,
'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
'AC_HEADER_STDC' => 1,
'AC_LIBTOOL_LINKER_OPTION' => 1,
'AC_LIBTOOL_CXX' => 1,
'LT_AC_PROG_RC' => 1,
'LT_AC_PROG_GCJ' => 1,
'AC_FUNC_ERROR_AT_LINE' => 1,
'AM_DEP_TRACK' => 1,
'_LT_AC_PROG_CXXCPP' => 1,
'AM_DISABLE_STATIC' => 1,
'AC_FUNC_MBRTOWC' => 1,
'_AC_PROG_LIBTOOL' => 1,
'AC_TYPE_SIGNAL' => 1,
'AC_TYPE_UID_T' => 1,
'_AM_IF_OPTION' => 1,
'AC_PATH_TOOL_PREFIX' => 1,
'AC_LIBTOOL_F77' => 1,
'm4_pattern_allow' => 1,
'AM_SET_LEADING_DOT' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'_AM_DEPENDENCIES' => 1,
'AC_LIBTOOL_LANG_C_CONFIG' => 1,
'AC_PROG_CC' => 1,
'_LT_AC_SYS_COMPILER' => 1,
'AM_PROG_NM' => 1,
'AC_FUNC_STRCOLL' => 1,
'AC_PROG_YACC' => 1,
'AC_LIBLTDL_CONVENIENCE' => 1,
'AC_DEPLIBS_CHECK_METHOD' => 1,
'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
'AC_LIBLTDL_INSTALLABLE' => 1,
'AC_FUNC_CHOWN' => 1,
'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
'AC_FUNC_GETPGRP' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AC_FUNC_REALLOC' => 1,
'AC_DISABLE_STATIC' => 1,
'AC_CONFIG_LINKS' => 1,
'AM_MAINTAINER_MODE' => 1,
'_LT_AC_LOCK' => 1,
'_LT_AC_LANG_RC_CONFIG' => 1,
'AC_PROG_CPP' => 1,
'AC_TYPE_PID_T' => 1,
'AC_PROG_LEX' => 1,
'AC_C_CONST' => 1,
'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
'AC_FUNC_SETVBUF_REVERSED' => 1,
'AC_PROG_INSTALL' => 1,
'AM_AUX_DIR_EXPAND' => 1,
'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
'_LT_AC_LANG_F77_CONFIG' => 1,
'_AM_SET_OPTIONS' => 1,
'AM_RUN_LOG' => 1,
'_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'AC_LIBTOOL_PICMODE' => 1,
'AH_OUTPUT' => 1,
'AC_CHECK_LIBM' => 1,
'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
'_AM_MANGLE_OPTION' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
'AM_SET_DEPDIR' => 1,
'_LT_CC_BASENAME' => 1,
'AC_CHECK_FUNCS' => 1
}
], 'Autom4te::Request' ),
bless( [
'1',
1,
[
'/usr/share/autoconf'
],
[
'/usr/share/autoconf/autoconf/autoconf.m4f',
'aclocal.m4',
'configure.in'
],
{
'_LT_AC_TAGCONFIG' => 1,
'm4_pattern_forbid' => 1,
'AC_CANONICAL_TARGET' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_C_VOLATILE' => 1,
'AC_TYPE_OFF_T' => 1,
'AC_FUNC_CLOSEDIR_VOID' => 1,
'AC_REPLACE_FNMATCH' => 1,
'AC_PROG_LIBTOOL' => 1,
'AC_FUNC_STAT' => 1,
'AC_FUNC_WAIT3' => 1,
'AC_HEADER_TIME' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AC_FUNC_LSTAT' => 1,
'AC_STRUCT_TM' => 1,
'AC_FUNC_GETMNTENT' => 1,
'AC_TYPE_MODE_T' => 1,
'AC_CHECK_HEADERS' => 1,
'AC_FUNC_STRTOD' => 1,
'AC_FUNC_STRNLEN' => 1,
'm4_sinclude' => 1,
'AC_PROG_CXX' => 1,
'AC_PATH_X' => 1,
'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
'AC_PROG_AWK' => 1,
'_m4_warn' => 1,
'AC_HEADER_STDC' => 1,
'AC_HEADER_MAJOR' => 1,
'AC_FUNC_ERROR_AT_LINE' => 1,
'AC_PROG_GCC_TRADITIONAL' => 1,
'AC_LIBSOURCE' => 1,
'AC_FUNC_MBRTOWC' => 1,
'AC_STRUCT_ST_BLOCKS' => 1,
'AC_CANONICAL_BUILD' => 1,
'AC_TYPE_SIGNAL' => 1,
'AC_TYPE_UID_T' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'AC_PROG_MAKE_SET' => 1,
'm4_pattern_allow' => 1,
'sinclude' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'AC_FUNC_STRERROR_R' => 1,
'AC_PROG_CC' => 1,
'AC_DECL_SYS_SIGLIST' => 1,
'AC_FUNC_FORK' => 1,
'AC_FUNC_STRCOLL' => 1,
'AC_FUNC_VPRINTF' => 1,
'AC_PROG_YACC' => 1,
'AC_STRUCT_TIMEZONE' => 1,
'AC_INIT' => 1,
'AC_FUNC_CHOWN' => 1,
'AC_SUBST' => 1,
'AC_FUNC_ALLOCA' => 1,
'AC_CANONICAL_HOST' => 1,
'AC_FUNC_GETPGRP' => 1,
'AC_PROG_RANLIB' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AC_FUNC_SETPGRP' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AC_FUNC_MMAP' => 1,
'AC_FUNC_REALLOC' => 1,
'AC_TYPE_SIZE_T' => 1,
'AC_CONFIG_LINKS' => 1,
'AC_CHECK_TYPES' => 1,
'LT_SUPPORTED_TAG' => 1,
'AC_CHECK_MEMBERS' => 1,
'AM_MAINTAINER_MODE' => 1,
'AC_FUNC_UTIME_NULL' => 1,
'AC_FUNC_SELECT_ARGTYPES' => 1,
'AC_FUNC_STRFTIME' => 1,
'AC_HEADER_STAT' => 1,
'AC_C_INLINE' => 1,
'AC_PROG_CPP' => 1,
'AM_ENABLE_MULTILIB' => 1,
'AC_C_CONST' => 1,
'AC_PROG_LEX' => 1,
'AC_TYPE_PID_T' => 1,
'AC_CONFIG_FILES' => 1,
'include' => 1,
'AC_FUNC_SETVBUF_REVERSED' => 1,
'AC_PROG_INSTALL' => 1,
'AM_GNU_GETTEXT' => 1,
'AC_FUNC_OBSTACK' => 1,
'AC_CHECK_LIB' => 1,
'AC_FUNC_MALLOC' => 1,
'AC_FUNC_GETGROUPS' => 1,
'AC_FUNC_GETLOADAVG' => 1,
'AH_OUTPUT' => 1,
'AC_FUNC_FSEEKO' => 1,
'AM_PROG_CC_C_O' => 1,
'AC_FUNC_MKTIME' => 1,
'AM_CONDITIONAL' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_HEADER_SYS_WAIT' => 1,
'AC_FUNC_MEMCMP' => 1,
'AC_PROG_LN_S' => 1,
'm4_include' => 1,
'AC_HEADER_DIRENT' => 1,
'AC_CHECK_FUNCS' => 1
}
], 'Autom4te::Request' )
);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,441 @@
m4trace:configure.in:5: -1- AC_INIT([libsangoma], [1.0.0], [anthmct@yahoo.com])
m4trace:configure.in:5: -1- m4_pattern_forbid([^_?A[CHUM]_])
m4trace:configure.in:5: -1- m4_pattern_forbid([_AC_])
m4trace:configure.in:5: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
m4trace:configure.in:5: -1- m4_pattern_allow([^AS_FLAGS$])
m4trace:configure.in:5: -1- m4_pattern_forbid([^_?m4_])
m4trace:configure.in:5: -1- m4_pattern_forbid([^dnl$])
m4trace:configure.in:5: -1- m4_pattern_forbid([^_?AS_])
m4trace:configure.in:5: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])
m4trace:configure.in:5: -1- AC_SUBST([PATH_SEPARATOR])
m4trace:configure.in:5: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
m4trace:configure.in:5: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
m4trace:configure.in:5: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
m4trace:configure.in:5: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
m4trace:configure.in:5: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
m4trace:configure.in:5: -1- AC_SUBST([exec_prefix], [NONE])
m4trace:configure.in:5: -1- AC_SUBST([prefix], [NONE])
m4trace:configure.in:5: -1- AC_SUBST([program_transform_name], [s,x,x,])
m4trace:configure.in:5: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
m4trace:configure.in:5: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
m4trace:configure.in:5: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
m4trace:configure.in:5: -1- AC_SUBST([datadir], ['${prefix}/share'])
m4trace:configure.in:5: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
m4trace:configure.in:5: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
m4trace:configure.in:5: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
m4trace:configure.in:5: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
m4trace:configure.in:5: -1- AC_SUBST([includedir], ['${prefix}/include'])
m4trace:configure.in:5: -1- AC_SUBST([oldincludedir], ['/usr/include'])
m4trace:configure.in:5: -1- AC_SUBST([infodir], ['${prefix}/info'])
m4trace:configure.in:5: -1- AC_SUBST([mandir], ['${prefix}/man'])
m4trace:configure.in:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
m4trace:configure.in:5: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
#undef PACKAGE_NAME])
m4trace:configure.in:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
m4trace:configure.in:5: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME])
m4trace:configure.in:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
m4trace:configure.in:5: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
#undef PACKAGE_VERSION])
m4trace:configure.in:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
m4trace:configure.in:5: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
#undef PACKAGE_STRING])
m4trace:configure.in:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
m4trace:configure.in:5: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT])
m4trace:configure.in:5: -1- AC_SUBST([build_alias])
m4trace:configure.in:5: -1- AC_SUBST([host_alias])
m4trace:configure.in:5: -1- AC_SUBST([target_alias])
m4trace:configure.in:5: -1- AC_SUBST([DEFS])
m4trace:configure.in:5: -1- AC_SUBST([ECHO_C])
m4trace:configure.in:5: -1- AC_SUBST([ECHO_N])
m4trace:configure.in:5: -1- AC_SUBST([ECHO_T])
m4trace:configure.in:5: -1- AC_SUBST([LIBS])
m4trace:configure.in:6: -1- AM_INIT_AUTOMAKE([libsangoma], [1.0.0])
m4trace:configure.in:6: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
m4trace:configure.in:6: -1- AM_AUTOMAKE_VERSION([1.9.6])
m4trace:configure.in:6: -1- AC_PROG_INSTALL
m4trace:configure.in:6: -1- AC_SUBST([INSTALL_PROGRAM])
m4trace:configure.in:6: -1- AC_SUBST([INSTALL_SCRIPT])
m4trace:configure.in:6: -1- AC_SUBST([INSTALL_DATA])
m4trace:configure.in:6: -1- AC_SUBST([CYGPATH_W])
m4trace:configure.in:6: -1- AC_SUBST([PACKAGE], [libsangoma])
m4trace:configure.in:6: -1- AC_SUBST([VERSION], [1.0.0])
m4trace:configure.in:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
m4trace:configure.in:6: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
#undef PACKAGE])
m4trace:configure.in:6: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
m4trace:configure.in:6: -1- AH_OUTPUT([VERSION], [/* Version number of package */
#undef VERSION])
m4trace:configure.in:6: -1- AC_SUBST([ACLOCAL])
m4trace:configure.in:6: -1- AC_SUBST([AUTOCONF])
m4trace:configure.in:6: -1- AC_SUBST([AUTOMAKE])
m4trace:configure.in:6: -1- AC_SUBST([AUTOHEADER])
m4trace:configure.in:6: -1- AC_SUBST([MAKEINFO])
m4trace:configure.in:6: -1- AC_SUBST([install_sh])
m4trace:configure.in:6: -1- AC_SUBST([STRIP])
m4trace:configure.in:6: -1- AC_SUBST([ac_ct_STRIP])
m4trace:configure.in:6: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
m4trace:configure.in:6: -1- AC_SUBST([mkdir_p])
m4trace:configure.in:6: -1- AC_PROG_AWK
m4trace:configure.in:6: -1- AC_SUBST([AWK])
m4trace:configure.in:6: -1- AC_PROG_MAKE_SET
m4trace:configure.in:6: -1- AC_SUBST([SET_MAKE])
m4trace:configure.in:6: -1- AC_SUBST([am__leading_dot])
m4trace:configure.in:6: -1- AC_SUBST([AMTAR])
m4trace:configure.in:6: -1- AC_SUBST([am__tar])
m4trace:configure.in:6: -1- AC_SUBST([am__untar])
m4trace:configure.in:8: -1- AC_PROG_CC
m4trace:configure.in:8: -1- AC_SUBST([CC])
m4trace:configure.in:8: -1- AC_SUBST([CFLAGS])
m4trace:configure.in:8: -1- AC_SUBST([LDFLAGS])
m4trace:configure.in:8: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.in:8: -1- AC_SUBST([CC])
m4trace:configure.in:8: -1- AC_SUBST([ac_ct_CC])
m4trace:configure.in:8: -1- AC_SUBST([CC])
m4trace:configure.in:8: -1- AC_SUBST([ac_ct_CC])
m4trace:configure.in:8: -1- AC_SUBST([CC])
m4trace:configure.in:8: -1- AC_SUBST([CC])
m4trace:configure.in:8: -1- AC_SUBST([ac_ct_CC])
m4trace:configure.in:8: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
m4trace:configure.in:8: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
m4trace:configure.in:8: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
m4trace:configure.in:8: -1- AC_SUBST([am__include])
m4trace:configure.in:8: -1- AC_SUBST([am__quote])
m4trace:configure.in:8: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
m4trace:configure.in:8: -1- AC_SUBST([AMDEP_TRUE])
m4trace:configure.in:8: -1- AC_SUBST([AMDEP_FALSE])
m4trace:configure.in:8: -1- AC_SUBST([AMDEPBACKSLASH])
m4trace:configure.in:8: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
m4trace:configure.in:8: -1- AM_CONDITIONAL([am__fastdepCC], [
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_CC_dependencies_compiler_type" = gcc3])
m4trace:configure.in:8: -1- AC_SUBST([am__fastdepCC_TRUE])
m4trace:configure.in:8: -1- AC_SUBST([am__fastdepCC_FALSE])
m4trace:configure.in:9: -1- AC_PROG_LIBTOOL
m4trace:configure.in:9: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from...
aclocal.m4:1955: AC_ENABLE_SHARED is expanded from...
configure.in:9: AC_ENABLE_SHARED is required by...
aclocal.m4:226: AC_LIBTOOL_SETUP is expanded from...
configure.in:9: AC_LIBTOOL_SETUP is required by...
aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from...
configure.in:9: _AC_PROG_LIBTOOL is required by...
aclocal.m4:61: AC_PROG_LIBTOOL is expanded from...
configure.in:9: the top level])
m4trace:configure.in:9: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from...
aclocal.m4:1994: AC_ENABLE_STATIC is expanded from...
configure.in:9: AC_ENABLE_STATIC is required by...
aclocal.m4:226: AC_LIBTOOL_SETUP is expanded from...
configure.in:9: AC_LIBTOOL_SETUP is required by...
aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from...
configure.in:9: _AC_PROG_LIBTOOL is required by...
aclocal.m4:61: AC_PROG_LIBTOOL is expanded from...
configure.in:9: the top level])
m4trace:configure.in:9: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from...
aclocal.m4:2033: AC_ENABLE_FAST_INSTALL is expanded from...
configure.in:9: AC_ENABLE_FAST_INSTALL is required by...
aclocal.m4:226: AC_LIBTOOL_SETUP is expanded from...
configure.in:9: AC_LIBTOOL_SETUP is required by...
aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from...
configure.in:9: _AC_PROG_LIBTOOL is required by...
aclocal.m4:61: AC_PROG_LIBTOOL is expanded from...
configure.in:9: the top level])
m4trace:configure.in:9: -1- AC_CANONICAL_HOST
m4trace:configure.in:9: -1- AC_CANONICAL_BUILD
m4trace:configure.in:9: -1- AC_SUBST([build], [$ac_cv_build])
m4trace:configure.in:9: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
m4trace:configure.in:9: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
m4trace:configure.in:9: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
m4trace:configure.in:9: -1- AC_SUBST([host], [$ac_cv_host])
m4trace:configure.in:9: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
m4trace:configure.in:9: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
m4trace:configure.in:9: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
m4trace:configure.in:9: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
aclocal.m4:2230: AC_PROG_LD is expanded from...
configure.in:9: AC_PROG_LD is required by...
aclocal.m4:226: AC_LIBTOOL_SETUP is expanded from...
configure.in:9: AC_LIBTOOL_SETUP is required by...
aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from...
configure.in:9: _AC_PROG_LIBTOOL is required by...
aclocal.m4:61: AC_PROG_LIBTOOL is expanded from...
configure.in:9: the top level])
m4trace:configure.in:9: -1- AC_SUBST([SED])
m4trace:configure.in:9: -1- AC_SUBST([EGREP])
m4trace:configure.in:9: -1- AC_PROG_LN_S
m4trace:configure.in:9: -1- AC_SUBST([LN_S], [$as_ln_s])
m4trace:configure.in:9: -1- AC_SUBST([ECHO])
m4trace:configure.in:9: -1- AC_SUBST([AR])
m4trace:configure.in:9: -1- AC_SUBST([ac_ct_AR])
m4trace:configure.in:9: -1- AC_SUBST([RANLIB])
m4trace:configure.in:9: -1- AC_SUBST([ac_ct_RANLIB])
m4trace:configure.in:9: -1- AC_SUBST([STRIP])
m4trace:configure.in:9: -1- AC_SUBST([ac_ct_STRIP])
m4trace:configure.in:9: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from...
aclocal.m4:226: AC_LIBTOOL_SETUP is expanded from...
configure.in:9: AC_LIBTOOL_SETUP is required by...
aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from...
configure.in:9: _AC_PROG_LIBTOOL is required by...
aclocal.m4:61: AC_PROG_LIBTOOL is expanded from...
configure.in:9: the top level])
m4trace:configure.in:9: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
aclocal.m4:226: AC_LIBTOOL_SETUP is expanded from...
configure.in:9: AC_LIBTOOL_SETUP is required by...
aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from...
configure.in:9: _AC_PROG_LIBTOOL is required by...
aclocal.m4:61: AC_PROG_LIBTOOL is expanded from...
configure.in:9: the top level])
m4trace:configure.in:9: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
aclocal.m4:614: _LT_AC_LOCK is expanded from...
configure.in:9: _LT_AC_LOCK is required by...
aclocal.m4:1100: AC_LIBTOOL_SYS_HARD_LINK_LOCKS is expanded from...
aclocal.m4:2742: _LT_AC_LANG_C_CONFIG is expanded from...
aclocal.m4:2673: AC_LIBTOOL_LANG_C_CONFIG is expanded from...
aclocal.m4:226: AC_LIBTOOL_SETUP is expanded from...
configure.in:9: AC_LIBTOOL_SETUP is required by...
aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from...
configure.in:9: _AC_PROG_LIBTOOL is required by...
aclocal.m4:61: AC_PROG_LIBTOOL is expanded from...
configure.in:9: the top level])
m4trace:configure.in:9: -1- AC_CHECK_HEADERS([dlfcn.h])
m4trace:configure.in:9: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H])
m4trace:configure.in:9: -1- AC_HEADER_STDC
m4trace:configure.in:9: -1- AC_PROG_CPP
m4trace:configure.in:9: -1- AC_SUBST([CPP])
m4trace:configure.in:9: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.in:9: -1- AC_SUBST([CPP])
m4trace:configure.in:9: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
m4trace:configure.in:9: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS])
m4trace:configure.in:9: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default])
m4trace:configure.in:9: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H])
m4trace:configure.in:9: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H])
m4trace:configure.in:9: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H])
m4trace:configure.in:9: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H])
m4trace:configure.in:9: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H])
m4trace:configure.in:9: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H])
m4trace:configure.in:9: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H])
m4trace:configure.in:9: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H])
m4trace:configure.in:9: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H])
m4trace:configure.in:9: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [
lt_cv_dlopen="dyld"
lt_cv_dlopen_libs=
lt_cv_dlopen_self=yes
])
m4trace:configure.in:9: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen],
[lt_cv_dlopen="dlopen"],
[AC_CHECK_LIB([dl], [dlopen],
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
[AC_CHECK_LIB([svld], [dlopen],
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
[AC_CHECK_LIB([dld], [dld_link],
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
])
])
])
])
m4trace:configure.in:9: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen],
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
[AC_CHECK_LIB([dld], [dld_link],
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
])
])
m4trace:configure.in:9: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link],
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
])
m4trace:configure.in:9: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
m4trace:configure.in:9: -1- _LT_AC_TAGCONFIG
m4trace:configure.in:9: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
aclocal.m4:1909: _LT_AC_TAGCONFIG is expanded from...
aclocal.m4:226: AC_LIBTOOL_SETUP is expanded from...
configure.in:9: AC_LIBTOOL_SETUP is required by...
aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from...
configure.in:9: _AC_PROG_LIBTOOL is required by...
aclocal.m4:61: AC_PROG_LIBTOOL is expanded from...
configure.in:9: the top level])
m4trace:configure.in:9: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: error: tag name \"$tagname\" already exists], [aclocal.m4:1909: _LT_AC_TAGCONFIG is expanded from...
aclocal.m4:226: AC_LIBTOOL_SETUP is expanded from...
configure.in:9: AC_LIBTOOL_SETUP is required by...
aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from...
configure.in:9: _AC_PROG_LIBTOOL is required by...
aclocal.m4:61: AC_PROG_LIBTOOL is expanded from...
configure.in:9: the top level])
m4trace:configure.in:9: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: error: tag name \"$tagname\" already exists], [aclocal.m4:1909: _LT_AC_TAGCONFIG is expanded from...
aclocal.m4:226: AC_LIBTOOL_SETUP is expanded from...
configure.in:9: AC_LIBTOOL_SETUP is required by...
aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from...
configure.in:9: _AC_PROG_LIBTOOL is required by...
aclocal.m4:61: AC_PROG_LIBTOOL is expanded from...
configure.in:9: the top level])
m4trace:configure.in:9: -1- AC_PROG_CXX
m4trace:configure.in:9: -1- AC_SUBST([CXX])
m4trace:configure.in:9: -1- AC_SUBST([CXXFLAGS])
m4trace:configure.in:9: -1- AC_SUBST([LDFLAGS])
m4trace:configure.in:9: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.in:9: -1- AC_SUBST([CXX])
m4trace:configure.in:9: -1- AC_SUBST([ac_ct_CXX])
m4trace:configure.in:9: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type])
m4trace:configure.in:9: -1- AM_CONDITIONAL([am__fastdepCXX], [
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
m4trace:configure.in:9: -1- AC_SUBST([am__fastdepCXX_TRUE])
m4trace:configure.in:9: -1- AC_SUBST([am__fastdepCXX_FALSE])
m4trace:configure.in:9: -1- AC_SUBST([CXXCPP])
m4trace:configure.in:9: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.in:9: -1- AC_SUBST([CXXCPP])
m4trace:configure.in:9: -1- AC_SUBST([F77])
m4trace:configure.in:9: -1- AC_SUBST([FFLAGS])
m4trace:configure.in:9: -1- AC_SUBST([LDFLAGS])
m4trace:configure.in:9: -1- AC_SUBST([F77])
m4trace:configure.in:9: -1- AC_SUBST([ac_ct_F77])
m4trace:configure.in:9: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
You should run autoupdate.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from...
aclocal.m4:4063: _LT_AC_LANG_GCJ_CONFIG is expanded from...
aclocal.m4:4015: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from...
aclocal.m4:1909: _LT_AC_TAGCONFIG is expanded from...
aclocal.m4:226: AC_LIBTOOL_SETUP is expanded from...
configure.in:9: AC_LIBTOOL_SETUP is required by...
aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from...
configure.in:9: _AC_PROG_LIBTOOL is required by...
aclocal.m4:61: AC_PROG_LIBTOOL is expanded from...
configure.in:9: the top level])
m4trace:configure.in:9: -1- _m4_warn([obsolete], [instead of using `AC_LANG', `AC_LANG_SAVE',
and `AC_LANG_RESTORE', you should use `AC_LANG_PUSH' and `AC_LANG_POP'.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from...
aclocal.m4:4063: _LT_AC_LANG_GCJ_CONFIG is expanded from...
aclocal.m4:4015: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from...
aclocal.m4:1909: _LT_AC_TAGCONFIG is expanded from...
aclocal.m4:226: AC_LIBTOOL_SETUP is expanded from...
configure.in:9: AC_LIBTOOL_SETUP is required by...
aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from...
configure.in:9: _AC_PROG_LIBTOOL is required by...
aclocal.m4:61: AC_PROG_LIBTOOL is expanded from...
configure.in:9: the top level])
m4trace:configure.in:9: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
You should run autoupdate.], [autoconf/lang.m4:172: AC_LANG_RESTORE is expanded from...
aclocal.m4:4063: _LT_AC_LANG_GCJ_CONFIG is expanded from...
aclocal.m4:4015: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from...
aclocal.m4:1909: _LT_AC_TAGCONFIG is expanded from...
aclocal.m4:226: AC_LIBTOOL_SETUP is expanded from...
configure.in:9: AC_LIBTOOL_SETUP is required by...
aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from...
configure.in:9: _AC_PROG_LIBTOOL is required by...
aclocal.m4:61: AC_PROG_LIBTOOL is expanded from...
configure.in:9: the top level])
m4trace:configure.in:9: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
You should run autoupdate.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from...
aclocal.m4:4107: _LT_AC_LANG_RC_CONFIG is expanded from...
aclocal.m4:4071: AC_LIBTOOL_LANG_RC_CONFIG is expanded from...
aclocal.m4:1909: _LT_AC_TAGCONFIG is expanded from...
aclocal.m4:226: AC_LIBTOOL_SETUP is expanded from...
configure.in:9: AC_LIBTOOL_SETUP is required by...
aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from...
configure.in:9: _AC_PROG_LIBTOOL is required by...
aclocal.m4:61: AC_PROG_LIBTOOL is expanded from...
configure.in:9: the top level])
m4trace:configure.in:9: -1- _m4_warn([obsolete], [instead of using `AC_LANG', `AC_LANG_SAVE',
and `AC_LANG_RESTORE', you should use `AC_LANG_PUSH' and `AC_LANG_POP'.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from...
aclocal.m4:4107: _LT_AC_LANG_RC_CONFIG is expanded from...
aclocal.m4:4071: AC_LIBTOOL_LANG_RC_CONFIG is expanded from...
aclocal.m4:1909: _LT_AC_TAGCONFIG is expanded from...
aclocal.m4:226: AC_LIBTOOL_SETUP is expanded from...
configure.in:9: AC_LIBTOOL_SETUP is required by...
aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from...
configure.in:9: _AC_PROG_LIBTOOL is required by...
aclocal.m4:61: AC_PROG_LIBTOOL is expanded from...
configure.in:9: the top level])
m4trace:configure.in:9: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
You should run autoupdate.], [autoconf/lang.m4:172: AC_LANG_RESTORE is expanded from...
aclocal.m4:4107: _LT_AC_LANG_RC_CONFIG is expanded from...
aclocal.m4:4071: AC_LIBTOOL_LANG_RC_CONFIG is expanded from...
aclocal.m4:1909: _LT_AC_TAGCONFIG is expanded from...
aclocal.m4:226: AC_LIBTOOL_SETUP is expanded from...
configure.in:9: AC_LIBTOOL_SETUP is required by...
aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from...
configure.in:9: _AC_PROG_LIBTOOL is required by...
aclocal.m4:61: AC_PROG_LIBTOOL is expanded from...
configure.in:9: the top level])
m4trace:configure.in:9: -1- AC_SUBST([LIBTOOL])
m4trace:configure.in:10: -1- AC_PROG_RANLIB
m4trace:configure.in:10: -1- AC_SUBST([RANLIB])
m4trace:configure.in:10: -1- AC_SUBST([ac_ct_RANLIB])
m4trace:configure.in:13: -1- AC_CHECK_HEADERS([fcntl.h netinet/in.h stdlib.h string.h sys/ioctl.h sys/socket.h sys/time.h unistd.h math.h])
m4trace:configure.in:13: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the <fcntl.h> header file. */
#undef HAVE_FCNTL_H])
m4trace:configure.in:13: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the <netinet/in.h> header file. */
#undef HAVE_NETINET_IN_H])
m4trace:configure.in:13: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H])
m4trace:configure.in:13: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H])
m4trace:configure.in:13: -1- AH_OUTPUT([HAVE_SYS_IOCTL_H], [/* Define to 1 if you have the <sys/ioctl.h> header file. */
#undef HAVE_SYS_IOCTL_H])
m4trace:configure.in:13: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the <sys/socket.h> header file. */
#undef HAVE_SYS_SOCKET_H])
m4trace:configure.in:13: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
#undef HAVE_SYS_TIME_H])
m4trace:configure.in:13: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H])
m4trace:configure.in:13: -1- AH_OUTPUT([HAVE_MATH_H], [/* Define to 1 if you have the <math.h> header file. */
#undef HAVE_MATH_H])
m4trace:configure.in:18: -1- AM_CONDITIONAL([LIBPRI], [test -d "$libpripath" ])
m4trace:configure.in:18: -1- AC_SUBST([LIBPRI_TRUE])
m4trace:configure.in:18: -1- AC_SUBST([LIBPRI_FALSE])
m4trace:configure.in:19: -1- AC_SUBST([libpripath])
m4trace:configure.in:22: -1- AC_HEADER_TIME
m4trace:configure.in:22: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME])
m4trace:configure.in:22: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#undef TIME_WITH_SYS_TIME])
m4trace:configure.in:25: -1- AC_FUNC_SELECT_ARGTYPES
m4trace:configure.in:25: -1- AC_CHECK_HEADERS([sys/select.h sys/socket.h])
m4trace:configure.in:25: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the <sys/select.h> header file. */
#undef HAVE_SYS_SELECT_H])
m4trace:configure.in:25: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the <sys/socket.h> header file. */
#undef HAVE_SYS_SOCKET_H])
m4trace:configure.in:25: -1- AC_DEFINE_TRACE_LITERAL([SELECT_TYPE_ARG1])
m4trace:configure.in:25: -1- AH_OUTPUT([SELECT_TYPE_ARG1], [/* Define to the type of arg 1 for `select\'. */
#undef SELECT_TYPE_ARG1])
m4trace:configure.in:25: -1- AC_DEFINE_TRACE_LITERAL([SELECT_TYPE_ARG234])
m4trace:configure.in:25: -1- AH_OUTPUT([SELECT_TYPE_ARG234], [/* Define to the type of args 2, 3 and 4 for `select\'. */
#undef SELECT_TYPE_ARG234])
m4trace:configure.in:25: -1- AC_DEFINE_TRACE_LITERAL([SELECT_TYPE_ARG5])
m4trace:configure.in:25: -1- AH_OUTPUT([SELECT_TYPE_ARG5], [/* Define to the type of arg 5 for `select\'. */
#undef SELECT_TYPE_ARG5])
m4trace:configure.in:26: -1- AC_CHECK_FUNCS([gettimeofday memset select socket])
m4trace:configure.in:26: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */
#undef HAVE_GETTIMEOFDAY])
m4trace:configure.in:26: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the `memset\' function. */
#undef HAVE_MEMSET])
m4trace:configure.in:26: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */
#undef HAVE_SELECT])
m4trace:configure.in:26: -1- AH_OUTPUT([HAVE_SOCKET], [/* Define to 1 if you have the `socket\' function. */
#undef HAVE_SOCKET])
m4trace:configure.in:27: -1- AC_CONFIG_FILES([Makefile])
m4trace:configure.in:28: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
m4trace:configure.in:28: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])

File diff suppressed because it is too large Load Diff

View File

@ -480,12 +480,12 @@ s,@INSTALL_DATA@,${INSTALL} -m 644,;t t
s,@CYGPATH_W@,echo,;t t
s,@PACKAGE@,libsangoma,;t t
s,@VERSION@,1.0.0,;t t
s,@ACLOCAL@,${SHELL} /root/3.2/wanpipe/api/libsangoma/missing --run aclocal-1.9,;t t
s,@AUTOCONF@,${SHELL} /root/3.2/wanpipe/api/libsangoma/missing --run autoconf,;t t
s,@AUTOMAKE@,${SHELL} /root/3.2/wanpipe/api/libsangoma/missing --run automake-1.9,;t t
s,@AUTOHEADER@,${SHELL} /root/3.2/wanpipe/api/libsangoma/missing --run autoheader,;t t
s,@MAKEINFO@,${SHELL} /root/3.2/wanpipe/api/libsangoma/missing --run makeinfo,;t t
s,@install_sh@,/root/3.2/wanpipe/api/libsangoma/install-sh,;t t
s,@ACLOCAL@,${SHELL} /root/3.3/wanpipe/api/libsangoma/missing --run aclocal-1.9,;t t
s,@AUTOCONF@,${SHELL} /root/3.3/wanpipe/api/libsangoma/missing --run autoconf,;t t
s,@AUTOMAKE@,${SHELL} /root/3.3/wanpipe/api/libsangoma/missing --run automake-1.9,;t t
s,@AUTOHEADER@,${SHELL} /root/3.3/wanpipe/api/libsangoma/missing --run autoheader,;t t
s,@MAKEINFO@,${SHELL} /root/3.3/wanpipe/api/libsangoma/missing --run makeinfo,;t t
s,@install_sh@,/root/3.3/wanpipe/api/libsangoma/install-sh,;t t
s,@STRIP@,strip,;t t
s,@ac_ct_STRIP@,strip,;t t
s,@INSTALL_STRIP_PROGRAM@,${SHELL} $(install_sh) -c -s,;t t
@ -493,7 +493,7 @@ s,@mkdir_p@,mkdir -p --,;t t
s,@AWK@,gawk,;t t
s,@SET_MAKE@,,;t t
s,@am__leading_dot@,.,;t t
s,@AMTAR@,${SHELL} /root/3.2/wanpipe/api/libsangoma/missing --run tar,;t t
s,@AMTAR@,${SHELL} /root/3.3/wanpipe/api/libsangoma/missing --run tar,;t t
s,@am__tar@,${AMTAR} chof - "$$tardir",;t t
s,@am__untar@,${AMTAR} xf -,;t t
s,@CC@,gcc,;t t
@ -520,6 +520,7 @@ s,@host@,i686-pc-linux-gnu,;t t
s,@host_cpu@,i686,;t t
s,@host_vendor@,pc,;t t
s,@host_os@,linux-gnu,;t t
s,@SED@,/bin/sed,;t t
s,@EGREP@,grep -E,;t t
s,@LN_S@,ln -s,;t t
s,@ECHO@,echo,;t t

4966
api/libsangoma/configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,35 @@
K 25
svn:wc:ra_dav:version-url
V 41
/svn/libsangoma/!svn/ver/1/trunk/examples
END
sound.raw
K 25
svn:wc:ra_dav:version-url
V 51
/svn/libsangoma/!svn/ver/1/trunk/examples/sound.raw
END
priserver.c
K 25
svn:wc:ra_dav:version-url
V 53
/svn/libsangoma/!svn/ver/1/trunk/examples/priserver.c
END
librc
K 25
svn:wc:ra_dav:version-url
V 47
/svn/libsangoma/!svn/ver/1/trunk/examples/librc
END
Makefile
K 25
svn:wc:ra_dav:version-url
V 50
/svn/libsangoma/!svn/ver/1/trunk/examples/Makefile
END
README
K 25
svn:wc:ra_dav:version-url
V 48
/svn/libsangoma/!svn/ver/1/trunk/examples/README
END

View File

@ -1,15 +1,15 @@
8
dir
237
svn://sangoma.freeswitch.org/libsangoma/trunk/examples
svn://sangoma.freeswitch.org
1
https://www.sangomapbx.com/svn/libsangoma/trunk/examples
https://www.sangomapbx.com/svn/libsangoma
2007-05-29T18:03:36.038276Z
206
ncorbic
2008-02-28T18:51:53.196120Z
1
root
svn:special svn:externals svn:needs-lock
@ -24,7 +24,7 @@ svn:special svn:externals svn:needs-lock
2028fedf-720c-0410-83b8-d54a3e729fb0
8fe45b59-3c47-0410-bdf9-e5d932a076a6
sound.raw
file
@ -32,11 +32,11 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
da36acc78b83d5047481df0cca63d969
2006-03-23T23:03:41.659017Z
26
mikej
2008-02-28T18:51:53.196120Z
1
root
has-props
priserver.c
@ -45,11 +45,11 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
9f83030c20158d91b7ec6bb7a9392dcb
2006-03-23T23:54:12.054610Z
27
ncorbic
2008-02-28T18:51:53.196120Z
1
root
librc
file
@ -57,11 +57,11 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
5c222b74d68b1c7df3f937a9d6321d40
2006-03-23T23:03:41.659017Z
26
mikej
2008-02-28T18:51:53.196120Z
1
root
Makefile
file
@ -69,11 +69,11 @@ file
2007-07-24T22:45:02.000000Z
2008-02-28T19:04:34.000000Z
b58ee42eeb2d5e921bdab940a9fda738
2007-05-29T18:03:36.038276Z
206
ncorbic
2008-02-28T18:51:53.196120Z
1
root
README
file
@ -81,9 +81,9 @@ file
2007-05-17T23:49:20.000000Z
2008-02-28T19:04:34.000000Z
40538792592cd766e4941d9b37dbaf56
2006-03-23T23:03:41.659017Z
26
mikej
2008-02-28T18:51:53.196120Z
1
root

View File

@ -22,26 +22,18 @@
#include "libsangoma.h"
#define DFT_CARD "wanpipe1"
#ifndef WP_TDM_EVENT_FE_ALARM
#warning "Note: TDM FE ALARM not supported by driver"
#ifndef WP_TDM_FEATURE_FE_ALARM
#warning "Warning: TDM FE ALARM not supported by driver"
#endif
#ifndef WP_TDMAPI_EVENT_DTMF
#warning "Note: TDM DTMF EVENTS not supported by driver"
#ifndef WP_TDM_FEATURE_DTMF_EVENTS
#warning "Warning: TDM DTMF not supported by driver"
#endif
#ifndef WP_TDMAPI_EVENT_RING
#warning "Note: TDM RING EVENTS not supported by driver"
#ifndef WP_TDM_FEATURE_EVENTS
#warning "Warning: TDM EVENTS not supported by driver"
#endif
#ifndef WP_TDMAPI_EVENT_RXHOOK
#warning "Note: TDM RXHOOK EVENTS not supported by driver"
#endif
#if defined(WIN32)
//extern int verbose;
@ -529,7 +521,7 @@ int sangoma_get_full_cfg(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
printf("\tusr_mtu_mru:\t%d\n",tdm_api->wp_tdm_cmd.usr_mtu_mru);
printf("\tidle flag:\t0x%02X\n",tdm_api->wp_tdm_cmd.idle_flag);
#ifdef WP_TDM_EVENT_FE_ALARM
#ifdef WP_TDM_FEATURE_FE_ALARM
printf("\tfe alarms:\t0x%02X\n",tdm_api->wp_tdm_cmd.fe_alarms);
#endif
@ -774,7 +766,7 @@ int sangoma_tdm_write_rbs(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api, unsigned char
int sangoma_tdm_read_event(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
{
#ifdef WP_TDM_EVENT_TDM_API_EVENTS
#ifdef WP_TDM_FEATURE_EVENTS
wp_tdm_api_event_t *rx_event;
@ -802,7 +794,8 @@ int sangoma_tdm_read_event(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
}
break;
#ifdef WP_TDM_FEATURE_DTMF_EVENTS
case WP_TDMAPI_EVENT_DTMF:
printf("%d: GOT DTMF EVENT\n",(int)fd);
if (tdm_api->wp_tdm_event.wp_dtmf_event) {
@ -812,6 +805,7 @@ int sangoma_tdm_read_event(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
rx_event->wp_tdm_api_event_dtmf_port);
}
break;
#endif
case WP_TDMAPI_EVENT_RXHOOK:
printf("%d: GOT RXHOOK EVENT\n",(int)fd);
@ -837,13 +831,13 @@ int sangoma_tdm_read_event(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
}
break;
#ifdef WP_TDM_EVENT_FE_ALARM
case WP_TDMAPI_EVENT_FE_ALARM:
#ifdef WP_TDM_FEATURE_FE_ALARM
case WP_TDMAPI_EVENT_ALARM:
printf("%d: GOT FE ALARMS EVENT %i\n",(int)fd,
rx_event->wp_tdm_api_event_fe_alarm);
rx_event->wp_tdm_api_event_alarm);
if (tdm_api->wp_tdm_event.wp_fe_alarm_event) {
tdm_api->wp_tdm_event.wp_fe_alarm_event(fd,
rx_event->wp_tdm_api_event_fe_alarm);
rx_event->wp_tdm_api_event_alarm);
}
#endif
@ -854,13 +848,12 @@ int sangoma_tdm_read_event(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
return 0;
#else
return -EINVAL;
printf("Error: Read Event not supported!\n");
return -1;
#endif
}
#ifdef WP_TDMAPI_EVENT_DTMF
#ifdef WP_TDM_FEATURE_DTMF_EVENTS
int sangoma_tdm_enable_dtmf_events(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
{
int err;
@ -920,12 +913,8 @@ int sangoma_tdm_disable_rm_dtmf_events(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
return 0;
}
#endif
#ifdef WP_TDMAPI_EVENT_RXHOOK
int sangoma_tdm_enable_rxhook_events(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
{
int err;
@ -940,8 +929,6 @@ int sangoma_tdm_enable_rxhook_events(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
return 0;
}
NNN
int sangoma_tdm_disable_rxhook_events(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
{
@ -958,10 +945,6 @@ int sangoma_tdm_disable_rxhook_events(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
return 0;
}
#endif
#ifdef WP_TDMAPI_EVENT_RING
int sangoma_tdm_enable_ring_events(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api) {
int err;
@ -1149,40 +1132,39 @@ int sangoma_tdm_disable_tone_events(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api) {
return tdm_api->wp_tdm_cmd.rbs_poll;
}
#endif
int sangoma_tdm_enable_hwec(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
int sangoma_tdm_enable_hwec(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
{
int err;
int err;
tdm_api->wp_tdm_cmd.cmd = SIOC_WP_TDM_ENABLE_HWEC;
err=sangoma_tdm_cmd_exec(fd,tdm_api);
if (err){
return err;
}
tdm_api->wp_tdm_cmd.cmd = SIOC_WP_TDM_ENABLE_HWEC;
err=sangoma_tdm_cmd_exec(fd,tdm_api);
if (err){
return err;
}
return 0;
return 0;
}
int sangoma_tdm_disable_hwec(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
int sangoma_tdm_disable_hwec(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
{
int err;
int err;
tdm_api->wp_tdm_cmd.cmd = SIOC_WP_TDM_DISABLE_HWEC;
err=sangoma_tdm_cmd_exec(fd,tdm_api);
if (err){
return err;
}
tdm_api->wp_tdm_cmd.cmd = SIOC_WP_TDM_DISABLE_HWEC;
err=sangoma_tdm_cmd_exec(fd,tdm_api);
if (err){
return err;
}
return 0;
return 0;
}
/*========================================================
* GET Front End Alarms
*
*/
#ifdef WP_TDM_EVENT_FE_ALARM
#ifdef WP_TDM_FEATURE_FE_ALARM
int sangoma_tdm_get_fe_alarms(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
{
int err;
@ -1198,4 +1180,26 @@ int sangoma_tdm_get_fe_alarms(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api)
}
#endif
/* get current Line Connection state - Connected/Disconnected */
int sangoma_tdm_get_fe_status(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api, unsigned char *current_status)
{
int err;
tdm_api->wp_tdm_cmd.cmd = SIOC_WP_TDM_GET_FE_STATUS;
err = sangoma_tdm_cmd_exec(fd, tdm_api);
*current_status = tdm_api->wp_tdm_cmd.fe_status;
return err;
}
/* set current Line Connection state - Connected/Disconnected. valid only for ISDN BRI */
int sangoma_tdm_set_fe_status(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api, unsigned char new_status)
{
tdm_api->wp_tdm_cmd.cmd = SIOC_WP_TDM_SET_FE_STATUS;
tdm_api->wp_tdm_cmd.fe_status = new_status;
return sangoma_tdm_cmd_exec(fd, tdm_api);
}
#endif /* WANPIPE_TDM_API */

View File

@ -50,6 +50,7 @@ typedef unsigned __int32 u_int32_t;
typedef HANDLE sng_fd_t;
#else
/* L I N U X */
#include <stdlib.h>
#include <ctype.h>
#include <unistd.h>
@ -76,6 +77,7 @@ typedef HANDLE sng_fd_t;
#ifdef WANPIPE_TDM_API
# include <linux/wanpipe_tdm_api.h>
#endif
#endif
#define FNAME_LEN 50
@ -176,15 +178,20 @@ int sangoma_tdm_disable_tone_events(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
int sangoma_tdm_get_fe_alarms(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
int sangoma_tdm_enable_hwec(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
int sangoma_tdm_disable_hwec(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
int sangoma_tdm_txsig_onhook(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
int sangoma_tdm_txsig_offhook(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
int sangoma_tdm_txsig_start(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
int sangoma_tdm_txsig_kewl(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
int sangoma_tdm_enable_hwec(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
int sangoma_tdm_disable_hwec(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api);
/* get current Line Connection state - Connected/Disconnected */
int sangoma_tdm_get_fe_status(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api, unsigned char *current_status);
/* set current Line Connection state - Connected/Disconnected. valid only for ISDN BRI */
int sangoma_tdm_set_fe_status(sng_fd_t fd, wanpipe_tdm_api_t *tdm_api, unsigned char new_status);
#ifndef LIBSANGOMA_GET_HWCODING
#define LIBSANGOMA_GET_HWCODING 1
#endif
@ -193,3 +200,4 @@ int sangoma_tdm_get_hw_coding(int fd, wanpipe_tdm_api_t *tdm_api);
#endif /* WANPIPE_TDM_API */
#endif

View File

@ -22,7 +22,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@ -33,11 +33,11 @@
SED="/bin/sed"
# Sed that helps us avoid accidentally triggering echo(1) options like -n.
Xsed="/bin/sed -e s/^X//"
Xsed="/bin/sed -e 1s/^X//"
# The HP-UX ksh and POSIX shell print the target directory to stdout
# if CDPATH is set.
if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# The names of the tagged configurations supported by this script.
available_tags=" CXX F77"
@ -67,6 +67,12 @@ fast_install=yes
# The host system.
host_alias=
host=i686-pc-linux-gnu
host_os=linux-gnu
# The build system.
build_alias=
build=i686-pc-linux-gnu
build_os=linux-gnu
# An echo program that does not interpret backslashes.
echo="echo"
@ -78,12 +84,18 @@ AR_FLAGS="cru"
# A C compiler.
LTCC="gcc"
# LTCC compiler flags.
LTCFLAGS="-g -O2"
# A language-specific compiler.
CC="gcc"
# Is the compiler the GNU C compiler?
with_gcc=yes
gcc_dir=`gcc -print-file-name=. | /bin/sed 's,/\.$,,'`
gcc_ver=`gcc -dumpversion`
# An ERE matcher.
EGREP="grep -E"
@ -143,7 +155,7 @@ max_cmd_len=32768
# Does compiler simultaneously support -c and -o options?
compiler_c_o="yes"
# Must we lock files when doing compilation ?
# Must we lock files when doing compilation?
need_locks="no"
# Do we need the lib prefix for modules?
@ -192,7 +204,7 @@ soname_spec="\${libname}\${release}\${shared_ext}\$major"
# Commands used to build and install an old-style archive.
RANLIB="ranlib"
old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib"
old_postinstall_cmds="\$RANLIB \$oldlib~chmod 644 \$oldlib"
old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
old_postuninstall_cmds=""
# Create an old-style archive from a shared archive.
@ -204,9 +216,9 @@ old_archive_from_expsyms_cmds=""
# Commands used to build and install a shared archive.
archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
archive_expsym_cmds="\$echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
\$echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
\$echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
postinstall_cmds=""
postuninstall_cmds=""
@ -220,11 +232,11 @@ striplib="strip --strip-unneeded"
# Dependencies to place before the objects being linked to create a
# shared library.
predep_objects=""
predep_objects=`echo "" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"`
# Dependencies to place after the objects being linked to create a
# shared library.
postdep_objects=""
postdep_objects=`echo "" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"`
# Dependencies to place before the objects being linked to create a
# shared library.
@ -236,7 +248,7 @@ postdeps=""
# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path=""
compiler_lib_search_path=`echo "" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"`
# Method to check whether dependent libraries are shared objects.
deplibs_check_method="pass_all"
@ -257,7 +269,7 @@ finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
finish_eval=""
# Take the output of nm and produce a listing of raw symbols and C names.
global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\(\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2\\3 \\3/p'"
global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"
# Transform the output of nm in a proper C declaration
global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'"
@ -310,16 +322,16 @@ hardcode_automatic=no
# Variables whose values should be saved in libtool wrapper scripts and
# restored at relink time.
variables_saved_for_relink="PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=unknown
# Compile-time system search path for libraries
sys_lib_search_path_spec=" /usr/lib/gcc/i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../../i386-redhat-linux/lib/i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../../i386-redhat-linux/lib/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../ /lib/i386-redhat-linux/4.1.1/ /lib/ /usr/lib/i386-redhat-linux/4.1.1/ /usr/lib/"
sys_lib_search_path_spec=`echo " /usr/lib/gcc/i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../../i386-redhat-linux/lib/i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../../i386-redhat-linux/lib/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../ /lib/i386-redhat-linux/4.1.1/ /lib/ /usr/lib/i386-redhat-linux/4.1.1/ /usr/lib/" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"`
# Run-time system search path for libraries
sys_lib_dlsearch_path_spec="/lib /usr/lib include ld.so.conf.d/*.conf /usr/local/lib "
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/lib /usr/lib/qt-3.3/lib "
# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path=""
@ -6768,6 +6780,12 @@ fast_install=yes
# The host system.
host_alias=
host=i686-pc-linux-gnu
host_os=linux-gnu
# The build system.
build_alias=
build=i686-pc-linux-gnu
build_os=linux-gnu
# An echo program that does not interpret backslashes.
echo="echo"
@ -6779,12 +6797,18 @@ AR_FLAGS="cru"
# A C compiler.
LTCC="gcc"
# LTCC compiler flags.
LTCFLAGS="-g -O2"
# A language-specific compiler.
CC="g++"
# Is the compiler the GNU C compiler?
with_gcc=yes
gcc_dir=`gcc -print-file-name=. | /bin/sed 's,/\.$,,'`
gcc_ver=`gcc -dumpversion`
# An ERE matcher.
EGREP="grep -E"
@ -6844,7 +6868,7 @@ max_cmd_len=32768
# Does compiler simultaneously support -c and -o options?
compiler_c_o="yes"
# Must we lock files when doing compilation ?
# Must we lock files when doing compilation?
need_locks="no"
# Do we need the lib prefix for modules?
@ -6893,7 +6917,7 @@ soname_spec="\${libname}\${release}\${shared_ext}\$major"
# Commands used to build and install an old-style archive.
RANLIB="ranlib"
old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib"
old_postinstall_cmds="\$RANLIB \$oldlib~chmod 644 \$oldlib"
old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
old_postuninstall_cmds=""
# Create an old-style archive from a shared archive.
@ -6918,11 +6942,11 @@ striplib="strip --strip-unneeded"
# Dependencies to place before the objects being linked to create a
# shared library.
predep_objects="/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../crti.o /usr/lib/gcc/i386-redhat-linux/4.1.1/crtbeginS.o"
predep_objects=`echo "/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../crti.o /usr/lib/gcc/i386-redhat-linux/4.1.1/crtbeginS.o" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"`
# Dependencies to place after the objects being linked to create a
# shared library.
postdep_objects="/usr/lib/gcc/i386-redhat-linux/4.1.1/crtendS.o /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../crtn.o"
postdep_objects=`echo "/usr/lib/gcc/i386-redhat-linux/4.1.1/crtendS.o /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../crtn.o" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"`
# Dependencies to place before the objects being linked to create a
# shared library.
@ -6934,7 +6958,7 @@ postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s"
# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path="-L/usr/lib/gcc/i386-redhat-linux/4.1.1 -L/usr/lib/gcc/i386-redhat-linux/4.1.1 -L/usr/lib/gcc/i386-redhat-linux/4.1.1/../../.."
compiler_lib_search_path=`echo "-L/usr/lib/gcc/i386-redhat-linux/4.1.1 -L/usr/lib/gcc/i386-redhat-linux/4.1.1 -L/usr/lib/gcc/i386-redhat-linux/4.1.1/../../.." | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"`
# Method to check whether dependent libraries are shared objects.
deplibs_check_method="pass_all"
@ -6955,7 +6979,7 @@ finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
finish_eval=""
# Take the output of nm and produce a listing of raw symbols and C names.
global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\(\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2\\3 \\3/p'"
global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"
# Transform the output of nm in a proper C declaration
global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'"
@ -7000,7 +7024,7 @@ hardcode_minus_L=no
# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
# the resulting binary.
hardcode_shlibpath_var=
hardcode_shlibpath_var=unsupported
# Set to yes if building a shared library automatically hardcodes DIR into the library
# and all subsequent libraries and executables linked against it.
@ -7014,10 +7038,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM
link_all_deplibs=unknown
# Compile-time system search path for libraries
sys_lib_search_path_spec=" /usr/lib/gcc/i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../../i386-redhat-linux/lib/i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../../i386-redhat-linux/lib/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../ /lib/i386-redhat-linux/4.1.1/ /lib/ /usr/lib/i386-redhat-linux/4.1.1/ /usr/lib/"
sys_lib_search_path_spec=`echo " /usr/lib/gcc/i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../../i386-redhat-linux/lib/i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../../i386-redhat-linux/lib/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../ /lib/i386-redhat-linux/4.1.1/ /lib/ /usr/lib/i386-redhat-linux/4.1.1/ /usr/lib/" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"`
# Run-time system search path for libraries
sys_lib_dlsearch_path_spec="/lib /usr/lib include ld.so.conf.d/*.conf /usr/local/lib "
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/lib /usr/lib/qt-3.3/lib "
# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path=""
@ -7064,6 +7088,12 @@ fast_install=yes
# The host system.
host_alias=
host=i686-pc-linux-gnu
host_os=linux-gnu
# The build system.
build_alias=
build=i686-pc-linux-gnu
build_os=linux-gnu
# An echo program that does not interpret backslashes.
echo="echo"
@ -7075,12 +7105,18 @@ AR_FLAGS="cru"
# A C compiler.
LTCC="gcc"
# LTCC compiler flags.
LTCFLAGS="-g -O2"
# A language-specific compiler.
CC="f95"
# Is the compiler the GNU C compiler?
with_gcc=yes
gcc_dir=`gcc -print-file-name=. | /bin/sed 's,/\.$,,'`
gcc_ver=`gcc -dumpversion`
# An ERE matcher.
EGREP="grep -E"
@ -7140,7 +7176,7 @@ max_cmd_len=32768
# Does compiler simultaneously support -c and -o options?
compiler_c_o="yes"
# Must we lock files when doing compilation ?
# Must we lock files when doing compilation?
need_locks="no"
# Do we need the lib prefix for modules?
@ -7189,7 +7225,7 @@ soname_spec="\${libname}\${release}\${shared_ext}\$major"
# Commands used to build and install an old-style archive.
RANLIB="ranlib"
old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib"
old_postinstall_cmds="\$RANLIB \$oldlib~chmod 644 \$oldlib"
old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
old_postuninstall_cmds=""
# Create an old-style archive from a shared archive.
@ -7201,9 +7237,9 @@ old_archive_from_expsyms_cmds=""
# Commands used to build and install a shared archive.
archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
archive_expsym_cmds="\$echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
\$echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
\$echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
postinstall_cmds=""
postuninstall_cmds=""
@ -7217,11 +7253,11 @@ striplib="strip --strip-unneeded"
# Dependencies to place before the objects being linked to create a
# shared library.
predep_objects=""
predep_objects=`echo "" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"`
# Dependencies to place after the objects being linked to create a
# shared library.
postdep_objects=""
postdep_objects=`echo "" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"`
# Dependencies to place before the objects being linked to create a
# shared library.
@ -7233,7 +7269,7 @@ postdeps=""
# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path=""
compiler_lib_search_path=`echo "" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"`
# Method to check whether dependent libraries are shared objects.
deplibs_check_method="pass_all"
@ -7254,7 +7290,7 @@ finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
finish_eval=""
# Take the output of nm and produce a listing of raw symbols and C names.
global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\(\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2\\3 \\3/p'"
global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"
# Transform the output of nm in a proper C declaration
global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'"
@ -7313,10 +7349,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM
link_all_deplibs=unknown
# Compile-time system search path for libraries
sys_lib_search_path_spec=" /usr/lib/gcc/i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../../i386-redhat-linux/lib/i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../../i386-redhat-linux/lib/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../ /lib/i386-redhat-linux/4.1.1/ /lib/ /usr/lib/i386-redhat-linux/4.1.1/ /usr/lib/"
sys_lib_search_path_spec=`echo " /usr/lib/gcc/i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../../i386-redhat-linux/lib/i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../../i386-redhat-linux/lib/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../i386-redhat-linux/4.1.1/ /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../ /lib/i386-redhat-linux/4.1.1/ /lib/ /usr/lib/i386-redhat-linux/4.1.1/ /usr/lib/" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"`
# Run-time system search path for libraries
sys_lib_dlsearch_path_spec="/lib /usr/lib include ld.so.conf.d/*.conf /usr/local/lib "
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/lib /usr/lib/qt-3.3/lib "
# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path=""

View File

@ -0,0 +1,5 @@
Added new event support
--This line, and those below, will be ignored--
M libsangoma.c
M libsangoma.h

View File

@ -1,4 +1,5 @@
Added new event features
--This line, and those below, will be ignored--
A libsangoma.so.conf
M libsangoma.c
M libsangoma.h

View File

@ -12,18 +12,21 @@ DEBUG = 2
SYSINC=$(shell if [ -f ../../.sysinclude ]; then cat ../../.sysinclude; else echo ""; fi)
ifeq "$(SYSINC)" ""
SYSINC=/lib/modules/$(shell uname -r)/build/include
SYSINC=/usr/src/linux/include
endif
SRCINC=../../patches/kdrivers/include
VPATH = $(SYSINC)
# Tools options.
CFLAGS = -Wall -O2 -D$(OS_TYPE) -D_DEBUG_=$(DEBUG) -D_GNUC_ -I../lib/hdlc -I../lib -I$(SYSINC) -I$(SRCINC)
CFLAGS = -Wall -O2 -D$(OS_TYPE) -DWANPIPE_TDM_API -D_DEBUG_=$(DEBUG) -D_GNUC_ -I../lib/hdlc -I../lib
CFLAGS += -I/usr/include/wanpipe
#CFLAGS = -I$(SYSINC)
TARGETS = aft_tdm_voice_api
TARGETS += aft_tdm_voice_api_switch
TARGETS += aft_tdm_hdlc_test
TARGETS += aft_tdm_voice_api_rbs
#TARGETS += aft_tdm_voice_api_dtmf
TARGETS += aft_tdm_voice_api_dtmf
TARGETS += aft_tdm_voice_api_rm_events
#TARGETS += aft_tdm_voice_api_rm_dtmf
#TARGETS += aft_tdm_voice_api_rxhook
@ -32,9 +35,18 @@ TARGETS += aft_tdm_voice_api_rbs
all: $(TARGETS)
@echo "Ok."
install:
for x in $(TARGETS); do \
install -D -m 755 $$x /usr/bin/$$x; \
done;
aft_tdm_voice_api: aft_tdm_voice_api.c ../lib/lib_api.c
$(CC) $(CFLAGS) -o $@ $^ -lsangoma -lm
aft_tdm_voice_api_switch: aft_tdm_voice_api_switch.c ../lib/lib_api.c
$(CC) $(CFLAGS) -o $@ $^ -lsangoma -lm
aft_tdm_hdlc_test: aft_tdm_hdlc_test.c ../lib/hdlc/wanpipe_hdlc.c
$(CC) $(CFLAGS) -o $@ $^ -lsangoma -lm
@ -44,6 +56,9 @@ aft_tdm_voice_api_rbs: aft_tdm_voice_api_rbs.c ../lib/lib_api.c
aft_tdm_voice_api_dtmf: aft_tdm_voice_api_dtmf.c ../lib/lib_api.c
$(CC) $(CFLAGS) -o $@ $^ -lsangoma -lm
aft_tdm_voice_api_rm_events: aft_tdm_voice_api_rm_events.c ../lib/lib_api.c
$(CC) $(CFLAGS) -o $@ $^ -lsangoma -lm
aft_tdm_voice_api_rm_dtmf: aft_tdm_voice_api_rm_dtmf.c ../lib/lib_api.c
$(CC) $(CFLAGS) -o $@ $^ -lsangoma -lm

BIN
api/tdmapi/aft_tdm_hdlc_test Executable file

Binary file not shown.

View File

@ -48,12 +48,12 @@
#define TRUE 1
/* Enable/Disable tx of random frames */
#define RAND_FRAME 1
#define RAND_FRAME 0
#define MAX_NUM_OF_TIMESLOTS 31*16
#define LGTH_CRC_BYTES 2
#define MAX_TX_DATA 5000 //MAX_NUM_OF_TIMESLOTS*10 /* Size of tx data */
#define MAX_TX_DATA 1000 //MAX_NUM_OF_TIMESLOTS*10 /* Size of tx data */
#define MAX_TX_FRAMES 1000000 /* Number of frames to transmit */
#define WRITE 1
@ -126,7 +126,6 @@ int MakeConnection(timeslot_t *slot, char *router_name )
int span,chan;
sangoma_span_chan_fromif(slot->if_name,&span,&chan);
printf("Socket bound %s to Span=%i Chan=%i\n\n",slot->if_name,span,chan);
if (span > 0 && chan > 0) {
wanpipe_tdm_api_t tdm_api;
@ -432,7 +431,7 @@ void process_con_tx(timeslot_t *slot)
*/
memset(&Tx_data[0],0,MAX_TX_DATA + sizeof(wp_tdm_api_tx_hdr_t));
slot->data=1;
slot->data=0;
for (i=0;i<Tx_hdlc_len;i++){
if (slot->data){
Tx_data[i+sizeof(wp_tdm_api_tx_hdr_t)] = slot->data;
@ -480,7 +479,7 @@ void process_con_tx(timeslot_t *slot)
printf("TX DATA ORIG: Len=%i\n",Tx_hdlc_len);
print_packet(&Tx_data[sizeof(wp_tdm_api_tx_hdr_t)],Tx_hdlc_len);
#endif
wanpipe_hdlc_encode(hdlc_eng,&Tx_data[16],Tx_hdlc_len,&Tx_hdlc_data[16],(int*)&Tx_encoded_hdlc_len,&next_idle);
wanpipe_hdlc_encode(hdlc_eng,&Tx_data[16],Tx_hdlc_len,&Tx_hdlc_data[16],&Tx_encoded_hdlc_len,&next_idle);
if (Tx_encoded_hdlc_len < (max_tx_len*2)){
int j;
for (j=0;j<((max_tx_len*2) - Tx_encoded_hdlc_len);j++){

BIN
api/tdmapi/aft_tdm_voice_api Executable file

Binary file not shown.

View File

@ -414,7 +414,7 @@ int main(int argc, char* argv[])
proceed=init_args(argc,argv);
if (proceed != WAN_TRUE){
usage((unsigned char*)argv[0]);
usage(argv[0]);
return -1;
}

BIN
api/tdmapi/aft_tdm_voice_api_dtmf Executable file

Binary file not shown.

View File

@ -0,0 +1,254 @@
/*****************************************************************************
* aft_api.c AFT T1/E1: HDLC API Sample Code
*
* Author(s): Nenad Corbic <ncorbic@sangoma.com>
*
* Copyright: (c) 2003-2004 Sangoma Technologies Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
* ============================================================================
*/
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <linux/if_wanpipe.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <signal.h>
#include <linux/if.h>
#include <linux/wanpipe_defines.h>
#include <linux/wanpipe_cfg.h>
#include <linux/wanpipe.h>
#include <libsangoma.h>
#include "lib_api.h"
#define MAX_TX_DATA 5000 /* Size of tx data */
#define MAX_FRAMES 5000 /* Number of frames to transmit */
#define MAX_RX_DATA 5000
unsigned short Rx_lgth;
unsigned char Rx_data[MAX_RX_DATA];
unsigned char Tx_data[MAX_TX_DATA + sizeof(wp_tdm_api_rx_hdr_t)];
/* Prototypes */
int MakeConnection(void);
void handle_span_chan( void);
void sig_end(int sigid);
int dev_fd;
FILE *tx_fd=NULL,*rx_fd=NULL;
wanpipe_tdm_api_t tdm_api;
/***************************************************
* HANDLE SOCKET
*
* o Read a socket
* o Cast data received to api_rx_element_t data type
* o The received packet contains 16 bytes header
*
* ------------------------------------------
* | 16 bytes | X bytes ...
* ------------------------------------------
* Header Data
*
* o Data structures:
* ------------------
* typedef struct {
* union {
* struct {
* unsigned char _event_type;
* unsigned char _rbs_rx_bits;
* unsigned int _time_stamp;
* }wp_event;
* struct {
* unsigned char _rbs_rx_bits;
* unsigned int _time_stamp;
* }wp_rx;
* unsigned char reserved[16];
* }wp_rx_hdr_u;
* #define wp_api_event_type wp_rx_hdr_u.wp_event._event_type
* #define wp_api_event_rbs_rx_bits wp_rx_hdr_u.wp_event._rbs_rx_bits
* #define wp_api_event_time_stamp wp_rx_hdr_u.wp_event._time_stamp
* } wp_tdm_api_rx_hdr_t;
*
* typedef struct {
* wp_tdm_api_rx_hdr_t hdr;
* unsigned char data[1];
* } wp_tdm_api_rx_element_t;
*
* typedef struct {
* union {
* struct {
* unsigned char _rbs_rx_bits;
* unsigned int _time_stamp;
* }wp_tx;
* unsigned char reserved[16];
* }wp_tx_hdr_u;
* #define wp_api_time_stamp wp_tx_hdr_u.wp_tx._time_stamp
* } wp_tdm_api_tx_hdr_t;
*
* typedef struct {
* wp_tdm_api_tx_hdr_t hdr;
* unsigned char data[1];
* } wp_tdm_api_tx_element_t;
*
* #define WPTDM_A_BIT 0x08
* #define WPTDM_B_BIT 0x04
* #define WPTDM_C_BIT 0x02
* #define WPTDM_D_BIT 0x01
*
*/
void handle_span_chan(void)
{
unsigned int Rx_count,Tx_count,Tx_length;
int err;
#if 0
int rlen;
int stream_sync=0;
#endif
Rx_count = 0;
Tx_count = 0;
if (tdm_api.wp_tdm_cmd.hdlc) {
Tx_length = tx_size;
} else {
Tx_length = tdm_api.wp_tdm_cmd.usr_mtu_mru;
}
printf("\n\nSocket Handler: Rx=%d Tx=%i TxCnt=%i TxLen=%i TxDelay=%i\n",
read_enable,write_enable,tx_cnt,tx_size,tx_delay);
sangoma_tdm_enable_dtmf_events(dev_fd, &tdm_api);
/* Main Rx Tx OOB routine */
for(;;) {
err = sangoma_socket_waitfor(dev_fd, 1000, POLLPRI);
printf("ret:%d\n", err);
if (err){
err=sangoma_tdm_read_event(dev_fd,&tdm_api);
if(err < 0 ) {
printf("Failed to receive EVENT %d\n", err);
break;
}
printf("GOT OOB EXCEPTION CMD Exiting\n");
}
if (++Rx_count >= rx_cnt){
break;
}
}
sangoma_tdm_disable_dtmf_events(dev_fd, &tdm_api);
if (tx_fd){
fclose(tx_fd);
}
if (rx_fd){
fclose(rx_fd);
}
close (dev_fd);
return;
}
int dtmf_event (int fd, unsigned char digit, unsigned char type, unsigned char port)
{
printf("%d: DTMV Event: %c (%s:%s)!\n",
fd,
digit,
(port == WAN_EC_CHANNEL_PORT_ROUT)?"ROUT":"SOUT",
(type == WAN_EC_TONE_PRESENT)?"PRESET":"STOP");
return 0;
}
/***************************************************************
* Main:
*
* o Make a socket connection to the driver.
* o Call handle_span_chan() to read the socket
*
**************************************************************/
int main(int argc, char* argv[])
{
int proceed;
proceed=init_args(argc,argv);
if (proceed != WAN_TRUE){
usage(argv[0]);
return -1;
}
signal(SIGINT,&sig_end);
memset(&tdm_api,0,sizeof(tdm_api));
tdm_api.wp_tdm_event.wp_dtmf_event = &dtmf_event;
printf("TDM DTMF PTR = %p\n",tdm_api.wp_tdm_event.wp_dtmf_event);
dev_fd =-1;
dev_fd = sangoma_open_tdmapi_span_chan(atoi(card_name),atoi(if_name));
if( dev_fd < 0){
printf("Failed to open span chan(%s:%d,%s:%d)\n",
card_name,atoi(card_name),if_name,atoi(if_name));
exit (1);
}
printf("HANDLING SPAN %i CHAN %i FD=%i\n",
atoi(card_name),atoi(if_name),dev_fd);
sangoma_tdm_set_codec(dev_fd,&tdm_api,WP_NONE);
sangoma_get_full_cfg(dev_fd, &tdm_api);
handle_span_chan();
close(dev_fd);
return 0;
return 0;
};
void sig_end(int sigid)
{
printf("Got Signal %i\n",sigid);
sangoma_tdm_disable_dtmf_events(dev_fd, &tdm_api);
if (tx_fd){
fclose(tx_fd);
}
if (rx_fd){
fclose(rx_fd);
}
if (dev_fd){
close (dev_fd);
}
exit(1);
}

BIN
api/tdmapi/aft_tdm_voice_api_rbs Executable file

Binary file not shown.

View File

@ -449,7 +449,7 @@ int main(int argc, char* argv[])
proceed=init_args(argc,argv);
if (proceed != WAN_TRUE){
usage((unsigned char*)argv[0]);
usage(argv[0]);
return -1;
}

Binary file not shown.

View File

@ -0,0 +1,445 @@
/*****************************************************************************
* aft_api.c AFT T1/E1: HDLC API Sample Code
*
* Author(s): Nenad Corbic <ncorbic@sangoma.com>
*
* Copyright: (c) 2003-2004 Sangoma Technologies Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
* ============================================================================
*/
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <linux/if_wanpipe.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <signal.h>
#include <linux/if.h>
#include <linux/wanpipe_defines.h>
#include <linux/wanpipe_cfg.h>
#include <linux/wanpipe.h>
#include <libsangoma.h>
#include "lib_api.h"
#define MAX_TX_DATA 5000 /* Size of tx data */
#define MAX_FRAMES 5000 /* Number of frames to transmit */
#define MAX_RX_DATA 5000
unsigned short Rx_lgth;
unsigned char Rx_data[MAX_RX_DATA];
unsigned char Tx_data[MAX_TX_DATA + sizeof(wp_tdm_api_rx_hdr_t)];
/* Prototypes */
int MakeConnection(void);
void handle_span_chan( void);
void sig_end(int sigid);
int dev_fd;
FILE *tx_fd=NULL,*rx_fd=NULL;
wanpipe_tdm_api_t tdm_api;
/***************************************************
* HANDLE SOCKET
*
* o Read a socket
* o Cast data received to api_rx_element_t data type
* o The received packet contains 16 bytes header
*
* ------------------------------------------
* | 16 bytes | X bytes ...
* ------------------------------------------
* Header Data
*
* o Data structures:
* ------------------
* typedef struct {
* union {
* struct {
* unsigned char _event_type;
* unsigned char _rbs_rx_bits;
* unsigned int _time_stamp;
* }wp_event;
* struct {
* unsigned char _rbs_rx_bits;
* unsigned int _time_stamp;
* }wp_rx;
* unsigned char reserved[16];
* }wp_rx_hdr_u;
* #define wp_api_event_type wp_rx_hdr_u.wp_event._event_type
* #define wp_api_event_rbs_rx_bits wp_rx_hdr_u.wp_event._rbs_rx_bits
* #define wp_api_event_time_stamp wp_rx_hdr_u.wp_event._time_stamp
* } wp_tdm_api_rx_hdr_t;
*
* typedef struct {
* wp_tdm_api_rx_hdr_t hdr;
* unsigned char data[1];
* } wp_tdm_api_rx_element_t;
*
* typedef struct {
* union {
* struct {
* unsigned char _rbs_rx_bits;
* unsigned int _time_stamp;
* }wp_tx;
* unsigned char reserved[16];
* }wp_tx_hdr_u;
* #define wp_api_time_stamp wp_tx_hdr_u.wp_tx._time_stamp
* } wp_tdm_api_tx_hdr_t;
*
* typedef struct {
* wp_tdm_api_tx_hdr_t hdr;
* unsigned char data[1];
* } wp_tdm_api_tx_element_t;
*
* #define WPTDM_A_BIT 0x08
* #define WPTDM_B_BIT 0x04
* #define WPTDM_C_BIT 0x02
* #define WPTDM_D_BIT 0x01
*
*/
void handle_span_chan(void)
{
unsigned int Rx_count,Tx_count,Tx_length;
wp_tdm_api_rx_element_t* api_rx_el;
wp_tdm_api_tx_element_t * api_tx_el;
fd_set ready,write,oob;
int err,i;
#if 0
int rlen;
int stream_sync=0;
#endif
Rx_count = 0;
Tx_count = 0;
if (tdm_api.wp_tdm_cmd.hdlc) {
Tx_length = tx_size;
} else {
Tx_length = tdm_api.wp_tdm_cmd.usr_mtu_mru;
}
printf("\n\nSocket Handler: Rx=%d Tx=%i TxCnt=%i TxLen=%i TxDelay=%i\n",
read_enable,write_enable,tx_cnt,tx_size,tx_delay);
/* Initialize the Tx Data buffer */
memset(&Tx_data[0],0,MAX_TX_DATA + sizeof(wp_tdm_api_rx_hdr_t));
/* Cast the Tx data packet with the tx element
* structure. We must insert a 16 byte
* driver header, which driver will remove
* before passing packet out the physical port */
api_tx_el = (wp_tdm_api_tx_element_t*)&Tx_data[0];
/* Create a Tx packet based on user info, or
* by deafult incrementing number starting from 0 */
for (i=0;i<Tx_length;i++){
if (tx_data == -1){
api_tx_el->data[i] = (unsigned char)i;
}else{
#if 0
api_tx_el->data[i] = (unsigned char)tx_data+(i%4);
#else
api_tx_el->data[i] = (unsigned char)tx_data;
#endif
}
}
sangoma_tdm_enable_rm_dtmf_events(dev_fd, &tdm_api);
/* Main Rx Tx OOB routine */
for(;;) {
/* Initialize all select() descriptors */
FD_ZERO(&ready);
FD_ZERO(&write);
FD_ZERO(&oob);
FD_SET(dev_fd,&oob);
FD_SET(dev_fd,&ready);
if (write_enable){
FD_SET(dev_fd,&write);
}
/* Select will block, until:
* 1: OOB event, link level change
* 2: Rx data available
* 3: Interface able to Tx */
if(select(dev_fd + 1,&ready, &write, &oob, NULL)){
fflush(stdout);
if (FD_ISSET(dev_fd,&oob)){
/* An OOB event is pending, usually indicating
* a link level change */
err=sangoma_tdm_read_event(dev_fd,&tdm_api);
if(err < 0 ) {
printf("Failed to receive OOB %i , %i\n", Rx_count, err);
err = ioctl(dev_fd,SIOC_WANPIPE_SOCK_STATE,0);
printf("Sock state is %s\n",
(err == 0) ? "CONNECTED" :
(err == 1) ? "DISCONNECTED" :
"CONNECTING");
break;
}
printf("GOT OOB EXCEPTION CMD Exiting\n");
}
if (FD_ISSET(dev_fd,&ready)){
/* An Rx packet is pending
* 1: Read the rx packet into the Rx_data
* buffer. Confirm len > 0
*
* 2: Cast Rx_data to the api_rx_element.
* Thus, removing a 16 byte header
* attached by the driver.
*
* 3. Check error_flag:
* CRC,Abort..etc
*/
memset(Rx_data, 0, sizeof(Rx_data));
err = sangoma_readmsg_tdm(dev_fd,
Rx_data,
sizeof(wp_tdm_api_rx_hdr_t),
&Rx_data[sizeof(wp_tdm_api_rx_hdr_t)],
MAX_RX_DATA, 0);
if (!read_enable){
goto bitstrm_skip_read;
}
/* err indicates bytes received */
if(err <= 0) {
printf("\nError receiving data\n");
break;
}
api_rx_el = (wp_tdm_api_rx_element_t*)&Rx_data[0];
/* Check the packet length */
Rx_lgth = err;
if(Rx_lgth<=0) {
printf("\nShort frame received (%d)\n",
Rx_lgth);
return;
}
#if 0
if (api_rx_el->data[0] == tx_data && api_rx_el->data[1] == (tx_data+1)){
if (!stream_sync){
printf("GOT SYNC %x\n",api_rx_el->data[0]);
}
stream_sync=1;
}else{
if (stream_sync){
printf("OUT OF SYNC: %x\n",api_rx_el->data[0]);
}
}
#endif
++Rx_count;
if (verbose){
printf("Received %i Length = %i\n",
Rx_count,Rx_lgth);
#if 1
printf("Data: ");
for(i=0;i<Rx_lgth; i ++) {
printf("0x%02X ", api_rx_el->data[i]);
}
printf("\n");
#endif
}else{
//putchar('R');
}
#if 0
switch(api_rx_el->hdr.wp_api_event_type){
case WP_TDM_EVENT_DTMF:
printf("DTMV Event: %c (%s:%s)!\n",
api_rx_el->hdr.wp_api_event_dtmf_digit,
(api_rx_el->hdr.wp_api_event_dtmf_type&WP_TDM_EVENT_DTMF_ROUT)?"ROUT":"SOUT",
(api_rx_el->hdr.wp_api_event_dtmf_type&WP_TDM_EVENT_DTMF_PRESET)?"PRESET":"STOP");
break;
case WP_TDM_EVENT_RXHOOK:
printf("RXHOOK Event: %s!\n",
(api_rx_el->hdr.wp_api_event_rxhook_state&WP_TDM_EVENT_RXHOOK_OFF)?"OFF-HOOK":"ON-HOOK");
break;
case WP_TDM_EVENT_RING:
printf("RING Event: %s!\n",
(api_rx_el->hdr.wp_api_event_ring_state&WP_TDM_EVENT_RING_PRESENT)?"PRESENT":"STOP");
break;
}
#endif
if (rx_cnt > 0 && Rx_count >= rx_cnt){
break;
}
bitstrm_skip_read:
;
}
if (FD_ISSET(dev_fd,&write)){
err = sangoma_writemsg_tdm(dev_fd,
Tx_data,16,
&Tx_data[16], Tx_length,
0);
if (err <= 0){
if (errno == EBUSY){
if (verbose){
printf("Sock busy try again!\n");
}
/* Socket busy try sending again !*/
}else{
printf("Faild to send %i \n",errno);
perror("Send: ");
break;
}
}else{
++Tx_count;
if (verbose){
printf("Packet sent: Sent %i : %i\n",
err,Tx_count);
}else{
//putchar('T');
}
}
}
if (tx_delay){
usleep(tx_delay);
}
if (tx_cnt && tx_size && Tx_count >= tx_cnt && !(files_used & TX_FILE_USED)){
write_enable=0;
if (rx_cnt > 0){
/* Dont break let rx finish */
}else{
break;
}
}
}
}
sangoma_tdm_disable_rm_dtmf_events(dev_fd, &tdm_api);
if (tx_fd){
fclose(tx_fd);
}
if (rx_fd){
fclose(rx_fd);
}
close (dev_fd);
return;
}
int dtmf_event (int fd, unsigned char digit, unsigned char type, unsigned char port)
{
printf("%d: DTMV Event: %c (%s:%s)!\n",
fd,
digit,
(port == WAN_EC_CHANNEL_PORT_ROUT)?"ROUT":"SOUT",
(type == WAN_EC_TONE_PRESENT)?"PRESET":"STOP");
return 0;
}
/***************************************************************
* Main:
*
* o Make a socket connection to the driver.
* o Call handle_span_chan() to read the socket
*
**************************************************************/
int main(int argc, char* argv[])
{
int proceed;
proceed=init_args(argc,argv);
if (proceed != WAN_TRUE){
usage(argv[0]);
return -1;
}
signal(SIGINT,&sig_end);
memset(&tdm_api,0,sizeof(tdm_api));
tdm_api.wp_tdm_event.wp_dtmf_event = &dtmf_event;
printf("TDM DTMF PTR = %p\n",tdm_api.wp_tdm_event.wp_dtmf_event);
dev_fd =-1;
dev_fd = sangoma_open_tdmapi_span_chan(1,1/*atoi(card_name),atoi(if_name)*/);
if( dev_fd < 0){
printf("Failed to open span chan:%s:%s\n",card_name,if_name);
exit (1);
}
printf("HANDLING SPAN %i CHAN %i FD=%i\n",
atoi(card_name),atoi(if_name),dev_fd);
sangoma_tdm_set_codec(dev_fd,&tdm_api,WP_NONE);
sangoma_get_full_cfg(dev_fd, &tdm_api);
handle_span_chan();
close(dev_fd);
return 0;
return 0;
};
void sig_end(int sigid)
{
printf("Got Signal %i\n",sigid);
sangoma_tdm_disable_rm_dtmf_events(dev_fd, &tdm_api);
if (tx_fd){
fclose(tx_fd);
}
if (rx_fd){
fclose(rx_fd);
}
if (dev_fd){
close (dev_fd);
}
exit(1);
}

Binary file not shown.

View File

@ -0,0 +1,448 @@
/*****************************************************************************
* aft_api.c AFT T1/E1: HDLC API Sample Code
*
* Author(s): Nenad Corbic <ncorbic@sangoma.com>
*
* Copyright: (c) 2003-2004 Sangoma Technologies Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
* ============================================================================
*/
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <linux/if_wanpipe.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <signal.h>
#include <linux/if.h>
#include <linux/wanpipe_defines.h>
#include <linux/wanpipe_cfg.h>
#include <linux/wanpipe.h>
#include <libsangoma.h>
#include "lib_api.h"
#define MAX_TX_DATA 5000 /* Size of tx data */
#define MAX_FRAMES 5000 /* Number of frames to transmit */
#define MAX_RX_DATA 5000
unsigned short Rx_lgth;
unsigned char Rx_data[MAX_RX_DATA];
unsigned char Tx_data[MAX_TX_DATA + sizeof(wp_tdm_api_rx_hdr_t)];
/* Prototypes */
int MakeConnection(void);
void handle_span_chan( void);
void sig_end(int sigid);
int dev_fd;
FILE *tx_fd=NULL,*rx_fd=NULL;
wanpipe_tdm_api_t tdm_api;
/***************************************************
* HANDLE SOCKET
*
* o Read a socket
* o Cast data received to api_rx_element_t data type
* o The received packet contains 16 bytes header
*
* ------------------------------------------
* | 16 bytes | X bytes ...
* ------------------------------------------
* Header Data
*
* o Data structures:
* ------------------
* typedef struct {
* union {
* struct {
* unsigned char _event_type;
* unsigned char _rbs_rx_bits;
* unsigned int _time_stamp;
* }wp_event;
* struct {
* unsigned char _rbs_rx_bits;
* unsigned int _time_stamp;
* }wp_rx;
* unsigned char reserved[16];
* }wp_rx_hdr_u;
* #define wp_api_event_type wp_rx_hdr_u.wp_event._event_type
* #define wp_api_event_rbs_rx_bits wp_rx_hdr_u.wp_event._rbs_rx_bits
* #define wp_api_event_time_stamp wp_rx_hdr_u.wp_event._time_stamp
* } wp_tdm_api_rx_hdr_t;
*
* typedef struct {
* wp_tdm_api_rx_hdr_t hdr;
* unsigned char data[1];
* } wp_tdm_api_rx_element_t;
*
* typedef struct {
* union {
* struct {
* unsigned char _rbs_rx_bits;
* unsigned int _time_stamp;
* }wp_tx;
* unsigned char reserved[16];
* }wp_tx_hdr_u;
* #define wp_api_time_stamp wp_tx_hdr_u.wp_tx._time_stamp
* } wp_tdm_api_tx_hdr_t;
*
* typedef struct {
* wp_tdm_api_tx_hdr_t hdr;
* unsigned char data[1];
* } wp_tdm_api_tx_element_t;
*
* #define WPTDM_A_BIT 0x08
* #define WPTDM_B_BIT 0x04
* #define WPTDM_C_BIT 0x02
* #define WPTDM_D_BIT 0x01
*
*/
void handle_span_chan(void)
{
unsigned int Rx_count,Tx_count,Tx_length;
wp_tdm_api_rx_element_t* api_rx_el;
wp_tdm_api_tx_element_t * api_tx_el;
fd_set ready,write,oob;
int err,i;
#if 0
int rlen;
int stream_sync=0;
#endif
Rx_count = 0;
Tx_count = 0;
if (tdm_api.wp_tdm_cmd.hdlc) {
Tx_length = tx_size;
} else {
Tx_length = tdm_api.wp_tdm_cmd.usr_mtu_mru;
}
printf("\n\nSocket Handler: Rx=%d Tx=%i TxCnt=%i TxLen=%i TxDelay=%i\n",
read_enable,write_enable,tx_cnt,tx_size,tx_delay);
/* Initialize the Tx Data buffer */
memset(&Tx_data[0],0,MAX_TX_DATA + sizeof(wp_tdm_api_rx_hdr_t));
/* Cast the Tx data packet with the tx element
* structure. We must insert a 16 byte
* driver header, which driver will remove
* before passing packet out the physical port */
api_tx_el = (wp_tdm_api_tx_element_t*)&Tx_data[0];
/* Create a Tx packet based on user info, or
* by deafult incrementing number starting from 0 */
for (i=0;i<Tx_length;i++){
if (tx_data == -1){
api_tx_el->data[i] = (unsigned char)i;
}else{
#if 0
api_tx_el->data[i] = (unsigned char)tx_data+(i%4);
#else
api_tx_el->data[i] = (unsigned char)tx_data;
#endif
}
}
sangoma_tdm_enable_rxhook_events(dev_fd, &tdm_api);
/* Main Rx Tx OOB routine */
for(;;) {
/* Initialize all select() descriptors */
FD_ZERO(&ready);
FD_ZERO(&write);
FD_ZERO(&oob);
FD_SET(dev_fd,&oob);
FD_SET(dev_fd,&ready);
if (write_enable){
FD_SET(dev_fd,&write);
}
/* Select will block, until:
* 1: OOB event, link level change
* 2: Rx data available
* 3: Interface able to Tx */
if(select(dev_fd + 1,&ready, &write, &oob, NULL)){
fflush(stdout);
if (FD_ISSET(dev_fd,&oob)){
/* An OOB event is pending, usually indicating
* a link level change */
err=sangoma_tdm_read_event(dev_fd,&tdm_api);
if(err < 0 ) {
printf("Failed to receive OOB %i , %i\n", Rx_count, err);
err = ioctl(dev_fd,SIOC_WANPIPE_SOCK_STATE,0);
printf("Sock state is %s\n",
(err == 0) ? "CONNECTED" :
(err == 1) ? "DISCONNECTED" :
"CONNECTING");
break;
}
printf("GOT OOB EXCEPTION CMD Exiting\n");
}
if (FD_ISSET(dev_fd,&ready)){
/* An Rx packet is pending
* 1: Read the rx packet into the Rx_data
* buffer. Confirm len > 0
*
* 2: Cast Rx_data to the api_rx_element.
* Thus, removing a 16 byte header
* attached by the driver.
*
* 3. Check error_flag:
* CRC,Abort..etc
*/
memset(Rx_data, 0, sizeof(Rx_data));
err = sangoma_readmsg_tdm(dev_fd,
Rx_data,
sizeof(wp_tdm_api_rx_hdr_t),
&Rx_data[sizeof(wp_tdm_api_rx_hdr_t)],
MAX_RX_DATA, 0);
if (!read_enable){
goto bitstrm_skip_read;
}
/* err indicates bytes received */
if(err <= 0) {
printf("\nError receiving data\n");
break;
}
api_rx_el = (wp_tdm_api_rx_element_t*)&Rx_data[0];
/* Check the packet length */
Rx_lgth = err;
if(Rx_lgth<=0) {
printf("\nShort frame received (%d)\n",
Rx_lgth);
return;
}
#if 0
if (api_rx_el->data[0] == tx_data && api_rx_el->data[1] == (tx_data+1)){
if (!stream_sync){
printf("GOT SYNC %x\n",api_rx_el->data[0]);
}
stream_sync=1;
}else{
if (stream_sync){
printf("OUT OF SYNC: %x\n",api_rx_el->data[0]);
}
}
#endif
++Rx_count;
if (verbose){
#if 0
printf("Received %i Length = %i\n",
Rx_count,Rx_lgth);
printf("Data: ");
for(i=0;i<Rx_lgth; i ++) {
printf("0x%02X ", api_rx_el->data[i]);
}
printf("\n");
#endif
}else{
//putchar('R');
}
#if 0
switch(api_rx_el->hdr.wp_api_event_type){
case WP_TDM_EVENT_DTMF:
printf("DTMV Event: %c (%s:%s)!\n",
api_rx_el->hdr.wp_api_event_dtmf_digit,
(api_rx_el->hdr.wp_api_event_dtmf_type&WP_TDM_EVENT_DTMF_ROUT)?"ROUT":"SOUT",
(api_rx_el->hdr.wp_api_event_dtmf_type&WP_TDM_EVENT_DTMF_PRESET)?"PRESET":"STOP");
break;
case WP_TDM_EVENT_RXHOOK:
printf("RXHOOK Event: %s!\n",
(api_rx_el->hdr.wp_api_event_rxhook_state&WP_TDM_EVENT_RXHOOK_OFF)?"OFF-HOOK":"ON-HOOK");
break;
case WP_TDM_EVENT_RING:
printf("RING Event: %s!\n",
(api_rx_el->hdr.wp_api_event_ring_state&WP_TDM_EVENT_RING_PRESENT)?"PRESENT":"STOP");
break;
}
#endif
if (rx_cnt > 0 && Rx_count >= rx_cnt){
break;
}
bitstrm_skip_read:
;
}
if (FD_ISSET(dev_fd,&write)){
err = sangoma_writemsg_tdm(dev_fd,
Tx_data,16,
&Tx_data[16], Tx_length,
0);
if (err <= 0){
if (errno == EBUSY){
if (verbose){
printf("Sock busy try again!\n");
}
/* Socket busy try sending again !*/
}else{
printf("Faild to send %i \n",errno);
perror("Send: ");
break;
}
}else{
++Tx_count;
if (verbose){
//printf("Packet sent: Sent %i : %i\n",
// err,Tx_count);
}else{
//putchar('T');
}
}
}
if (tx_delay){
usleep(tx_delay);
}
if (tx_cnt && tx_size && Tx_count >= tx_cnt && !(files_used & TX_FILE_USED)){
write_enable=0;
if (rx_cnt > 0){
/* Dont break let rx finish */
}else{
break;
}
}
}
}
sangoma_tdm_disable_rxhook_events(dev_fd, &tdm_api);
if (tx_fd){
fclose(tx_fd);
}
if (rx_fd){
fclose(rx_fd);
}
close (dev_fd);
return;
}
int rxhook_event (int fd, unsigned char state)
{
printf("%d: RXHOOK Event: %s!\n",
fd, (state & WAN_EVENT_RXHOOK_OFF)?"OFF-HOOK":"ON-HOOK");
return 0;
}
/***************************************************************
* Main:
*
* o Make a socket connection to the driver.
* o Call handle_span_chan() to read the socket
*
**************************************************************/
int main(int argc, char* argv[])
{
int proceed;
proceed=init_args(argc,argv);
if (proceed != WAN_TRUE){
usage(argv[0]);
return -1;
}
signal(SIGINT,&sig_end);
memset(&tdm_api,0,sizeof(tdm_api));
tdm_api.wp_tdm_event.wp_rxhook_event = &rxhook_event;
printf("TDM RXHOOK PTR = %p\n",tdm_api.wp_tdm_event.wp_rxhook_event);
dev_fd =-1;
dev_fd = sangoma_open_tdmapi_span_chan(atoi(card_name),atoi(if_name));
if( dev_fd < 0){
printf("Failed to open span chan (%s:%s:%d:%d)\n",
card_name, if_name,
atoi(card_name),atoi(if_name));
exit (1);
}
printf("HANDLING SPAN %i CHAN %i FD=%i\n",
atoi(card_name),atoi(if_name),dev_fd);
sangoma_tdm_set_codec(dev_fd,&tdm_api,WP_NONE);
sangoma_get_full_cfg(dev_fd, &tdm_api);
handle_span_chan();
close(dev_fd);
return 0;
return 0;
};
void sig_end(int sigid)
{
printf("Got Signal %i\n",sigid);
sangoma_tdm_disable_rxhook_events(dev_fd, &tdm_api);
if (tx_fd){
fclose(tx_fd);
}
if (rx_fd){
fclose(rx_fd);
}
if (dev_fd){
close (dev_fd);
}
exit(1);
}

View File

@ -1,368 +0,0 @@
/*****************************************************************************
* bstrm_hdlc_test_multi.c: Multiple Bstrm Test Receive Module
*
* Author(s): Nenad Corbic <ncorbic@sangoma.com>
*
* Copyright: (c) 1995-2006 Sangoma Technologies Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
* ============================================================================
* Description:
*
* The chdlc_api.c utility will bind to a socket to a chdlc network
* interface, and continously tx and rx packets to an from the sockets.
*
* This example has been written for a single interface in mind,
* where the same process handles tx and rx data.
*
* A real world example, should use different processes to handle
* tx and rx spearately.
*/
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <linux/if_wanpipe.h>
#include <string.h>
#include <signal.h>
#include <wait.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <pthread.h>
#include <linux/wanpipe.h>
#include <linux/wanpipe_tdm_api.h>
#include <libsangoma.h>
#include <wanpipe_hdlc.h>
#define FALSE 0
#define TRUE 1
/* Enable/Disable tx of random frames */
#define RAND_FRAME 1
#define MAX_NUM_OF_TIMESLOTS 31*16
#define LGTH_CRC_BYTES 2
#define MAX_TX_DATA 1000 //MAX_NUM_OF_TIMESLOTS*10 /* Size of tx data */
#define MAX_TX_FRAMES 1000000 /* Number of frames to transmit */
#define WRITE 1
#define MAX_IF_NAME 20
typedef struct {
int sock;
int rx_cnt;
int tx_cnt;
int data;
int last_error;
int frames;
char if_name[MAX_IF_NAME+1];
} timeslot_t;
timeslot_t tslot_array[MAX_NUM_OF_TIMESLOTS];
int tx_change_data=0, tx_change_data_cnt=0;
int end=0;
void print_packet(unsigned char *buf, int len)
{
int x;
printf("{ | ");
for (x=0;x<len;x++){
if (x && x%24 == 0){
printf("\n ");
}
if (x && x%8 == 0)
printf(" | ");
printf("%02x ",buf[x]);
}
printf("}\n");
}
void sig_end(int sigid)
{
printf("%d: Got Signal %i\n",getpid(),sigid);
end=1;
}
static unsigned long next = 1;
/* RAND_MAX assumed to be 32767 */
int myrand(int max_rand) {
next = next * 1103515245 + 12345;
return((unsigned)(next/65536) % max_rand);
}
void mysrand(unsigned seed) {
next = seed;
}
/*===================================================
* MakeConnection
*
* o Create a Socket
* o Bind a socket to a wanpipe network interface
* (Interface name is supplied by the user)
*==================================================*/
int MakeConnection(timeslot_t *slot, char *router_name )
{
int span,chan;
sangoma_span_chan_fromif(slot->if_name,&span,&chan);
if (span > 0 && chan > 0) {
wanpipe_tdm_api_t tdm_api;
slot->sock = sangoma_open_tdmapi_span_chan(span,chan);
if( slot->sock < 0 ) {
perror("Open Span Chan: ");
return( FALSE );
}
sangoma_tdm_set_codec(slot->sock,&tdm_api,WP_NONE);
printf("Socket bound to Span=%i Chan=%i\n\n",span,chan);
return (TRUE);
}
return(FALSE);
}
int api_tdm_fe_alarms_callback(int fd, unsigned char alarm)
{
int fd_found=0;
int i;
for (i=0;i<MAX_NUM_OF_TIMESLOTS;i++){
if (tslot_array[i].sock == fd) {
fd_found=1;
break;
}
}
if (fd_found) {
printf ("FE ALARMS Call back found device %i Alarm=%i \n",
fd,alarm);
} else {
printf ("FE ALARMS Call back no device Alarm=%i\n",alarm);
}
return 0;
}
#define ALL_OK 0
#define BOARD_UNDERRUN 1
#define TX_ISR_UNDERRUN 2
#define UNKNOWN_ERROR 4
void process_con_rx(void)
{
unsigned int Rx_count;
fd_set oob,ready;
int err,serr,i,slots=0;
unsigned char Rx_data[1600];
int error_bit=0, error_crc=0, error_abort=0, error_frm=0;
struct timeval tv;
int frame=0;
int max_fd=0, packets=0;
timeslot_t *slot=NULL;
wanpipe_tdm_api_t tdm_api;
memset(&tdm_api,0,sizeof(tdm_api));
tdm_api.wp_tdm_event.wp_fe_alarm_event = &api_tdm_fe_alarms_callback;
i=0;
for (i=0;i<MAX_NUM_OF_TIMESLOTS;i++){
if (tslot_array[i].sock < 0) {
continue;
}
if (tslot_array[i].sock > max_fd){
max_fd=tslot_array[i].sock;
}
}
i=0;
tv.tv_usec = 0;
tv.tv_sec = 10;
Rx_count = 0;
for(;;) {
FD_ZERO(&ready);
FD_ZERO(&oob);
max_fd=0;
for (i=0;i<MAX_NUM_OF_TIMESLOTS;i++){
if (tslot_array[i].sock < 0) {
continue;
}
FD_SET(tslot_array[i].sock,&ready);
FD_SET(tslot_array[i].sock,&oob);
if (tslot_array[i].sock > max_fd){
max_fd=tslot_array[i].sock;
}
}
tv.tv_usec = 0;
tv.tv_sec = 10;
if (end){
break;
}
/* The select function must be used to implement flow control.
* WANPIPE socket will block the user if the socket cannot send
* or there is nothing to receive.
*
* By using the last socket file descriptor +1 select will wait
* for all active sockets.
*/
slots=0;
if((serr=select(max_fd + 1, &ready, NULL, &oob, &tv))){
for (i=0;i<MAX_NUM_OF_TIMESLOTS;i++){
if (tslot_array[i].sock < 0) {
continue;
}
slots++;
slot=&tslot_array[i];
if (FD_ISSET(slot->sock,&oob)){
sangoma_tdm_read_event(slot->sock,&tdm_api);
}
/* Check for rx packets */
if (FD_ISSET(slot->sock,&ready)){
err = sangoma_readmsg_tdm(slot->sock,
Rx_data,sizeof(wp_tdm_api_rx_hdr_t),
&Rx_data[sizeof(wp_tdm_api_rx_hdr_t)],
sizeof(Rx_data), 0);
/* err indicates bytes received */
if(err > 0) {
sangoma_writemsg_tdm(tslot_array[i==1?2:1].sock,
Rx_data,sizeof(wp_tdm_api_rx_hdr_t),
&Rx_data[sizeof(wp_tdm_api_rx_hdr_t)],
err, 0);
} else {
printf("\n%s: Error receiving data\n",slot->if_name);
}
} /* If rx */
} /* for all slots */
} else {
printf("\n: Error selecting rx socket rc=0x%x errno=0x%x\n",
serr,errno);
perror("Select: ");
//break;
}
}
printf("\nRx Unloading HDLC\n");
}
/***************************************************************
* Main:
*
* o Make a socket connection to the driver.
* o Call process_con() to read/write the socket
*
**************************************************************/
int main(int argc, char* argv[])
{
int proceed;
char router_name[20];
int x,i;
if (argc < 3){
printf("Usage: rec_wan_sock <router name> <interface name> <data> ...\n");
exit(0);
}
nice(-11);
signal(SIGINT,&sig_end);
signal(SIGTERM,&sig_end);
memset(&tslot_array,0,sizeof(tslot_array));
for (i=0;i<MAX_NUM_OF_TIMESLOTS;i++){
tslot_array[i].sock=-1;
}
strncpy(router_name,argv[1],(sizeof(router_name)-1));
for (x=1;x<argc-1;x++) {
strncpy(tslot_array[x].if_name, argv[x+1], MAX_IF_NAME);
printf("Connecting to IF=%s\n",tslot_array[x].if_name);
#if 1
proceed = MakeConnection(&tslot_array[x],router_name);
if( proceed == TRUE ){
printf("Creating %s with tx data 0x%x : Sock=%i : x=%i\n",
tslot_array[x].if_name,
tslot_array[x].data,
tslot_array[x].sock,
x);
}else{
if (tslot_array[x].sock){
close(tslot_array[x].sock);
}
tslot_array[x].sock=-1;
}
#endif
}
process_con_rx();
for (x=0;x<MAX_NUM_OF_TIMESLOTS;x++){
if (tslot_array[x].sock){
close(tslot_array[x].sock);
tslot_array[x].sock=0;
}
}
/* Wait for the clear call children */
return 0;
};

View File

@ -1 +1 @@
../util/wanec_apilib
../util/wanec_apilib/

View File

@ -1,5 +1,5 @@
Package: wanpipe
Version: 3.2.7.1-0
Version: 3.3.2-0
Section: networking
Priority: optional
Architecture: all

451
patches/kdrivers/diff Normal file
View File

@ -0,0 +1,451 @@
Only in /common/wanec/buffers: CVS
Only in /common/wanec/buffers: DTMF_0_ulaw.pcm
Only in /common/wanec/buffers: DTMF_1_ulaw.pcm
Only in /common/wanec/buffers: DTMF_2_ulaw.pcm
Only in /common/wanec/buffers: DTMF_3_ulaw.pcm
Only in /common/wanec/buffers: DTMF_4_ulaw.pcm
Only in /common/wanec/buffers: DTMF_5_ulaw.pcm
Only in /common/wanec/buffers: DTMF_6_ulaw.pcm
Only in /common/wanec/buffers: DTMF_7_ulaw.pcm
Only in /common/wanec/buffers: DTMF_8_ulaw.pcm
Only in /common/wanec/buffers: DTMF_9_ulaw.pcm
Only in /common/wanec/buffers: DTMF_A_ulaw.pcm
Only in /common/wanec/buffers: DTMF_B_ulaw.pcm
Only in /common/wanec/buffers: DTMF_C_ulaw.pcm
Only in /common/wanec/buffers: DTMF_D_ulaw.pcm
Only in /common/wanec/buffers: DTMF_POUND_ulaw.pcm
Only in /common/wanec/buffers: DTMF_STAR_ulaw.pcm
Only in /common/wanec/buffers: female_voice1_a_law.pcm
Only in /common/wanec/buffers: female_voice1_u_law.pcm
Only in /common/wanec/buffers: male_voice1_a_law.pcm
Only in /common/wanec/buffers: male_voice1_u_law.pcm
Only in /common/wanec/buffers: male_voice2_a_law.pcm
Only in /common/wanec/buffers: male_voice2_u_law.pcm
Only in /common/wanec/buffers: oct_phone_number_a_law.pcm
Only in /common/wanec/buffers: oct_phone_number_u_law.pcm
Only in /common/wanec/buffers: Rin_a_law.pcm
Only in /common/wanec/buffers: Rin_u_law.pcm
Only in /common/wanec/buffers: Sin_a_law.pcm
Only in /common/wanec/buffers: Sin_u_law.pcm
Only in /common/wanec/buffers: voice_long_a_law.pcm
Only in /common/wanec/buffers: voice_long_u_law.pcm
Only in /common/wanec: CVS
Only in /common/wanec: diff
Only in /common/wanec/image: CVS
Only in /common/wanec/image: OCT6116-128S.ima
Only in /common/wanec/image: OCT6116-256S.ima
Only in /common/wanec/image: OCT6116-32S.ima
Only in /common/wanec/image: OCT6116-64S.ima
Only in /common/wanec/image: OCT6116FW-01.05.01
Only in /common/wanec/image: OCT6116FW-01.05.17
Only in /common/wanec/image: OCT6126FW-01.03.04
Only in /common/wanec/image: OCT6126FW-01.05.00
Only in /common/wanec/image: OCT6126FW-01.05.01
Only in /common/wanec/lib: CVS
diff -dur --exclude='*.svn' --exclude='libsangoma*' --exclude='sangoma_mgd*' wanec/Makefile /common/wanec/Makefile
--- wanec/Makefile 2008-03-03 16:12:40.000000000 -0500
+++ /common/wanec/Makefile 2007-12-04 15:44:37.000000000 -0500
@@ -1,57 +1,37 @@
-# Makefile for hello world kernel 2.6 module. -*-makefile-*-
#
-# Copyright (C) 2004 Joachim Nilsson <joachim.nilsson@member.fsf.org>
+# Makefile for the Linux network (wan) device drivers.
#
-# Licensed under the GNU General Public License, v2.0 or later,
-# at your option. See the file COPYING for details, or the web
-# page http://www.gnu.org/copyleft/gpl.html
+# 3 Aug 2000, Christoph Hellwig <hch@infradead.org>
+# Rewritten to use lists instead of if-statements.
#
-OBJS =
-MODULE_NAME =
-EXTRA_CFLAGS =
-KDIR =
-$(MODULE_NAME)-objs = $(OBJS)
-
-RM = @rm -rf
-JUNK = *~ *.bak DEADJOE
-
-PWD := $(shell pwd)
-SUBDIRS=$(PWD)
-
-# First pass, kernel Makefile reads module objects
-ifneq ($(KERNELRELEASE),)
-obj-m := $(MODULE_NAME).o
-
-
-# Second pass, the actual build.
-else
-KVER ?= $(shell uname -r)
-PWD := $(shell pwd)
-KBUILD_VERBOSE=
+EXTRA_CFLAGS=-Werror $(EXTRA_FLAGS)
+EXTRA_CFLAGS+=-DENABLE_TONE_PLAY -DCONFIG_WANPIPE_HWEC -I/usr/include/wanpipe
+HOME=/common/wanec
-all:
- $(MAKE) -C $(KDIR) SUBDIRS=$(SUBDIRS) CC=$(CC) KBUILD_VERBOSE=$(KBUILD_VERBOSE) modules
-
-clean:
- $(shell find $(SUBDIRS) -name '*.*o' | xargs rm)
- $(shell find $(SUBDIRS) -name '.*.o.cmd' | xargs rm)
- $(shell rm -f build.sh)
- $(MAKE) -C $(KDIR) SUBDIRS=$(SUBDIRS) clean
-
-distclean: clean
- $(RM) $(JUNK) $(OBJS)
+BTDIR=oct6100_api/apilib/bt
+LARGMATHDIR=oct6100_api/apilib/largmath
+LLMANDIR=oct6100_api/apilib/llman
+OCTAPIDIR=oct6100_api/octdeviceapi/oct6100api/oct6100_api
+OCTAPIMIDIR=oct6100_api/octdeviceapi/oct6100api/oct6100_apimi
-help:
- $(MAKE) -C $(KDIR) SUBDIRS=$(SUBDIRS) help
+EXTRA_CFLAGS += -I. -I$(HOME)/oct6100_api -I$(HOME)/oct6100_api/include -I$(HOME)/oct6100_api/include/oct6100api -I$(HOME)/oct6100_api/include -I$(HOME)/oct6100_api/include/apilib -I$(HOME)/oct6100_api/include/apilib -I$(HOME)/oct6100_api/include/octrpc -I$(HOME)/oct6100_api/include/oct6100api -I$(HOME)/oct6100_api/octdeviceapi/oct6100api -DENABLE_TONE_PLAY
+wanec-y := wanec_iface.o wanec_cmd.o wanec_utils.o wanec_dev.o
+wanec-y += $(BTDIR)/octapi_bt0.o $(LARGMATHDIR)/octapi_largmath.o
+wanec-y += $(LLMANDIR)/octapi_llman.o $(OCTAPIMIDIR)/oct6100_mask_interrupts.o
+wanec-y += $(OCTAPIDIR)/oct6100_adpcm_chan.o $(OCTAPIDIR)/oct6100_channel.o
+wanec-y += $(OCTAPIDIR)/oct6100_chip_open.o $(OCTAPIDIR)/oct6100_chip_stats.o
+wanec-y += $(OCTAPIDIR)/oct6100_conf_bridge.o $(OCTAPIDIR)/oct6100_debug.o
+wanec-y += $(OCTAPIDIR)/oct6100_events.o $(OCTAPIDIR)/oct6100_interrupts.o
+wanec-y += $(OCTAPIDIR)/oct6100_memory.o $(OCTAPIDIR)/oct6100_miscellaneous.o
+wanec-y += $(OCTAPIDIR)/oct6100_mixer.o $(OCTAPIDIR)/oct6100_phasing_tsst.o
+wanec-y += $(OCTAPIDIR)/oct6100_playout_buf.o $(OCTAPIDIR)/oct6100_remote_debug.o
+wanec-y += $(OCTAPIDIR)/oct6100_tlv.o $(OCTAPIDIR)/oct6100_tone_detection.o
+wanec-y += $(OCTAPIDIR)/oct6100_tsi_cnct.o $(OCTAPIDIR)/oct6100_tsst.o
+wanec-y += $(OCTAPIDIR)/oct6100_user.o
-# Indents the kernel source the way linux/Documentation/CodingStyle.txt
-# wants it to be.
-indent:
- indent -kr -i8 $($(MODULE_NAME)-objs:.o=.c)
+wanec-objs := $(OBJS)
-install:
- $(MAKE) -C $(KDIR) M=$(SUBDIRS) modules_install
+obj-m += wanec.o
-endif
diff -dur --exclude='*.svn' --exclude='libsangoma*' --exclude='sangoma_mgd*' wanec/Makefile.Kbuild.Linux /common/wanec/Makefile.Kbuild.Linux
--- wanec/Makefile.Kbuild.Linux 2008-03-03 16:12:40.000000000 -0500
+++ /common/wanec/Makefile.Kbuild.Linux 2007-12-04 15:44:37.000000000 -0500
@@ -1,57 +1,37 @@
-# Makefile for hello world kernel 2.6 module. -*-makefile-*-
#
-# Copyright (C) 2004 Joachim Nilsson <joachim.nilsson@member.fsf.org>
+# Makefile for the Linux network (wan) device drivers.
#
-# Licensed under the GNU General Public License, v2.0 or later,
-# at your option. See the file COPYING for details, or the web
-# page http://www.gnu.org/copyleft/gpl.html
+# 3 Aug 2000, Christoph Hellwig <hch@infradead.org>
+# Rewritten to use lists instead of if-statements.
#
-OBJS =
-MODULE_NAME =
-EXTRA_CFLAGS =
-KDIR =
-$(MODULE_NAME)-objs = $(OBJS)
-
-RM = @rm -rf
-JUNK = *~ *.bak DEADJOE
-
-PWD := $(shell pwd)
-SUBDIRS=$(PWD)
-
-# First pass, kernel Makefile reads module objects
-ifneq ($(KERNELRELEASE),)
-obj-m := $(MODULE_NAME).o
-
-
-# Second pass, the actual build.
-else
-KVER ?= $(shell uname -r)
-PWD := $(shell pwd)
-KBUILD_VERBOSE=
+EXTRA_CFLAGS=-Werror $(EXTRA_FLAGS)
+EXTRA_CFLAGS+=-DENABLE_TONE_PLAY -DCONFIG_WANPIPE_HWEC -I/usr/include/wanpipe
+HOME=/common/wanec
-all:
- $(MAKE) -C $(KDIR) SUBDIRS=$(SUBDIRS) CC=$(CC) KBUILD_VERBOSE=$(KBUILD_VERBOSE) modules
-
-clean:
- $(shell find $(SUBDIRS) -name '*.*o' | xargs rm)
- $(shell find $(SUBDIRS) -name '.*.o.cmd' | xargs rm)
- $(shell rm -f build.sh)
- $(MAKE) -C $(KDIR) SUBDIRS=$(SUBDIRS) clean
-
-distclean: clean
- $(RM) $(JUNK) $(OBJS)
+BTDIR=oct6100_api/apilib/bt
+LARGMATHDIR=oct6100_api/apilib/largmath
+LLMANDIR=oct6100_api/apilib/llman
+OCTAPIDIR=oct6100_api/octdeviceapi/oct6100api/oct6100_api
+OCTAPIMIDIR=oct6100_api/octdeviceapi/oct6100api/oct6100_apimi
-help:
- $(MAKE) -C $(KDIR) SUBDIRS=$(SUBDIRS) help
+EXTRA_CFLAGS += -I. -I$(HOME)/oct6100_api -I$(HOME)/oct6100_api/include -I$(HOME)/oct6100_api/include/oct6100api -I$(HOME)/oct6100_api/include -I$(HOME)/oct6100_api/include/apilib -I$(HOME)/oct6100_api/include/apilib -I$(HOME)/oct6100_api/include/octrpc -I$(HOME)/oct6100_api/include/oct6100api -I$(HOME)/oct6100_api/octdeviceapi/oct6100api -DENABLE_TONE_PLAY
+wanec-y := wanec_iface.o wanec_cmd.o wanec_utils.o wanec_dev.o
+wanec-y += $(BTDIR)/octapi_bt0.o $(LARGMATHDIR)/octapi_largmath.o
+wanec-y += $(LLMANDIR)/octapi_llman.o $(OCTAPIMIDIR)/oct6100_mask_interrupts.o
+wanec-y += $(OCTAPIDIR)/oct6100_adpcm_chan.o $(OCTAPIDIR)/oct6100_channel.o
+wanec-y += $(OCTAPIDIR)/oct6100_chip_open.o $(OCTAPIDIR)/oct6100_chip_stats.o
+wanec-y += $(OCTAPIDIR)/oct6100_conf_bridge.o $(OCTAPIDIR)/oct6100_debug.o
+wanec-y += $(OCTAPIDIR)/oct6100_events.o $(OCTAPIDIR)/oct6100_interrupts.o
+wanec-y += $(OCTAPIDIR)/oct6100_memory.o $(OCTAPIDIR)/oct6100_miscellaneous.o
+wanec-y += $(OCTAPIDIR)/oct6100_mixer.o $(OCTAPIDIR)/oct6100_phasing_tsst.o
+wanec-y += $(OCTAPIDIR)/oct6100_playout_buf.o $(OCTAPIDIR)/oct6100_remote_debug.o
+wanec-y += $(OCTAPIDIR)/oct6100_tlv.o $(OCTAPIDIR)/oct6100_tone_detection.o
+wanec-y += $(OCTAPIDIR)/oct6100_tsi_cnct.o $(OCTAPIDIR)/oct6100_tsst.o
+wanec-y += $(OCTAPIDIR)/oct6100_user.o
-# Indents the kernel source the way linux/Documentation/CodingStyle.txt
-# wants it to be.
-indent:
- indent -kr -i8 $($(MODULE_NAME)-objs:.o=.c)
+wanec-objs := $(OBJS)
-install:
- $(MAKE) -C $(KDIR) M=$(SUBDIRS) modules_install
+obj-m += wanec.o
-endif
Only in /common/wanec/mod: CVS
Only in /common/wanec/modinfo: CVS
Only in /common/wanec/oct6100_api/apilib/bt: CVS
Only in /common/wanec/oct6100_api/apilib/bt: octapi_bt0.o
Only in /common/wanec/oct6100_api/apilib/bt: .octapi_bt0.o.cmd
Only in /common/wanec/oct6100_api/apilib: CVS
Only in /common/wanec/oct6100_api/apilib/largmath: CVS
Only in /common/wanec/oct6100_api/apilib/largmath: octapi_largmath.o
Only in /common/wanec/oct6100_api/apilib/largmath: .octapi_largmath.o.cmd
Only in /common/wanec/oct6100_api/apilib/llman: CVS
Only in /common/wanec/oct6100_api/apilib/llman: octapi_llman.o
Only in /common/wanec/oct6100_api/apilib/llman: .octapi_llman.o.cmd
Only in /common/wanec/oct6100_api: CVS
Only in /common/wanec/oct6100_api/include/apilib: CVS
Only in /common/wanec/oct6100_api/include: CVS
Only in /common/wanec/oct6100_api/include/oct6100api: CVS
Only in /common/wanec/oct6100_api/include/octrpc: CVS
Only in /common/wanec/oct6100_api/octdeviceapi: CVS
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api: CVS
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: CVS
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_adpcm_chan.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_adpcm_chan.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_channel.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_channel.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_chip_open.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_chip_open.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_chip_stats.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_chip_stats.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_conf_bridge.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_conf_bridge.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_debug.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_debug.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_events.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_events.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_interrupts.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_interrupts.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_memory.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_memory.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_miscellaneous.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_miscellaneous.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_mixer.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_mixer.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_phasing_tsst.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_phasing_tsst.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_playout_buf.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_playout_buf.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_remote_debug.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_remote_debug.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_tlv.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_tlv.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_tone_detection.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_tone_detection.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_tsi_cnct.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_tsi_cnct.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_tsst.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_tsst.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: oct6100_user.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api: .oct6100_user.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_apimi: CVS
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_apimi: oct6100_mask_interrupts.o
Only in /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_apimi: .oct6100_mask_interrupts.o.cmd
Only in /common/wanec/oct6100_api/octdeviceapiw: CVS
Only in /common/wanec/oct6100_api/octdeviceapiw/oct6100_apiw_freebsd: CVS
Only in /common/wanec/oct6100_api/octdeviceapiw/oct6100_apiw_linux: CVS
Only in /common/wanec: oct6100_api.PR39
Only in /common/wanec: oct6100_api.PR41
Only in /common/wanec: oct6100_api.PR43
Only in /common/wanec: oct6100_api.PR47
Only in /common/wanec/oct6100_api.PR48/apilib/bt: CVS
Only in /common/wanec/oct6100_api.PR48/apilib/bt: octapi_bt0.o
Only in /common/wanec/oct6100_api.PR48/apilib/bt: .octapi_bt0.o.cmd
Only in /common/wanec/oct6100_api.PR48/apilib: CVS
Only in /common/wanec/oct6100_api.PR48/apilib/largmath: CVS
Only in /common/wanec/oct6100_api.PR48/apilib/largmath: octapi_largmath.o
Only in /common/wanec/oct6100_api.PR48/apilib/largmath: .octapi_largmath.o.cmd
Only in /common/wanec/oct6100_api.PR48/apilib/llman: CVS
Only in /common/wanec/oct6100_api.PR48/apilib/llman: octapi_llman.o
Only in /common/wanec/oct6100_api.PR48/apilib/llman: .octapi_llman.o.cmd
Only in /common/wanec/oct6100_api.PR48: CVS
Only in /common/wanec/oct6100_api.PR48/include/apilib: CVS
Only in /common/wanec/oct6100_api.PR48/include: CVS
Only in /common/wanec/oct6100_api.PR48/include/oct6100api: CVS
Only in /common/wanec/oct6100_api.PR48/include/octrpc: CVS
Only in /common/wanec/oct6100_api.PR48/octdeviceapi: CVS
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api: CVS
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: CVS
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_adpcm_chan.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_adpcm_chan.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_channel.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_channel.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_chip_open.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_chip_open.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_chip_stats.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_chip_stats.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_conf_bridge.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_conf_bridge.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_debug.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_debug.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_events.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_events.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_interrupts.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_interrupts.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_memory.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_memory.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_miscellaneous.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_miscellaneous.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_mixer.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_mixer.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_phasing_tsst.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_phasing_tsst.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_playout_buf.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_playout_buf.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_remote_debug.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_remote_debug.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_tlv.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_tlv.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_tone_detection.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_tone_detection.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_tsi_cnct.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_tsi_cnct.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_tsst.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_tsst.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: oct6100_user.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_api: .oct6100_user.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_apimi: CVS
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_apimi: oct6100_mask_interrupts.o
Only in /common/wanec/oct6100_api.PR48/octdeviceapi/oct6100api/oct6100_apimi: .oct6100_mask_interrupts.o.cmd
Only in /common/wanec/oct6100_api.PR48/octdeviceapiw: CVS
Only in /common/wanec/oct6100_api.PR48/octdeviceapiw/oct6100_apiw_freebsd: CVS
Only in /common/wanec/oct6100_api.PR48/octdeviceapiw/oct6100_apiw_linux: CVS
Only in /common/wanec/tmp: CVS
diff -dur --exclude='*.svn' --exclude='libsangoma*' --exclude='sangoma_mgd*' wanec/.tmp_versions/wanec.mod /common/wanec/.tmp_versions/wanec.mod
--- wanec/.tmp_versions/wanec.mod 2008-03-03 16:12:55.000000000 -0500
+++ /common/wanec/.tmp_versions/wanec.mod 2008-03-05 18:40:45.000000000 -0500
@@ -1,2 +1,2 @@
-/root/3.3/wanpipe/patches/kdrivers/wanec/wanec.ko
-/root/3.3/wanpipe/patches/kdrivers/wanec/wanec_iface.o /root/3.3/wanpipe/patches/kdrivers/wanec/wanec_cmd.o /root/3.3/wanpipe/patches/kdrivers/wanec/wanec_utils.o /root/3.3/wanpipe/patches/kdrivers/wanec/wanec_dev.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/apilib/bt/octapi_bt0.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/apilib/largmath/octapi_largmath.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/apilib/llman/octapi_llman.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_apimi/oct6100_mask_interrupts.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_adpcm_chan.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_channel.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_open.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_stats.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_conf_bridge.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_debug.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_events.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_interrupts.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_memory.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_miscellaneous.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_mixer.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_phasing_tsst.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_playout_buf.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_remote_debug.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_tlv.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_tone_detection.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_tsi_cnct.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_tsst.o /root/3.3/wanpipe/patches/kdrivers/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_user.o
+/common/wanec/wanec.ko
+/common/wanec/wanec_iface.o /common/wanec/wanec_cmd.o /common/wanec/wanec_utils.o /common/wanec/wanec_dev.o /common/wanec/oct6100_api/apilib/bt/octapi_bt0.o /common/wanec/oct6100_api/apilib/largmath/octapi_largmath.o /common/wanec/oct6100_api/apilib/llman/octapi_llman.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_apimi/oct6100_mask_interrupts.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_adpcm_chan.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_channel.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_open.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_stats.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_conf_bridge.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_debug.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_events.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_interrupts.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_memory.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_miscellaneous.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_mixer.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_phasing_tsst.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_playout_buf.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_remote_debug.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_tlv.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_tone_detection.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_tsi_cnct.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_tsst.o /common/wanec/oct6100_api/octdeviceapi/oct6100api/oct6100_api/oct6100_user.o
diff -dur --exclude='*.svn' --exclude='libsangoma*' --exclude='sangoma_mgd*' wanec/wanec_cmd.c /common/wanec/wanec_cmd.c
--- wanec/wanec_cmd.c 2008-02-04 16:39:27.000000000 -0500
+++ /common/wanec/wanec_cmd.c 2008-03-05 18:11:47.000000000 -0500
@@ -1408,7 +1408,7 @@
"%s: Error Pll Jitter\n",
ec->name);
}
- if (ec->f_InterruptFlag.fErrorH100OutOfSync == TRUE){
+ if (ec->f_InterruptFlag.fErrorH100OutOfSync == TRUE && !ec->ignore_H100){
DEBUG_EVENT(
"%s: The H100 slave has lost its framing on the bus!\n",
ec->name);
Only in /common/wanec: wanec_cmd.o
Only in /common/wanec: .wanec_cmd.o.cmd
Only in /common/wanec: wanec_dev.o
Only in /common/wanec: .wanec_dev.o.cmd
diff -dur --exclude='*.svn' --exclude='libsangoma*' --exclude='sangoma_mgd*' wanec/wanec_iface.c /common/wanec/wanec_iface.c
--- wanec/wanec_iface.c 2008-02-22 11:21:05.000000000 -0500
+++ /common/wanec/wanec_iface.c 2008-03-05 18:11:47.000000000 -0500
@@ -1674,16 +1674,18 @@
ec_dev_new->fe_start_chan = WAN_FE_START_CHANNEL(&card->fe);
ec_dev_new->fe_max_chans = WAN_FE_MAX_CHANNELS(&card->fe); //max_line_no; //
ec_dev_new->fe_stop_chan = ec_dev_new->fe_start_chan + ec_dev_new->fe_max_chans - 1;
-
+ /* Feb 14, 2008
+ ** Ignore fe_port_mask for BRI cards. fe_port_mask is for full card,
+ ** but ec_dev created per module. In this case, we have always
+ ** 2 channels (1 and 2). Create fe_channel_map manually */
if (fe_port_mask && ec_dev_new->fe_media != WAN_MEDIA_BRI){
- ec_dev_new->fe_channel_map = fe_port_mask;
- }else{
- int fe_chan = 0;
- for(fe_chan = ec_dev_new->fe_start_chan; fe_chan <= ec_dev_new->fe_stop_chan; fe_chan++){
- ec_dev_new->fe_channel_map |= (1 << fe_chan);
- }
- }
-
+ ec_dev_new->fe_channel_map = fe_port_mask;
+ }else{
+ int fe_chan = 0;
+ for(fe_chan = ec_dev_new->fe_start_chan; fe_chan <= ec_dev_new->fe_stop_chan; fe_chan++){
+ ec_dev_new->fe_channel_map |= (1 << fe_chan);
+ }
+ }
if (!WAN_FE_TDMV_LAW(&card->fe)){
if (WAN_FE_MEDIA(&card->fe) == WAN_MEDIA_T1){
WAN_FE_TDMV_LAW(&card->fe) = WAN_TDMV_MULAW;
@@ -1948,6 +1950,13 @@
wanec_channel_dtmf(ec_dev, event_ctrl->channel, WAN_FALSE, NULL, wanec_verbose);
}
break;
+ case WAN_EVENT_EC_H100_REPORT:
+ if (event_ctrl->mode == WAN_EVENT_DISABLE){
+ ec->ignore_H100 = 1;
+ }else{
+ ec->ignore_H100 = 0;
+ }
+ break;
default:
err = -EINVAL;
break;
diff -dur --exclude='*.svn' --exclude='libsangoma*' --exclude='sangoma_mgd*' wanec/wanec_iface.h /common/wanec/wanec_iface.h
--- wanec/wanec_iface.h 2008-02-04 16:37:59.000000000 -0500
+++ /common/wanec/wanec_iface.h 2008-03-05 18:11:47.000000000 -0500
@@ -293,6 +293,8 @@
u_int32_t intcount;
u_int32_t critical;
+ int ignore_H100; /* Temporary for BRI card */
+
wan_spinlock_t lock;
u_int32_t events; /* enable events map */
int tone_verbose; /* verbose mode for tone events */
Only in /common/wanec: wanec_iface.o
Only in /common/wanec: .wanec_iface.o.cmd
Only in /common/wanec: wanec.ko
Only in /common/wanec: .wanec.ko.cmd
diff -dur --exclude='*.svn' --exclude='libsangoma*' --exclude='sangoma_mgd*' wanec/wanec.mod.c /common/wanec/wanec.mod.c
--- wanec/wanec.mod.c 2008-02-22 15:56:59.000000000 -0500
+++ /common/wanec/wanec.mod.c 2008-03-05 18:24:45.000000000 -0500
@@ -55,4 +55,4 @@
"depends=";
-MODULE_INFO(srcversion, "7BF6911A99A9CA69B41E9F4");
+MODULE_INFO(srcversion, "A6BF1CF61774AE275ECC9A5");
Only in /common/wanec: wanec.mod.o
Only in /common/wanec: .wanec.mod.o.cmd
Only in /common/wanec: wanec.o
Only in /common/wanec: .wanec.o.cmd
Only in /common/wanec: wanec_utils.o
Only in /common/wanec: .wanec_utils.o.cmd

4
patches/kdrivers/diff.sh Executable file
View File

@ -0,0 +1,4 @@
#!/bin/sh
diff -dur "$1" "$2" --exclude=*.svn --exclude=libsangoma* --exclude=sangoma_mgd* > diff

Binary file not shown.

View File

@ -39,7 +39,7 @@
int a104_global_chip_config(sdla_t *card);
int a104_global_chip_unconfig(sdla_t *card);
int a104_chip_config(sdla_t *card);
int a104_chip_config(sdla_t *card, wandev_conf_t*);
int a104_chip_unconfig(sdla_t *card);
int a104_chan_dev_config(sdla_t *card, void *chan);
int a104_chan_dev_unconfig(sdla_t *card, void *chan);

View File

@ -21,7 +21,7 @@
int aft_analog_global_chip_config(sdla_t *card);
int aft_analog_global_chip_unconfig(sdla_t *card);
int aft_analog_chip_config(sdla_t *card);
int aft_analog_chip_config(sdla_t *card, wandev_conf_t *);
int aft_analog_chip_unconfig(sdla_t *card);
int aft_analog_chan_dev_config(sdla_t *card, void *chan);
int aft_analog_chan_dev_unconfig(sdla_t *card, void *chan);

View File

@ -0,0 +1,55 @@
/*****************************************************************************
* aft_bri.h WANPIPE(tm) BRI Hardware Support
*
* Authors: David Rokhvarg <davidr@sangoma.com>
*
* Copyright: (c) 1984-2007 Sangoma Technologies Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
* ============================================================================
* March 15, 2007 David Rokhvarg Initial version.
*****************************************************************************/
#ifndef _AFT_BRI_H
#define _AFT_BRI_H
#ifdef WAN_KERNEL
#if 0
#define A200_SECURITY_16_ECCHAN 0x00
#define A200_SECURITY_32_ECCHAN 0x01
#define A200_SECURITY_0_ECCHAN 0x05
#define A200_ECCHAN(val) \
((val) == A200_SECURITY_16_ECCHAN) ? 16 : \
((val) == A200_SECURITY_32_ECCHAN) ? 32 : 0
#endif
int aft_bri_global_chip_config(sdla_t *card);
int aft_bri_global_chip_unconfig(sdla_t *card);
int aft_bri_chip_config(sdla_t *card, wandev_conf_t*);
int aft_bri_chip_unconfig(sdla_t *card);
int aft_bri_chan_dev_config(sdla_t *card, void *chan);
int aft_bri_chan_dev_unconfig(sdla_t *card, void *chan);
int aft_bri_led_ctrl(sdla_t *card, int color, int led_pos, int on);
int aft_bri_test_sync(sdla_t *card, int tx_only);
int bri_check_ec_security(sdla_t *card);
int __aft_bri_write_fe (void* card, ...);
int aft_bri_write_fe (void* card, ...);
unsigned char __aft_bri_read_fe (void* card, ...);
unsigned char aft_bri_read_fe (void* card, ...);
int aft_bri_write_cpld(sdla_t *card, unsigned short off,unsigned short data);
unsigned char aft_bri_read_cpld(sdla_t *card, unsigned short cpld_off);
void aft_bri_fifo_adjust(sdla_t *card,u32 level);
int aft_bri_dchan_transmit(sdla_t *card, void *chan_ptr, void *src_data_buffer, unsigned int buffer_len);
int aft_bri_dchan_receive( sdla_t *card, void *chan_ptr, void *dst_data_buffer, unsigned int buffer_len);
#endif/* WAN_KERNEL */
#endif/* _AFT_BRI_H */

View File

@ -219,7 +219,7 @@ enum {
#define WAN_PACKET_FASTROUTE 6 /* Fastrouted frame */
/* X25 specific */
/* AF Socket specific */
#define WAN_PACKET_DATA 0
#define WAN_PACKET_CMD 1
#define WAN_PACKET_ERR 2

View File

@ -1,5 +1,5 @@
/*****************************************************************************
* if_wanipe_common.h Sangoma Driver/Socket common area definitions.
* if_wanpipe_common.h Sangoma Driver/Socket common area definitions.
*
* Author: Nenad Corbic <ncorbic@sangoma.com>
*
@ -29,6 +29,10 @@
# include <linux/wanpipe_common.h>
# include <linux/wanpipe_kernel.h>
# include <linux/if_wanpipe.h>
#elif defined(__WINDOWS__)
# include <wanpipe_debug.h>
# include <wanpipe_common.h>
# include <wanpipe_kernel.h>
#endif
@ -42,13 +46,10 @@ typedef struct {
int (*output) (netdevice_t*,netskb_t*,struct sockaddr*, struct rtentry*);
#else
int (*send) (netskb_t* skb, netdevice_t*);
#endif
struct net_device_stats* (*get_stats) (netdevice_t*);
int (*ioctl) (netdevice_t*, struct ifreq*, int);
void (*tx_timeout) (netdevice_t*);
#if defined (__LINUX__)
int (*change_mtu)(netdevice_t *dev, int new_mtu);
#endif
int (*ioctl) (netdevice_t*, struct ifreq*, wan_ioctl_cmd_t);
void (*tx_timeout) (netdevice_t*);
} wanpipe_common_iface_t;
typedef struct {
@ -58,20 +59,41 @@ typedef struct {
/* netdevice_t *next; */ /* netdevice_t *slave; */
void *card;
netdevice_t *dev;
struct mtx ifmtx;
unsigned char state;
unsigned char usedby;
wan_tasklet_t bh_task;
wan_timer_t dev_timer;
struct socket *sk; /* Wanpipe Sock bind's here (Not used)*/
unsigned int protocol;
unsigned short lcn;
unsigned short lcn;
void *lip;
unsigned int lip_prot;
int is_spppdev; /* special mode for ADSL PPP_VC/PPP_LLC */
# if defined(NETGRAPH)
char ng_nodename [NG_NODELEN+1];
int ng_running;
node_p ng_node;
hook_p ng_upper_hook;
hook_p ng_lower_hook;
hook_p ng_debug_hook;
int ng_lowerhooks;
int ng_upperhooks;
int ng_datahooks;
struct ifqueue lo_queue;
struct ifqueue hi_queue;
short ng_timeout;
struct callout ng_timeout_handle;
u_long ng_out_deficit; /* output since last input */
u_char ng_promisc; /* promiscuous mode enabled */
u_char ng_autoSrcAddr; /* always overwrite source address */
# endif
#elif defined(__LINUX__)
/* !!! IMPORTANT !!! <- Do not move this parameter (GENERIC-PPP) */
void* *prot_ptr;
netdevice_t *next; /*slave;*/
void *card;
struct net_device_stats if_stats;
atomic_t receive_block;
atomic_t command;
@ -99,6 +121,26 @@ typedef struct {
void *lip;
unsigned int lip_prot;
#elif defined(__WINDOWS__)
void *prot_ptr;
netdevice_t* dev;
unsigned char state;
unsigned char usedby;
void *card;
void* sk;
void *lip;
//A104 additions
unsigned int protocol;
wan_tasklet_t bh_task;
//ADSL additions
wan_tasklet_t wanpipe_task; /* Immediate BH handler task */
unsigned int lip_prot;
#endif
int is_netdev;
wanpipe_common_iface_t iface;

View File

@ -103,7 +103,7 @@ typedef struct {
} sdla_56k_param_t;
extern int sdla_56k_default_cfg(void* arg1, void* p56k_cfg);
extern int sdla_56k_iface_init(void* pfe);
extern int sdla_56k_iface_init(void* pfe, void *p_fe_iface);
#endif /* WAN_KERNEL */

View File

@ -27,6 +27,7 @@
*/
#pragma pack(1)
/****** CONSTANTS DEFINITIONS ***********************************************/
#define X25_MAX_CHAN 255 /* max number of open X.25 circuits */
@ -54,16 +55,16 @@
*/
typedef struct X25Cmd
{
unsigned char command ; /* command code */
unsigned short length ; /* transfer data length */
unsigned char result ; /* return code */
unsigned char pf ; /* P/F bit */
unsigned short lcn ; /* logical channel */
unsigned char qdm ; /* Q/D/M bits */
unsigned char cause ; /* cause field */
unsigned char diagn ; /* diagnostics */
unsigned char pktType ; /* packet type */
unsigned char resrv[4] ; /* reserved */
unsigned char command ; /* command code */
unsigned short length ; /* transfer data length */
unsigned char result ; /* return code */
unsigned char pf ; /* P/F bit */
unsigned short lcn ; /* logical channel */
unsigned char qdm ; /* Q/D/M bits */
unsigned char cause ; /* cause field */
unsigned char diagn ; /* diagnostics */
unsigned char pktType ; /* packet type */
unsigned char resrv[4] ; /* reserved */
} TX25Cmd;
/*
@ -226,9 +227,9 @@ typedef struct X25Cmd
*/
typedef struct X25Mbox
{
unsigned char opflag ; /* 00h: execution flag */
TX25Cmd cmd ; /* 01h: command block */
unsigned char data[1] ; /* 10h: data buffer */
unsigned char opflag ; /* 00h: execution flag */
TX25Cmd cmd ; /* 01h: command block */
unsigned char data[1] ; /* 10h: data buffer */
} TX25Mbox;
/*----------------------------------------------------------------------------
@ -236,11 +237,11 @@ typedef struct X25Mbox
*/
typedef struct X25TimeStamp
{
unsigned char month ;
unsigned char date ;
unsigned char sec ;
unsigned char min ;
unsigned char hour ;
unsigned char month ;
unsigned char date ;
unsigned char sec ;
unsigned char min ;
unsigned char hour ;
} TX25TimeStamp;
/*----------------------------------------------------------------------------
@ -250,11 +251,11 @@ typedef struct X25TimeStamp
*/
typedef struct X25Status
{
TX25TimeStamp tstamp ; /* 08h: timestamp (BCD) */
unsigned char iflags ; /* 0Dh: interrupt flags */
unsigned char imask ; /* 0Eh: interrupt mask */
unsigned char hdlc_status ; /* 10h: misc. HDLC/X25 flags */
unsigned char ghdlc_status ; /* channel status bytes */
TX25TimeStamp tstamp ; /* 08h: timestamp (BCD) */
unsigned char iflags ; /* 0Dh: interrupt flags */
unsigned char imask ; /* 0Eh: interrupt mask */
unsigned char hdlc_status ; /* 10h: misc. HDLC/X25 flags */
unsigned char ghdlc_status ; /* channel status bytes */
} TX25Status;
/*
@ -292,9 +293,9 @@ typedef struct X25Status
*/
typedef struct X25GlobalVars
{
unsigned char resrv ; /* 00h: reserved */
unsigned char dtrCtl ; /* 01h: DTR control code */
unsigned char resErr ; /* 01h: '1' - reset modem error */
unsigned char resrv ; /* 00h: reserved */
unsigned char dtrCtl ; /* 01h: DTR control code */
unsigned char resErr ; /* 01h: '1' - reset modem error */
} TX25GlobalVars;
/*
@ -308,7 +309,7 @@ typedef struct X25GlobalVars
*/
typedef struct X25ModemStatus
{
unsigned char status ; /* 00h: modem status */
unsigned char status ; /* 00h: modem status */
} TX25ModemStatus;
/*
@ -322,11 +323,11 @@ typedef struct X25ModemStatus
*/
typedef struct X25LinkStatus
{
unsigned char txQueued ; /* 00h: queued Tx I-frames*/
unsigned char rxQueued ; /* 01h: queued Rx I-frames*/
unsigned char station ; /* 02h: DTE/DCE config. */
unsigned char reserved ; /* 03h: reserved */
unsigned char sfTally ; /* 04h: supervisory frame tally */
unsigned char txQueued ; /* 00h: queued Tx I-frames*/
unsigned char rxQueued ; /* 01h: queued Rx I-frames*/
unsigned char station ; /* 02h: DTE/DCE config. */
unsigned char reserved ; /* 03h: reserved */
unsigned char sfTally ; /* 04h: supervisory frame tally */
} TX25LinkStatus;
/*
@ -340,23 +341,23 @@ typedef struct X25LinkStatus
*/
typedef struct HdlcStats
{ /* a number of ... */
unsigned short rxIFrames ; /* 00h: ready Rx I-frames */
unsigned short rxNoseq ; /* 02h: frms out-of-sequence */
unsigned short rxNodata ; /* 04h: I-frms without data */
unsigned short rxDiscarded ; /* 06h: discarded frames */
unsigned short rxTooLong ; /* 08h: frames too long */
unsigned short rxBadAddr ; /* 0Ah: frms with inval.addr*/
unsigned short txAcked ; /* 0Ch: acknowledged I-frms */
unsigned short txRetransm ; /* 0Eh: re-transmit. I-frms */
unsigned short t1Timeout ; /* 10h: T1 timeouts */
unsigned short rxSABM ; /* 12h: received SABM frames */
unsigned short rxDISC ; /* 14h: received DISC frames */
unsigned short rxDM ; /* 16h: received DM frames */
unsigned short rxFRMR ; /* 18h: FRMR frames received */
unsigned short txSABM ; /* 1Ah: transm. SABM frames*/
unsigned short txDISC ; /* 1Ch: transm. DISC frames*/
unsigned short txDM ; /* 1Eh: transm. DM frames */
unsigned short txFRMR ; /* 20h: transm. FRMR frames*/
unsigned short rxIFrames ; /* 00h: ready Rx I-frames */
unsigned short rxNoseq ; /* 02h: frms out-of-sequence */
unsigned short rxNodata ; /* 04h: I-frms without data */
unsigned short rxDiscarded ; /* 06h: discarded frames */
unsigned short rxTooLong ; /* 08h: frames too long */
unsigned short rxBadAddr ; /* 0Ah: frms with inval.addr*/
unsigned short txAcked ; /* 0Ch: acknowledged I-frms */
unsigned short txRetransm ; /* 0Eh: re-transmit. I-frms */
unsigned short t1Timeout ; /* 10h: T1 timeouts */
unsigned short rxSABM ; /* 12h: received SABM frames */
unsigned short rxDISC ; /* 14h: received DISC frames */
unsigned short rxDM ; /* 16h: received DM frames */
unsigned short rxFRMR ; /* 18h: FRMR frames received */
unsigned short txSABM ; /* 1Ah: transm. SABM frames*/
unsigned short txDISC ; /* 1Ch: transm. DISC frames*/
unsigned short txDM ; /* 1Eh: transm. DM frames */
unsigned short txFRMR ; /* 20h: transm. FRMR frames*/
} THdlcStats;
/* ---------------------------------------------------------------------------
@ -364,16 +365,16 @@ typedef struct HdlcStats
*/
typedef struct HdlcCommErr
{ /* a number of ... */
unsigned char rxOverrun ; /* 00h: Rx overrun errors */
unsigned char rxBadCrc ; /* 01h: Rx CRC errors */
unsigned char rxAborted ; /* 02h: Rx aborted frames */
unsigned char rxDropped ; /* 03h: frames lost */
unsigned char txAborted ; /* 04h: Tx aborted frames */
unsigned char txUnderrun ; /* 05h: Tx underrun errors */
unsigned char txMissIntr ; /* 06h: missed underrun ints */
unsigned char reserved ; /* 07h: reserved */
unsigned char droppedDCD ; /* 08h: times DCD dropped */
unsigned char droppedCTS ; /* 09h: times CTS dropped */
unsigned char rxOverrun ; /* 00h: Rx overrun errors */
unsigned char rxBadCrc ; /* 01h: Rx CRC errors */
unsigned char rxAborted ; /* 02h: Rx aborted frames */
unsigned char rxDropped ; /* 03h: frames lost */
unsigned char txAborted ; /* 04h: Tx aborted frames */
unsigned char txUnderrun ; /* 05h: Tx underrun errors */
unsigned char txMissIntr ; /* 06h: missed underrun ints */
unsigned char reserved ; /* 07h: reserved */
unsigned char droppedDCD ; /* 08h: times DCD dropped */
unsigned char droppedCTS ; /* 09h: times CTS dropped */
} THdlcCommErr;
/* ---------------------------------------------------------------------------
@ -381,47 +382,47 @@ typedef struct HdlcCommErr
*/
typedef struct X25Config
{
unsigned char baudRate ; /* 00h: */
unsigned char t1 ; /* 01h: */
unsigned char t2 ; /* 02h: */
unsigned char n2 ; /* 03h: */
unsigned short hdlcMTU ; /* 04h: */
unsigned char hdlcWindow ; /* 06h: */
unsigned char t4 ; /* 07h: */
unsigned char autoModem ; /* 08h: */
unsigned char autoHdlc ; /* 09h: */
unsigned char hdlcOptions ; /* 0Ah: */
unsigned char station ; /* 0Bh: */
unsigned char local_station_address ;
unsigned char baudRate ; /* 00h: */
unsigned char t1 ; /* 01h: */
unsigned char t2 ; /* 02h: */
unsigned char n2 ; /* 03h: */
unsigned short hdlcMTU ; /* 04h: */
unsigned char hdlcWindow ; /* 06h: */
unsigned char t4 ; /* 07h: */
unsigned char autoModem ; /* 08h: */
unsigned char autoHdlc ; /* 09h: */
unsigned char hdlcOptions ; /* 0Ah: */
unsigned char station ; /* 0Bh: */
unsigned char local_station_address ;
#if 0
unsigned char pktWindow ; /* 0Ch: */
unsigned short defPktSize ; /* 0Dh: */
unsigned short pktMTU ; /* 0Fh: */
unsigned short loPVC ; /* 11h: */
unsigned short hiPVC ; /* 13h: */
unsigned short loIncommingSVC ; /* 15h: */
unsigned short hiIncommingSVC ; /* 17h: */
unsigned short loTwoWaySVC ; /* 19h: */
unsigned short hiTwoWaySVC ; /* 1Bh: */
unsigned short loOutgoingSVC ; /* 1Dh: */
unsigned short hiOutgoingSVC ; /* 1Fh: */
unsigned short options ; /* 21h: */
unsigned char responseOpt ; /* 23h: */
unsigned short facil1 ; /* 24h: */
unsigned short facil2 ; /* 26h: */
unsigned short ccittFacil ; /* 28h: */
unsigned short otherFacil ; /* 2Ah: */
unsigned short ccittCompat ; /* 2Ch: */
unsigned char t10t20 ; /* 2Eh: */
unsigned char t11t21 ; /* 2Fh: */
unsigned char t12t22 ; /* 30h: */
unsigned char t13t23 ; /* 31h: */
unsigned char t16t26 ; /* 32H: */
unsigned char t28 ; /* 33h: */
unsigned char r10r20 ; /* 34h: */
unsigned char r12r22 ; /* 35h: */
unsigned char r13r23 ; /* 36h: */
unsigned char pktWindow ; /* 0Ch: */
unsigned short defPktSize ; /* 0Dh: */
unsigned short pktMTU ; /* 0Fh: */
unsigned short loPVC ; /* 11h: */
unsigned short hiPVC ; /* 13h: */
unsigned short loIncommingSVC ; /* 15h: */
unsigned short hiIncommingSVC ; /* 17h: */
unsigned short loTwoWaySVC ; /* 19h: */
unsigned short hiTwoWaySVC ; /* 1Bh: */
unsigned short loOutgoingSVC ; /* 1Dh: */
unsigned short hiOutgoingSVC ; /* 1Fh: */
unsigned short options ; /* 21h: */
unsigned char responseOpt ; /* 23h: */
unsigned short facil1 ; /* 24h: */
unsigned short facil2 ; /* 26h: */
unsigned short ccittFacil ; /* 28h: */
unsigned short otherFacil ; /* 2Ah: */
unsigned short ccittCompat ; /* 2Ch: */
unsigned char t10t20 ; /* 2Eh: */
unsigned char t11t21 ; /* 2Fh: */
unsigned char t12t22 ; /* 30h: */
unsigned char t13t23 ; /* 31h: */
unsigned char t16t26 ; /* 32H: */
unsigned char t28 ; /* 33h: */
unsigned char r10r20 ; /* 34h: */
unsigned char r12r22 ; /* 35h: */
unsigned char r13r23 ; /* 36h: */
#endif
} TX25Config;
@ -431,21 +432,21 @@ typedef struct X25Config
*/
typedef struct X25ChanAlloc /*----- Channel allocation -*/
{
unsigned short loPVC ; /* 00h: lowest PVC number */
unsigned short hiPVC ; /* 02h: highest PVC number */
unsigned short loIncommingSVC ; /* 04h: lowest incoming SVC */
unsigned short hiIncommingSVC ; /* 06h: highest incoming SVC */
unsigned short loTwoWaySVC ; /* 08h: lowest two-way SVC */
unsigned short hiTwoWaySVC ; /* 0Ah: highest two-way SVC */
unsigned short loOutgoingSVC ; /* 0Ch: lowest outgoing SVC */
unsigned short hiOutgoingSVC ; /* 0Eh: highest outgoing SVC */
unsigned short loPVC ; /* 00h: lowest PVC number */
unsigned short hiPVC ; /* 02h: highest PVC number */
unsigned short loIncommingSVC ; /* 04h: lowest incoming SVC */
unsigned short hiIncommingSVC ; /* 06h: highest incoming SVC */
unsigned short loTwoWaySVC ; /* 08h: lowest two-way SVC */
unsigned short hiTwoWaySVC ; /* 0Ah: highest two-way SVC */
unsigned short loOutgoingSVC ; /* 0Ch: lowest outgoing SVC */
unsigned short hiOutgoingSVC ; /* 0Eh: highest outgoing SVC */
} TX25ChanAlloc;
typedef struct X25ChanCfg /*------ Channel configuration -----*/
{
unsigned char type ; /* 00h: channel type */
unsigned char txConf ; /* 01h: Tx packet and window sizes */
unsigned char rxConf ; /* 01h: Rx packet and window sizes */
unsigned char type ; /* 00h: channel type */
unsigned char txConf ; /* 01h: Tx packet and window sizes */
unsigned char rxConf ; /* 01h: Rx packet and window sizes */
} TX25ChanCfg;
/*
@ -461,38 +462,38 @@ typedef struct X25ChanCfg /*------ Channel configuration -----*/
*/
typedef struct X25Stats
{ /* number of packets Tx/Rx'ed */
unsigned short txRestartRqst ; /* 00h: Restart Request */
unsigned short rxRestartRqst ; /* 02h: Restart Request */
unsigned short txRestartConf ; /* 04h: Restart Confirmation */
unsigned short rxRestartConf ; /* 06h: Restart Confirmation */
unsigned short txResetRqst ; /* 08h: Reset Request */
unsigned short rxResetRqst ; /* 0Ah: Reset Request */
unsigned short txResetConf ; /* 0Ch: Reset Confirmation */
unsigned short rxResetConf ; /* 0Eh: Reset Confirmation */
unsigned short txCallRequest ; /* 10h: Call Request */
unsigned short rxCallRequest ; /* 12h: Call Request */
unsigned short txCallAccept ; /* 14h: Call Accept */
unsigned short rxCallAccept ; /* 16h: Call Accept */
unsigned short txClearRqst ; /* 18h: Clear Request */
unsigned short rxClearRqst ; /* 1Ah: Clear Request */
unsigned short txClearConf ; /* 1Ch: Clear Confirmation */
unsigned short rxClearConf ; /* 1Eh: Clear Confirmation */
unsigned short txDiagnostic ; /* 20h: Diagnostic */
unsigned short rxDiagnostic ; /* 22h: Diagnostic */
unsigned short txRegRqst ; /* 24h: Registration Request */
unsigned short rxRegRqst ; /* 26h: Registration Request */
unsigned short txRegConf ; /* 28h: Registration Confirm.*/
unsigned short rxRegConf ; /* 2Ah: Registration Confirm.*/
unsigned short txInterrupt ; /* 2Ch: Interrupt */
unsigned short rxInterrupt ; /* 2Eh: Interrupt */
unsigned short txIntrConf ; /* 30h: Interrupt Confirm. */
unsigned short rxIntrConf ; /* 32h: Interrupt Confirm. */
unsigned short txData ; /* 34h: Data */
unsigned short rxData ; /* 36h: Data */
unsigned short txRR ; /* 38h: RR */
unsigned short rxRR ; /* 3Ah: RR */
unsigned short txRNR ; /* 3Ch: RNR */
unsigned short rxRNR ; /* 3Eh: RNR */
unsigned short txRestartRqst ; /* 00h: Restart Request */
unsigned short rxRestartRqst ; /* 02h: Restart Request */
unsigned short txRestartConf ; /* 04h: Restart Confirmation */
unsigned short rxRestartConf ; /* 06h: Restart Confirmation */
unsigned short txResetRqst ; /* 08h: Reset Request */
unsigned short rxResetRqst ; /* 0Ah: Reset Request */
unsigned short txResetConf ; /* 0Ch: Reset Confirmation */
unsigned short rxResetConf ; /* 0Eh: Reset Confirmation */
unsigned short txCallRequest ; /* 10h: Call Request */
unsigned short rxCallRequest ; /* 12h: Call Request */
unsigned short txCallAccept ; /* 14h: Call Accept */
unsigned short rxCallAccept ; /* 16h: Call Accept */
unsigned short txClearRqst ; /* 18h: Clear Request */
unsigned short rxClearRqst ; /* 1Ah: Clear Request */
unsigned short txClearConf ; /* 1Ch: Clear Confirmation */
unsigned short rxClearConf ; /* 1Eh: Clear Confirmation */
unsigned short txDiagnostic ; /* 20h: Diagnostic */
unsigned short rxDiagnostic ; /* 22h: Diagnostic */
unsigned short txRegRqst ; /* 24h: Registration Request */
unsigned short rxRegRqst ; /* 26h: Registration Request */
unsigned short txRegConf ; /* 28h: Registration Confirm.*/
unsigned short rxRegConf ; /* 2Ah: Registration Confirm.*/
unsigned short txInterrupt ; /* 2Ch: Interrupt */
unsigned short rxInterrupt ; /* 2Eh: Interrupt */
unsigned short txIntrConf ; /* 30h: Interrupt Confirm. */
unsigned short rxIntrConf ; /* 32h: Interrupt Confirm. */
unsigned short txData ; /* 34h: Data */
unsigned short rxData ; /* 36h: Data */
unsigned short txRR ; /* 38h: RR */
unsigned short rxRR ; /* 3Ah: RR */
unsigned short txRNR ; /* 3Ch: RNR */
unsigned short rxRNR ; /* 3Eh: RNR */
} TX25Stats;
/*----------------------------------------------------------------------------
@ -500,12 +501,12 @@ typedef struct X25Stats
*/
typedef struct X25EventLog
{
unsigned char type ; /* 00h: transaction type */
unsigned short lcn ; /* 01h: logical channel num */
unsigned char packet ; /* 03h: async packet type */
unsigned char cause ; /* 04h: X.25 cause field */
unsigned char diag ; /* 05h: X.25 diag field */
TX25TimeStamp ts ; /* 06h: time stamp */
unsigned char type ; /* 00h: transaction type */
unsigned short lcn ; /* 01h: logical channel num */
unsigned char packet ; /* 03h: async packet type */
unsigned char cause ; /* 04h: X.25 cause field */
unsigned char diag ; /* 05h: X.25 diag field */
TX25TimeStamp ts ; /* 06h: time stamp */
} TX25EventLog;
/*
@ -538,8 +539,8 @@ typedef struct X25EventLog
*/
typedef struct X25TraceCfg
{
unsigned char flags ; /* 00h: trace configuration flags */
unsigned char timeout ; /* 01h: timeout for trace delay mode*/
unsigned char flags ; /* 00h: trace configuration flags */
unsigned char timeout ; /* 01h: timeout for trace delay mode*/
} TX25TraceCfg;
/*
@ -559,12 +560,12 @@ typedef struct X25TraceCfg
*/
typedef struct X25Trace /*----- Trace data structure -------*/
{
unsigned short length ; /* 00h: trace data length */
unsigned char type ; /* 02h: trace type */
unsigned char lost_cnt ; /* 03h: N of traces lost */
TX25TimeStamp tstamp ; /* 04h: mon/date/sec/min/hour */
unsigned short millisec ; /* 09h: ms time stamp */
unsigned char data[0] ; /* 0Bh: traced frame */
unsigned short length ; /* 00h: trace data length */
unsigned char type ; /* 02h: trace type */
unsigned char lost_cnt ; /* 03h: N of traces lost */
TX25TimeStamp tstamp ; /* 04h: mon/date/sec/min/hour */
unsigned short millisec ; /* 09h: ms time stamp */
unsigned char data[0] ; /* 0Bh: traced frame */
} TX25Trace;
/*
@ -589,17 +590,17 @@ typedef struct X25Trace /*----- Trace data structure -------*/
typedef struct HDLCFrame /*----- DHLC Frame Format ----------*/
{
unsigned char addr ; /* address field */
unsigned char cntl ; /* control field */
unsigned char data[0] ;
unsigned char addr ; /* address field */
unsigned char cntl ; /* control field */
unsigned char data[0] ;
} THDLCFrame;
typedef struct X25Pkt /*----- X.25 Paket Format ----------*/
{
unsigned char lcn_hi ; /* 4 MSB of Logical Channel Number */
unsigned char lcn_lo ; /* 8 LSB of Logical Channel Number */
unsigned char type ;
unsigned char data[0] ;
unsigned char lcn_hi ; /* 4 MSB of Logical Channel Number */
unsigned char lcn_lo ; /* 8 LSB of Logical Channel Number */
unsigned char type ;
unsigned char data[0] ;
} TX25Pkt;
/*
@ -633,27 +634,27 @@ typedef struct X25Pkt /*----- X.25 Paket Format ----------*/
typedef struct {
TX25Cmd cmd ;
char data[X25_MAX_DATA] ;
TX25Cmd cmd ;
char data[X25_MAX_DATA] ;
} mbox_cmd_t;
#if 0
typedef struct {
unsigned char qdm ; /* Q/D/M bits */
unsigned char cause ; /* cause field */
unsigned char diagn ; /* diagnostics */
unsigned char pktType ;
unsigned short length ;
unsigned char result ;
unsigned short lcn ;
char reserved[7] ;
unsigned char qdm ; /* Q/D/M bits */
unsigned char cause ; /* cause field */
unsigned char diagn ; /* diagnostics */
unsigned char pktType ;
unsigned short length ;
unsigned char result ;
unsigned short lcn ;
char reserved[7] ;
}x25api_hdr_t;
typedef struct {
x25api_hdr_t hdr ;
char data[X25_MAX_DATA] ;
x25api_hdr_t hdr ;
char data[X25_MAX_DATA] ;
}x25api_t;
#endif
@ -673,75 +674,72 @@ typedef struct {
#if 0
typedef struct {
unsigned char opp_flag ; /* the opp flag */
unsigned char command ; /* command code */
unsigned short length ; /* transfer data length */
unsigned char result ; /* return code */
unsigned char pf ; /* P/F bit */
unsigned short lcn ; /* logical channel */
unsigned char qdm ; /* Q/D/M bits */
unsigned char cause ; /* cause field */
unsigned char diagn ; /* diagnostics */
unsigned char pktType ; /* packet type */
unsigned char resrv[4] ; /* reserved */
unsigned char opp_flag ; /* the opp flag */
unsigned char command ; /* command code */
unsigned short length ; /* transfer data length */
unsigned char result ; /* return code */
unsigned char pf ; /* P/F bit */
unsigned short lcn ; /* logical channel */
unsigned char qdm ; /* Q/D/M bits */
unsigned char cause ; /* cause field */
unsigned char diagn ; /* diagnostics */
unsigned char pktType ; /* packet type */
unsigned char resrv[4] ; /* reserved */
} cblock_t;
typedef struct {
ip_pkt_t ip_pkt ;
udp_pkt_t udp_pkt ;
wp_mgmt_t wp_mgmt ;
cblock_t cblock ;
unsigned char data[4080] ;
ip_pkt_t ip_pkt ;
udp_pkt_t udp_pkt ;
wp_mgmt_t wp_mgmt ;
cblock_t cblock ;
unsigned char data[4080] ;
} x25_udp_pkt_t;
#endif
typedef struct read_hdlc_stat {
unsigned short inf_frames_rx_ok ;
unsigned short inf_frames_rx_out_of_seq ;
unsigned short inf_frames_rx_no_data ;
unsigned short inf_frames_rx_dropped ;
unsigned short inf_frames_rx_data_too_long ;
unsigned short inf_frames_rx_invalid_addr ;
unsigned short inf_frames_tx_ok ;
unsigned short inf_frames_tx_retransmit ;
unsigned short T1_timeouts ;
unsigned short SABM_frames_rx ;
unsigned short DISC_frames_rx ;
unsigned short DM_frames_rx ;
unsigned short FRMR_frames_rx ;
unsigned short SABM_frames_tx ;
unsigned short DISC_frames_tx ;
unsigned short DM_frames_tx ;
unsigned short FRMR_frames_tx ;
unsigned short inf_frames_rx_ok ;
unsigned short inf_frames_rx_out_of_seq ;
unsigned short inf_frames_rx_no_data ;
unsigned short inf_frames_rx_dropped ;
unsigned short inf_frames_rx_data_too_long ;
unsigned short inf_frames_rx_invalid_addr ;
unsigned short inf_frames_tx_ok ;
unsigned short inf_frames_tx_retransmit ;
unsigned short T1_timeouts ;
unsigned short SABM_frames_rx ;
unsigned short DISC_frames_rx ;
unsigned short DM_frames_rx ;
unsigned short FRMR_frames_rx ;
unsigned short SABM_frames_tx ;
unsigned short DISC_frames_tx ;
unsigned short DM_frames_tx ;
unsigned short FRMR_frames_tx ;
} read_hdlc_stat_t;
typedef struct read_comms_err_stats{
unsigned char overrun_err_rx ;
unsigned char CRC_err ;
unsigned char abort_frames_rx ;
unsigned char frames_dropped_buf_full ;
unsigned char abort_frames_tx ;
unsigned char transmit_underruns ;
unsigned char missed_tx_underruns_intr ;
unsigned char reserved ;
unsigned char DCD_drop ;
unsigned char CTS_drop ;
unsigned char overrun_err_rx ;
unsigned char CRC_err ;
unsigned char abort_frames_rx ;
unsigned char frames_dropped_buf_full ;
unsigned char abort_frames_tx ;
unsigned char transmit_underruns ;
unsigned char missed_tx_underruns_intr ;
unsigned char reserved ;
unsigned char DCD_drop ;
unsigned char CTS_drop ;
} read_comms_err_stats_t;
typedef struct trace_data {
unsigned short length ;
unsigned char type ;
unsigned char trace_dropped ;
unsigned char reserved[5] ;
unsigned short timestamp ;
unsigned char data ;
unsigned short length ;
unsigned char type ;
unsigned char trace_dropped ;
unsigned char reserved[5] ;
unsigned short timestamp ;
unsigned char data ;
} trace_data_t;
enum {UDP_XPIPE_TYPE};
#pragma pack()
#define XPIPE_ENABLE_TRACING 0x14
#define XPIPE_DISABLE_TRACING 0x14
#define XPIPE_GET_TRACE_INFO 0x16
@ -770,5 +768,6 @@ enum {UDP_XPIPE_TYPE};
#define TRACE_ALL_HDLC_FRMS 0x40
#define TRACE_DATA_FRMS 0x08
#pragma pack()
#endif /* _SDLA_X25_H */

View File

@ -2,7 +2,7 @@
* Copyright (c) 2002
* Alex Feldman <al.feldman@sangoma.com>. All rights reserved.
*
* $Id: sdla_adsl.h,v 1.8 2006/07/25 19:44:50 sangoma Exp $
* $Id: sdla_adsl.h,v 1.9 2008/01/09 17:45:29 sangoma Exp $
*/
/*************************************************************************
@ -24,6 +24,8 @@
#if defined(__FreeBSD__) || defined(__OpenBSD__)
# include <sdla_adsl_iface.h>
#elif defined(__WINDOWS__)
# include <sdla_adsl_iface.h>
#elif defined(__LINUX__) || defined(__KERNEL__)
# include <linux/sdla_adsl_iface.h>
#elif defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
@ -65,10 +67,12 @@ typedef struct adsl_cfg {
unsigned char adsl_selected_standard;
} adsl_cfg_t;
#if !defined(__WINDOWS__)
#undef wan_udphdr_data
#define wan_udphdr_data wan_udphdr_adsl_data
#undef wan_udp_data
#define wan_udp_data wan_udp_hdr.wan_udphdr_adsl_data
#endif
#ifdef WAN_KERNEL
@ -88,6 +92,13 @@ typedef struct adsl_private_area
#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
struct ifmedia media; /* media information */
#endif
#if defined(__WINDOWS__)
void *sdla_net_dev;
void *card;
struct net_device_stats if_stats;
wan_tasklet_t adsl_if_send_task; /* Immediate BH handler task */
wan_trace_t trace_info;
#endif
} adsl_private_area_t;

View File

@ -32,6 +32,8 @@
#define ADSL_ACTUAL_CONFIGURATION 0x15
#define ADSL_ACTUAL_INTERLEAVE_STATUS 0x16
#define ADSL_ATM_CELL_COUNTER 0x17
#define ADSL_EEPROM_WRITE 0x18
#define ADSL_EEPROM_READ 0x19
typedef struct adsl_failures

View File

@ -25,10 +25,19 @@
#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
# include <aft_a104.h>
# include <aft_analog.h>
#elif defined(__WINDOWS__)
# include <wanpipe_tdm_api.h>
# include <aft_a104.h>
# include <aft_analog.h>
# include <aft_bri.h>
# define COMPILE_COMMON_PRIVATE_AREA
# include <sdladrv_private.h>
# define AFT_MAX_CHIP_SECURITY_CNT 100
#else
# include <linux/wanpipe_tdm_api.h>
# include <linux/aft_a104.h>
# include <linux/aft_analog.h>
# include <linux/aft_bri.h>
#endif
#define AFT_PORT0_OFFSET 0x00000
@ -79,6 +88,7 @@
# define AFT_CHIPCFG_TE1_CFG_BIT 0
# define AFT_CHIPCFG_56K_CFG_BIT 0
# define AFT_CHIPCFG_ANALOG_CLOCK_SELECT_BIT 0
# define AFT_CHIPCFG_A500_NET_SYNC_CLOCK_SELECT_BIT 0
# define AFT_CHIPCFG_SFR_EX_BIT 1
# define AFT_CHIPCFG_SFR_IN_BIT 2
# define AFT_CHIPCFG_FE_INTR_CFG_BIT 3
@ -101,12 +111,26 @@
# define AFT_CHIPCFG_ANALOG_INTR_MASK 0x0F /* Analog */
# define AFT_CHIPCFG_ANALOG_INTR_SHIFT 9
# define AFT_CHIPCFG_A500_INTR_MASK 0x0F /* A500 BRI - interrupt pending from upto 4 remoras.
bit 9 - remora 1
bit 10- remora 2
bit 11- remora 3
bit 12- remora 4
*/
# define AFT_CHIPCFG_A500_INTR_SHIFT 9
# define A500_LINE_SYNC_MASTER_BIT 31
# define AFT_CHIPCFG_A108_EC_CLOCK_SRC_MASK 0x07 /* A108 */
# define AFT_CHIPCFG_A108_EC_CLOCK_SRC_SHIFT 9
# define AFT_CHIPCFG_A104D_EC_SECURITY_BIT 12
# define AFT_CHIPCFG_A108_EC_INTR_ENABLE_BIT 12 /* A108 */
# define AFT_CHIPCFG_A500_EC_INTR_ENABLE_BIT 14 /* A500 - BRI not used for now */
# define AFT_CHIPCFG_EC_INTR_STAT_BIT 13
@ -122,6 +146,7 @@
# define AFT_CHIPCFG_A200_EC_SECURITY_BIT 15 /* Analog */
# define AFT_CHIPCFG_A108_EC_SECURITY_BIT 15 /* A108 */
# define AFT_CHIPCFG_A500_EC_SECURITY_BIT 15 /* A500/BRI */
# define AFT_CHIPCFG_P3_TDMV_INTR_BIT 16
# define AFT_CHIPCFG_A108_A104_TDM_FIFO_SYNC_BIT 16 /* A108 Global Fifo Sync Bit */
@ -225,12 +250,16 @@ aft_chipcfg_get_tdmv_intr_stats(u32 reg)
# define AFT_CHIPCFG_A108_TDMV_INTR_MASK 0xFF
# define AFT_CHIPCFG_A108_TDMV_INTR_SHIFT 8
# define AFT_CHIPCFG_A108_FIFO_INTR_MASK 0xFF
# define AFT_CHIPCFG_A108_FIFO_INTR_SHIFT 16
# define AFT_CHIPCFG_A108_DMA_INTR_MASK 0xFF
# define AFT_CHIPCFG_A108_DMA_INTR_SHIFT 24
/* A108 Interrupt Status Functions */
static __inline u32
@ -265,6 +294,46 @@ aft_chipcfg_a108_get_tdmv_intr_stats(u32 reg)
return reg;
}
/* AFT Serial specific bits */
# define AFT_CHIPCFG_SERIAL_WDT_INTR_MASK 0xF
# define AFT_CHIPCFG_SERIAL_WDT_INTR_SHIFT 0
# define AFT_CHIPCFG_SERIAL_STATUS_INTR_MASK 0xFFF
# define AFT_CHIPCFG_SERIAL_STATUS_INTR_SHIFT 4
# define AFT_CHIPCFG_SERIAL_CTS_STATUS_INTR_BIT 0
# define AFT_CHIPCFG_SERIAL_DCD_STATUS_INTR_BIT 1
# define AFT_CHIPCFG_SERIAL_RTS_STATUS_INTR_BIT 2
/* Serial specific functions */
static __inline u32
aft_chipcfg_serial_get_status_intr_stats(u32 reg, int port)
{
reg=reg>>AFT_CHIPCFG_SERIAL_STATUS_INTR_SHIFT;
reg&=AFT_CHIPCFG_SERIAL_STATUS_INTR_MASK;
if (port) {
port--;
}
reg=(reg>>(3*port))&0x07;
return reg;
}
static __inline u32
aft_chipcfg_serial_get_wdt_intr_stats(u32 reg)
{
reg=reg>>AFT_CHIPCFG_SERIAL_WDT_INTR_SHIFT;
reg&=AFT_CHIPCFG_SERIAL_WDT_INTR_MASK;
return reg;
}
/* 56k IRQ status bits */
# define AFT_CHIPCFG_A56K_WDT_INTR_BIT 0
# define AFT_CHIPCFG_A56K_DMA_INTR_BIT 24
@ -382,10 +451,20 @@ aft_fifo_mark_gset(u32 *reg, u8 mark)
}
/*======================================================
* PER PORT
*
* AFT INTERRUPT Configuration Registers
* AFT AFT_CHIP_STAT_REG
*
*=====================================================*/
/*======================================================
*
* AFT_LINE_CFG_REG
*
*=====================================================*/
@ -403,6 +482,7 @@ aft_fifo_mark_gset(u32 *reg, u8 mark)
#define AFT_RX_FIFO_INTR_PENDING_REG 0x118
#define AFT_SERIAL_LINE_CFG_REG 0x210
# define AFT_LCFG_FE_IFACE_RESET_BIT 0
# define AFT_LCFG_TX_FE_SYNC_STAT_BIT 1
@ -438,8 +518,6 @@ aft_fifo_mark_gset(u32 *reg, u8 mark)
# define AFT_LCFG_A108_FE_TE1_MODE_BIT 30 /* A108 */
static __inline void
aft_lcfg_fe_clk_source(u32 *reg, u32 src)
{
@ -541,6 +619,16 @@ aft_dmactrl_set_max_logic_ch(u32 *reg, int max_logic_ch)
*reg|=(max_logic_ch<<AFT_DMACTRL_MAX_LOGIC_CH_SHIFT);
}
static __inline u32
aft_dmactrl_get_max_logic_ch(u32 reg)
{
u32 max_logic_ch;
reg&=(AFT_DMACTRL_MAX_LOGIC_CH_MASK<<AFT_DMACTRL_MAX_LOGIC_CH_SHIFT);
max_logic_ch = reg >> AFT_DMACTRL_MAX_LOGIC_CH_SHIFT;
return max_logic_ch;
}
/*======================================================
* PER PORT
*
@ -717,6 +805,53 @@ aft_dmachain_enable_tdmv_and_mtu_size(u32 *reg, int size)
}
/*======================================================
* PER PORT
*
* AFT DMA Descr RAM Registers
* AFT_SERIAL_LINE_CFG_REG
*=====================================================*/
#define AFT_SERIAL_LCFG_RTS_BIT 0
#define AFT_SERIAL_LCFG_DTR_BIT 1
#define AFT_SERIAL_LCFG_CTS_BIT 2
#define AFT_SERIAL_LCFG_DCD_BIT 3
#define AFT_SERIAL_LCFG_POLARITY_BIT 4
#define AFT_SERIAL_LCFG_SWMODE_BIT 5
#define AFT_SERIAL_LCFG_BAUD_SHIFT 8
#define AFT_SERIAL_LCFG_BAUD_MASK 0xFFFF
#define AFT_SERIAL_LCFG_CLK_SRC_BIT 24
#define AFT_SERIAL_LCFG_CTS_INTR_EN_BIT 25
#define AFT_SERIAL_LCFG_DCD_INTR_EN_BIT 26
#define AFT_SERIAL_LCFG_IDLE_DET_BIT 27
#define AFT_SERIAL_LCFG_LCODING_MASK 0x07
#define AFT_SERIAL_LCFG_LCODING_SHIFT 28
#define AFT_SERIAL_LCFG_IFACE_TYPE_BIT 31
static __inline void
aft_serial_set_baud_rate(u32 *reg, u32 rate)
{
u32 div= (14745600/(2*rate));
u32 remain= (14745600%(2*rate));
if (!remain || (remain/2 > rate)) {
div=div-1;
}
*reg&=~(AFT_SERIAL_LCFG_BAUD_MASK<<AFT_SERIAL_LCFG_BAUD_SHIFT);
*reg|= ((div)&AFT_SERIAL_LCFG_BAUD_MASK)<<AFT_SERIAL_LCFG_BAUD_SHIFT;
}
static __inline void
aft_serial_set_lcoding(u32 *reg, u32 coding)
{
*reg&=~(AFT_SERIAL_LCFG_LCODING_MASK<<AFT_SERIAL_LCFG_LCODING_SHIFT);
*reg|= (coding&AFT_SERIAL_LCFG_LCODING_MASK)<<AFT_SERIAL_LCFG_LCODING_SHIFT;
}
/*======================================================
* PER PORT
*
@ -940,6 +1075,9 @@ enum {
#define CUSTOMER_CPLD_ID_REG 0x0A
#define BRI_CPLD0_ECHO_RESET_BIT 0
#define BRI_CPLD0_NETWORK_SYNC_OUT_BIT 2
/* -------------------------------------- */
#define WRITE_DEF_SECTOR_DSBL 0x01
@ -961,23 +1099,38 @@ enum {
static __inline unsigned short aft_valid_mtu(unsigned short mtu)
{
unsigned short new_mtu;
if (mtu <= 128){
return 256;
new_mtu = 256;
}else if (mtu <= 256){
return 512;
new_mtu = 512;
}else if (mtu <= 512){
return 1024;
new_mtu = 1024;
}else if (mtu <= 1024){
return 2048;
new_mtu = 2048;
}else if (mtu <= 2048){
return 4096;
new_mtu = 4096;
}else if (mtu <= 4096){
return 8188;
new_mtu = 8188;
}else if (mtu <= 8188){
return 8188;
new_mtu = 8188;
}else{
return 0;
}
#if defined(__FreeBSD__)
if (new_mtu > MCLBYTES - 16){
new_mtu = MCLBYTES-16;
}
#endif
return new_mtu;
}
static __inline unsigned short aft_dma_buf_bits(unsigned short dma_bufs)
@ -1020,7 +1173,7 @@ static __inline int
aft_get_num_of_slots(u32 total_slots, u32 chan_slots)
{
int num_of_slots=0;
int i;
u32 i;
for (i=0;i<total_slots;i++){
if (wan_test_bit(i,&chan_slots)){
num_of_slots++;
@ -1040,7 +1193,7 @@ typedef struct aft_hw_dev{
int (*aft_global_chip_config)(sdla_t *card);
int (*aft_global_chip_unconfig)(sdla_t *card);
int (*aft_chip_config)(sdla_t *card);
int (*aft_chip_config)(sdla_t *card, wandev_conf_t *);
int (*aft_chip_unconfig)(sdla_t *card);
int (*aft_chan_config)(sdla_t *card, void *chan);
@ -1095,10 +1248,10 @@ extern aft_hw_dev_t aft_hwdev[MAX_AFT_HW_DEV];
*
*================================================================*/
#if !defined(__WINDOWS__)/* use 'wan_udphdr_aft_data'! */
#undef wan_udphdr_data
#define wan_udphdr_data wan_udphdr_u.aft.data
#endif
#define MAX_TRACE_BUFFER (MAX_LGTH_UDP_MGNT_PKT - \
sizeof(iphdr_t) - \
@ -1111,7 +1264,8 @@ enum {
TX_DMA_BUF_INIT =0,
TX_DMA_BUF_USED
};
#if !defined(__WINDOWS__)
enum {
ROUTER_UP_TIME = 0x50,
ENABLE_TRACING,
@ -1129,7 +1283,8 @@ enum {
AFT_HWEC_STATUS,
DIGITAL_LOOPTEST
};
#endif
#define UDPMGMT_SIGNATURE "AFTPIPEA"
@ -1149,7 +1304,11 @@ typedef struct wp_rx_element
unsigned int dma_addr;
unsigned int reg;
unsigned int align;
unsigned char pkt_error;
unsigned short len;
unsigned short pkt_error;
#if defined(__WINDOWS__)
api_header_t rx_info;
#endif
}wp_rx_element_t;
@ -1321,6 +1480,12 @@ typedef struct {
unsigned char data[8];
} api_tx_ss7_hdr_t;
typedef struct {
unsigned char repeat;
unsigned char len;
unsigned char data[8];
} api_tx_hdlc_rpt_hdr_t;
typedef struct {
u_int8_t type;
u_int8_t mode;
@ -1334,15 +1499,20 @@ typedef struct {
typedef struct {
union {
api_tx_ss7_hdr_t ss7;
api_tx_hdlc_rpt_hdr_t hdlc_rpt;
api_tdm_event_hdr_t event;
unsigned char reserved[16];
}u;
#define wp_api_tx_hdr_event_type u.event.type
#define wp_api_tx_hdr_event_mode u.event.mode
#define wp_api_tx_hdr_event_tone u.event.tone
#define wp_api_tx_hdr_event_channel u.event.channel
#define wp_api_tx_hdr_event_ohttimer u.event.ohttimer
#define wp_api_tx_hdr_event_polarity u.event.polarity
}hdr_u;
#define wp_api_tx_hdr_event_type hdr_u.event.type
#define wp_api_tx_hdr_event_mode hdr_u.event.mode
#define wp_api_tx_hdr_event_tone hdr_u.event.tone
#define wp_api_tx_hdr_event_channel hdr_u.event.channel
#define wp_api_tx_hdr_event_ohttimer hdr_u.event.ohttimer
#define wp_api_tx_hdr_event_polarity hdr_u.event.polarity
#define wp_api_tx_hdr_hdlc_rpt_len hdr_u.hdlc_rpt.len
#define wp_api_tx_hdr_hdlc_rpt_data hdr_u.hdlc_rpt.data
} api_tx_hdr_t;
typedef struct {
@ -1371,12 +1541,13 @@ enum {
#define AFT_TDMV_SHARK_FRM_CLK_SYNC_VER 0x17
#define AFT_TDMV_SHARK_A108_FRM_CLK_SYNC_VER 0x25
#define AFT_56K_MIN_FRMW_VER 0x00
#define AFT_SERIAL_MIN_FRMW_VER 0x04
#define AFT_MIN_ANALOG_FRMW_VER 0x05
#define A500_MAX_EC_CHANS 64
#if 0
typedef struct aft_dma_chain
{
unsigned long init;
@ -1394,7 +1565,13 @@ typedef struct aft_dma_chain
void* dma_virt;
u32 dma_offset;
u32 dma_toggle;
#if defined(__FreeBSD__)
bus_dma_tag_t dma_tag;
bus_dmamap_t dmamap;
int dma_ready;
#endif
}aft_dma_chain_t;
#endif
typedef struct dma_history{
u8 end;
@ -1426,15 +1603,25 @@ typedef struct aft_dma_swring {
}aft_dma_swring_t;
typedef struct private_area
{
wanpipe_common_t common;
sdla_t *card;
#if defined(__WINDOWS__)
/*NOTHING SHOULD BE ADDED ABOVE THIS!*/
common_private_area_t;
wp_rx_element_t wp_rx_element;
#endif
wanpipe_common_t common;
#if !defined(__WINDOWS__)
sdla_t *card;
char if_name[WAN_IFNAME_SZ+1];
#endif
wan_xilinx_conf_if_t cfg;
wan_skb_queue_t wp_tx_pending_list;
wan_skb_queue_t wp_tx_complete_list;
wan_skb_queue_t wp_tx_hdlc_rpt_list;
netskb_t *tx_dma_skb;
u8 tx_dma_cnt;
@ -1442,21 +1629,21 @@ typedef struct private_area
wan_skb_queue_t wp_rx_complete_list;
wan_skb_queue_t wp_rx_stack_complete_list;
wan_skb_queue_t wp_rx_zap_complete_list;
wan_skb_queue_t wp_rx_bri_dchan_complete_list;
unsigned long time_slot_map;
u32 time_slot_map;
unsigned char num_of_time_slots;
long logic_ch_num;
int logic_ch_num;
unsigned char hdlc_eng;
unsigned long dma_status;
u32 dma_status;
unsigned char protocol;
struct net_device_stats if_stats;
// struct net_device_stats if_stats;
int tracing_enabled; /* For enabling Tracing */
unsigned long router_start_time;
unsigned long trace_timeout;
wan_ticks_t trace_timeout;
unsigned long tick_counter; /* For 5s timeout counter */
unsigned long router_up_time;
@ -1481,8 +1668,6 @@ typedef struct private_area
unsigned char udp_pkt_data[sizeof(wan_udp_pkt_t)+10];
atomic_t udp_pkt_len;
char if_name[WAN_IFNAME_SZ+1];
u8 idle_flag;
u16 max_idle_size;
u8 idle_start;
@ -1494,6 +1679,7 @@ typedef struct private_area
int last_time_slot;
netskb_t *tx_idle_skb;
netskb_t *tx_hdlc_rpt_skb;
unsigned char rx_dma;
unsigned char pci_retry;
@ -1510,15 +1696,20 @@ typedef struct private_area
wan_trace_t trace_info;
/* TE1 Specific Dma Chains */
#if defined(__WINDOWS__)
aft_dma_chain_t tx_dma_chain_table;
aft_dma_chain_t rx_dma_chain_table;
#else
unsigned char tx_chain_indx,tx_pending_chain_indx;
aft_dma_chain_t tx_dma_chain_table[MAX_AFT_DMA_CHAINS];
wan_dma_descr_t/*aft_dma_chain_t*/ tx_dma_chain_table[MAX_AFT_DMA_CHAINS];
unsigned char rx_chain_indx,rx_pending_chain_indx;
aft_dma_chain_t rx_dma_chain_table[MAX_AFT_DMA_CHAINS];
wan_dma_descr_t/*aft_dma_chain_t*/ rx_dma_chain_table[MAX_AFT_DMA_CHAINS];
#endif
int rx_no_data_cnt;
unsigned long dma_chain_status;
unsigned long up;
u32 dma_chain_status;
u32 up;
int tx_attempts;
aft_op_stats_t opstats;
@ -1555,125 +1746,27 @@ typedef struct private_area
#endif
int rx_api_crc_bytes;
netskb_t *rx_rtp_skb;
netskb_t *tx_rtp_skb;
u32 tdm_call_status;
#if defined(__FreeBSD__)
// int dma_ready;
bus_dma_tag_t dma_rx_mtag;
bus_dma_tag_t dma_tx_mtag;
#endif
struct private_area *next;
int dchan_time_slot;
aft_dma_swring_t swring;
}private_area_t;
static __inline int aft_decode_dma_status(sdla_t *card, private_area_t *chan, u32 reg)
{
u32 dma_status=aft_rxdma_hi_get_dma_status(reg);
u32 data_error=0;
if (dma_status){
if (wan_test_bit(AFT_RXDMA_HIDMASTATUS_PCI_M_ABRT,&dma_status)){
if (WAN_NET_RATELIMIT()){
DEBUG_EVENT("%s:%s: Rx Error: Abort from Master: pci fatal error 0x%X!\n",
card->devname,chan->if_name,reg);
}
}
if (wan_test_bit(AFT_RXDMA_HIDMASTATUS_PCI_T_ABRT,&dma_status)){
if (WAN_NET_RATELIMIT()){
DEBUG_EVENT("%s:%s: Rx Error: Abort from Target: pci fatal error 0x%X!\n",
card->devname,chan->if_name,reg);
}
}
if (wan_test_bit(AFT_RXDMA_HIDMASTATUS_PCI_DS_TOUT,&dma_status)){
if (WAN_NET_RATELIMIT()){
DEBUG_EVENT("%s:%s: Rx Error: No 'DeviceSelect' from target: pci fatal error 0x%X!\n",
card->devname,chan->if_name,reg);
}
}
if (wan_test_bit(AFT_RXDMA_HIDMASTATUS_PCI_RETRY,&dma_status)){
if (WAN_NET_RATELIMIT()){
DEBUG_EVENT("%s:%s: Rx Error: 'Retry' exceeds maximum (64k): pci fatal error 0x%X!\n",
card->devname,chan->if_name,reg);
}
}
chan->errstats.Rx_pci_errors++;
chan->if_stats.rx_errors++;
card->wandev.stats.rx_errors++;
return 1;
}
if (chan->hdlc_eng){
/* Checking Rx DMA Frame start bit. (information for api) */
if (!wan_test_bit(AFT_RXDMA_HI_START_BIT,&reg)){
DEBUG_TEST("%s:%s RxDMA Intr: Start flag missing: MTU Mismatch! Reg=0x%X\n",
card->devname,chan->if_name,reg);
chan->if_stats.rx_frame_errors++;
chan->opstats.Rx_Data_discard_long_count++;
chan->errstats.Rx_hdlc_corrupiton++;
card->wandev.stats.rx_errors++;
return 1;
}
/* Checking Rx DMA Frame end bit. (information for api) */
if (!wan_test_bit(AFT_RXDMA_HI_EOF_BIT,&reg)){
DEBUG_TEST("%s:%s: RxDMA Intr: End flag missing: MTU Mismatch! Reg=0x%X\n",
card->devname,chan->if_name,reg);
chan->if_stats.rx_frame_errors++;
chan->opstats.Rx_Data_discard_long_count++;
chan->errstats.Rx_hdlc_corrupiton++;
card->wandev.stats.rx_errors++;
return 1;
} else { /* Check CRC error flag only if this is the end of Frame */
if (wan_test_bit(AFT_RXDMA_HI_FCS_ERR_BIT,&reg)){
DEBUG_TEST("%s:%s: RxDMA Intr: CRC Error! Reg=0x%X Len=%d\n",
card->devname,chan->if_name,reg,
(reg&AFT_RXDMA_HI_DMA_LENGTH_MASK)>>2);
chan->if_stats.rx_frame_errors++;
chan->errstats.Rx_crc_err_count++;
card->wandev.stats.rx_crc_errors++;
data_error = 1;
}
/* Check if this frame is an abort, if it is
* drop it and continue receiving */
if (wan_test_bit(AFT_RXDMA_HI_FRM_ABORT_BIT,&reg)){
DEBUG_TEST("%s:%s: RxDMA Intr: Abort! Reg=0x%X\n",
card->devname,chan->if_name,reg);
chan->if_stats.rx_frame_errors++;
chan->errstats.Rx_hdlc_corrupiton++;
card->wandev.stats.rx_frame_errors++;
data_error = 1;
}
#if 0
if (chan->common.usedby != API && data_error){
return 1;
}
#else
if (data_error) {
return 1;
}
#endif
}
}
return 0;
}
void aft_free_logical_channel_num (sdla_t *card, int logic_ch);
void aft_dma_max_logic_ch(sdla_t *card);
void aft_fe_intr_ctrl(sdla_t *card, int status);
void __aft_fe_intr_ctrl(sdla_t *card, int status);
void aft_wdt_set(sdla_t *card, unsigned char val);
void aft_wdt_reset(sdla_t *card);
void wanpipe_wake_stack(private_area_t* chan);
#endif

File diff suppressed because it is too large Load Diff

View File

@ -864,8 +864,6 @@ set_te3_tx_fract_baud_rate(unsigned int *reg,
*reg&=TE3_TX_FRACT_BAUD_RATE_MASK;
*reg|=(counter<<TE3_TX_FRACT_BAUD_RATE_SHIFT);
}
#endif
/* Tx Encasulated Frame Size
@ -1269,22 +1267,20 @@ typedef struct wp_rx_element
#if defined(WAN_KERNEL)
static __inline unsigned short xilinx_valid_mtu(unsigned short mtu)
{
if (mtu <= 128){
return 256;
return 128;
}else if (mtu <= 256){
return 512;
return 256;
}else if (mtu <= 512){
return 1024;
return 512;
}else if (mtu <= 1024){
return 2048;
return 1024;
}else if (mtu <= 2048){
return 4096;
return 2048;
}else if (mtu <= 4096){
return 8188;
return 4096;
}else if (mtu <= 8188){
return 8188;
}else{

View File

@ -19,6 +19,8 @@
#ifndef _WANPIPE_ASYNC_H
#define _WANPIPE_ASYNC_H
#pragma pack(1)
/* ----------------------------------------------------------------------------
* Interface commands
* --------------------------------------------------------------------------*/
@ -46,7 +48,7 @@
#define INVALID_ASY_CFG_DATA 0xE3 /* the passed configuration data is invalid */
#define ASY_BREAK_SIGNAL_BUSY 0xEC /* a break signal is being transmitted */
#pragma pack(1)
/* ----------------------------------------------------------------------------
* Constants for the SET_ASY_CONFIGURATION/READ_ASY_CONFIGURATION command
@ -54,24 +56,24 @@
/* the asynchronous configuration structure */
typedef struct {
unsigned long baud_rate ; /* the baud rate */
unsigned short line_config_options ; /* line configuration options */
unsigned short modem_config_options ; /* modem configuration options */
unsigned short asy_API_options ; /* asynchronous API options */
unsigned short asy_protocol_options ; /* asynchronous protocol options */
unsigned short Tx_bits_per_char ; /* number of bits per tx character */
unsigned short Rx_bits_per_char ; /* number of bits per received character */
unsigned short stop_bits ; /* number of stop bits per character */
unsigned short parity ; /* parity definition */
unsigned short break_timer ; /* the break signal timer */
unsigned short asy_Rx_inter_char_timer ; /* the receive inter-character timer */
unsigned short asy_Rx_complete_length ; /* the receive 'buffer complete' length */
unsigned short XON_char ; /* the XON character */
unsigned short XOFF_char ; /* the XOFF character */
unsigned short asy_statistics_options ; /* async operational stat options */
unsigned long ptr_shared_mem_info_struct ;/* ptr to the shared memory area information structure */
unsigned long ptr_asy_Tx_stat_el_cfg_struct ;/* ptr to the transmit status element configuration structure */
unsigned long ptr_asy_Rx_stat_el_cfg_struct ;/* ptr to the receive status element configuration structure */
unsigned long baud_rate ; /* the baud rate */
unsigned short line_config_options ; /* line configuration options */
unsigned short modem_config_options ; /* modem configuration options */
unsigned short asy_API_options ; /* asynchronous API options */
unsigned short asy_protocol_options ; /* asynchronous protocol options */
unsigned short Tx_bits_per_char ; /* number of bits per tx character */
unsigned short Rx_bits_per_char ; /* number of bits per received character */
unsigned short stop_bits ; /* number of stop bits per character */
unsigned short parity ; /* parity definition */
unsigned short break_timer ; /* the break signal timer */
unsigned short asy_Rx_inter_char_timer ; /* the receive inter-character timer */
unsigned short asy_Rx_complete_length ; /* the receive 'buffer complete' length */
unsigned short XON_char ; /* the XON character */
unsigned short XOFF_char ; /* the XOFF character */
unsigned short asy_statistics_options ; /* async operational stat options */
unsigned long ptr_shared_mem_info_struct ;/* ptr to the shared memory area information structure */
unsigned long ptr_asy_Tx_stat_el_cfg_struct ;/* ptr to the transmit status element configuration structure */
unsigned long ptr_asy_Rx_stat_el_cfg_struct ;/* ptr to the receive status element configuration structure */
} ASY_CONFIGURATION_STRUCT;
/* permitted minimum and maximum values for setting the asynchronous configuration */
@ -114,16 +116,16 @@ typedef struct {
/* the communications error statistics structure */
typedef struct {
unsigned short Rx_overrun_err_count ; /* receiver overrun error count */
unsigned short Rx_parity_err_count ; /* parity errors received count */
unsigned short Rx_framing_err_count ; /* framing errors received count */
unsigned short comms_err_stat_reserved_1 ;/* reserved for later use */
unsigned short comms_err_stat_reserved_2 ;/* reserved for later use */
unsigned short comms_err_stat_reserved_3 ;/* reserved for later use */
unsigned short comms_err_stat_reserved_4 ;/* reserved for later use */
unsigned short comms_err_stat_reserved_5 ;/* reserved for later use */
unsigned short DCD_state_change_count ; /* DCD state change count */
unsigned short CTS_state_change_count ; /* CTS state change count */
unsigned short Rx_overrun_err_count ; /* receiver overrun error count */
unsigned short Rx_parity_err_count ; /* parity errors received count */
unsigned short Rx_framing_err_count ; /* framing errors received count */
unsigned short comms_err_stat_reserved_1 ;/* reserved for later use */
unsigned short comms_err_stat_reserved_2 ;/* reserved for later use */
unsigned short comms_err_stat_reserved_3 ;/* reserved for later use */
unsigned short comms_err_stat_reserved_4 ;/* reserved for later use */
unsigned short comms_err_stat_reserved_5 ;/* reserved for later use */
unsigned short DCD_state_change_count ; /* DCD state change count */
unsigned short CTS_state_change_count ; /* CTS state change count */
} ASY_COMMS_ERROR_STATS_STRUCT;
@ -136,40 +138,40 @@ typedef struct {
typedef struct {
/* Data transmission statistics */
unsigned long Data_blocks_Tx_count ;/* number of blocks transmitted */
unsigned long Data_bytes_Tx_count ;/* number of bytes transmitted */
unsigned long Data_Tx_throughput ;/* transmit throughput */
unsigned long no_ms_for_Data_Tx_thruput_comp ;/* millisecond time used for the Tx throughput computation */
unsigned long Tx_Data_discard_lgth_err_count ;/* number of Data blocks discarded (length error) */
unsigned long reserved_Data_frm_Tx_stat1 ;/* reserved for later use */
unsigned long reserved_Data_frm_Tx_stat2 ;/* reserved for later use */
unsigned long reserved_Data_frm_Tx_stat3 ;/* reserved for later use */
unsigned long Data_blocks_Tx_count ;/* number of blocks transmitted */
unsigned long Data_bytes_Tx_count ;/* number of bytes transmitted */
unsigned long Data_Tx_throughput ;/* transmit throughput */
unsigned long no_ms_for_Data_Tx_thruput_comp ;/* millisecond time used for the Tx throughput computation */
unsigned long Tx_Data_discard_lgth_err_count ;/* number of Data blocks discarded (length error) */
unsigned long reserved_Data_frm_Tx_stat1 ;/* reserved for later use */
unsigned long reserved_Data_frm_Tx_stat2 ;/* reserved for later use */
unsigned long reserved_Data_frm_Tx_stat3 ;/* reserved for later use */
/* Data reception statistics */
unsigned long Data_blocks_Rx_count ;/* number of blocks received */
unsigned long Data_bytes_Rx_count ;/* number of bytes received */
unsigned long Data_Rx_throughput ;/* receive throughput */
unsigned long no_ms_for_Data_Rx_thruput_comp ;/* millisecond time used for the Rx throughput computation */
unsigned long Rx_Data_bytes_discard_count ;/* received Data bytes discarded */
unsigned long reserved_Data_frm_Rx_stat1 ;/* reserved for later use */
unsigned long Data_blocks_Rx_count ;/* number of blocks received */
unsigned long Data_bytes_Rx_count ;/* number of bytes received */
unsigned long Data_Rx_throughput ;/* receive throughput */
unsigned long no_ms_for_Data_Rx_thruput_comp ;/* millisecond time used for the Rx throughput computation */
unsigned long Rx_Data_bytes_discard_count ;/* received Data bytes discarded */
unsigned long reserved_Data_frm_Rx_stat1 ;/* reserved for later use */
/* handshaking protocol statistics */
unsigned short XON_chars_Tx_count ; /* number of XON characters transmitted */
unsigned short XOFF_chars_Tx_count ; /* number of XOFF characters transmitted */
unsigned short XON_chars_Rx_count ; /* number of XON characters received */
unsigned short XOFF_chars_Rx_count ; /* number of XOFF characters received */
unsigned short Tx_halt_modem_low_count ; /* number of times Tx halted (modem line low) */
unsigned short Rx_halt_RTS_low_count ; /* number of times Rx halted by setting RTS low */
unsigned long reserved_handshaking_stat1 ;/* reserved for later use */
unsigned short XON_chars_Tx_count ; /* number of XON characters transmitted */
unsigned short XOFF_chars_Tx_count ; /* number of XOFF characters transmitted */
unsigned short XON_chars_Rx_count ; /* number of XON characters received */
unsigned short XOFF_chars_Rx_count ; /* number of XOFF characters received */
unsigned short Tx_halt_modem_low_count ; /* number of times Tx halted (modem line low) */
unsigned short Rx_halt_RTS_low_count ; /* number of times Rx halted by setting RTS low */
unsigned long reserved_handshaking_stat1 ;/* reserved for later use */
/* break statistics */
unsigned short break_Tx_count ; /* number of break sequences transmitted */
unsigned short break_Rx_count ; /* number of break sequences received */
unsigned long reserved_break_stat1 ;/* reserved for later use */
unsigned short break_Tx_count ; /* number of break sequences transmitted */
unsigned short break_Rx_count ; /* number of break sequences received */
unsigned long reserved_break_stat1 ;/* reserved for later use */
/* miscellaneous statistics */
unsigned long reserved_misc_stat1 ; /* reserved for later use */
unsigned long reserved_misc_stat2 ; /* reserved for later use */
unsigned long reserved_misc_stat1 ; /* reserved for later use */
unsigned long reserved_misc_stat2 ; /* reserved for later use */
} ASY_OPERATIONAL_STATS_STRUCT;
@ -181,20 +183,20 @@ typedef struct {
/* the Data block transmit status element configuration structure */
typedef struct {
unsigned short number_Tx_status_elements ; /* number of transmit status elements */
unsigned long base_addr_Tx_status_elements ; /* base address of the transmit element list */
unsigned long next_Tx_status_element_to_use ; /* pointer to the next transmit element to be used */
unsigned short number_Tx_status_elements ; /* number of transmit status elements */
unsigned long base_addr_Tx_status_elements ; /* base address of the transmit element list */
unsigned long next_Tx_status_element_to_use ; /* pointer to the next transmit element to be used */
} ASY_TX_STATUS_EL_CFG_STRUCT;
/* the Data block transmit status element structure */
typedef struct {
unsigned char opp_flag ; /* opp flag */
unsigned short data_length ; /* length of the block to be transmitted */
unsigned char reserved_1 ; /* reserved for internal use */
unsigned long reserved_2 ; /* reserved for internal use */
unsigned long reserved_3 ; /* reserved for internal use */
unsigned long ptr_data_bfr ; /* pointer to the data area */
unsigned char opp_flag ; /* opp flag */
unsigned short data_length ; /* length of the block to be transmitted */
unsigned char reserved_1 ; /* reserved for internal use */
unsigned long reserved_2 ; /* reserved for internal use */
unsigned long reserved_3 ; /* reserved for internal use */
unsigned long ptr_data_bfr ; /* pointer to the data area */
} ASY_DATA_TX_STATUS_EL_STRUCT;
@ -205,22 +207,22 @@ typedef struct {
/* the Data block receive status element configuration structure */
typedef struct {
unsigned short number_Rx_status_elements ;/* number of receive status elements */
unsigned long base_addr_Rx_status_elements ;/* base address of the receive element list */
unsigned long next_Rx_status_element_to_use ;/* pointer to the next receive element to be used */
unsigned long base_addr_Rx_buffer ;/* base address of the receive data buffer */
unsigned long end_addr_Rx_buffer ;/* end address of the receive data buffer */
unsigned short number_Rx_status_elements ;/* number of receive status elements */
unsigned long base_addr_Rx_status_elements ;/* base address of the receive element list */
unsigned long next_Rx_status_element_to_use ;/* pointer to the next receive element to be used */
unsigned long base_addr_Rx_buffer ;/* base address of the receive data buffer */
unsigned long end_addr_Rx_buffer ;/* end address of the receive data buffer */
} ASY_RX_STATUS_EL_CFG_STRUCT;
/* the Data block receive status element structure */
typedef struct {
unsigned char opp_flag ; /* opp flag */
unsigned short data_length ; /* length of the received data block */
unsigned char reserved_1 ; /* reserved for internal use */
unsigned short time_stamp ; /* receive time stamp (HDLC_STREAMING_MODE) */
unsigned short data_buffered ; /* the number of data bytes still buffered */
unsigned long reserved_2 ; /* reserved for internal use */
unsigned long ptr_data_bfr ; /* pointer to the data area */
unsigned char opp_flag ; /* opp flag */
unsigned short data_length ; /* length of the received data block */
unsigned char reserved_1 ; /* reserved for internal use */
unsigned short time_stamp ; /* receive time stamp (HDLC_STREAMING_MODE) */
unsigned short data_buffered ; /* the number of data bytes still buffered */
unsigned long reserved_2 ; /* reserved for internal use */
unsigned long ptr_data_bfr ; /* pointer to the data area */
} ASY_DATA_RX_STATUS_EL_STRUCT;
#pragma pack()

View File

@ -474,7 +474,6 @@ typedef struct {
unsigned long Rx_abort_count; /* abort frames received count */
} HDLC_OPERATIONAL_STATS_STRUCT;
#pragma pack()
@ -486,19 +485,19 @@ typedef struct {
/* UDP/IP packet (for UDP management) layout */
/*
typedef struct {
unsigned char reserved[2] ;
unsigned short ip_length ;
unsigned char reserved2[4] ;
unsigned char ip_ttl ;
unsigned char ip_protocol ;
unsigned short ip_checksum ;
unsigned long ip_src_address ;
unsigned long ip_dst_address ;
unsigned short udp_src_port ;
unsigned short udp_dst_port ;
unsigned short udp_length ;
unsigned short udp_checksum ;
udp_management_packet_t um_packet ;
unsigned char reserved[2] ;
unsigned short ip_length ;
unsigned char reserved2[4] ;
unsigned char ip_ttl ;
unsigned char ip_protocol ;
unsigned short ip_checksum ;
unsigned long ip_src_address ;
unsigned long ip_dst_address ;
unsigned short udp_src_port ;
unsigned short udp_dst_port ;
unsigned short udp_length ;
unsigned short udp_checksum ;
udp_management_packet_t um_packet ;
} ip_packet_t;
*/
@ -507,34 +506,34 @@ typedef struct {
#if 0
typedef struct {
unsigned char status ;
unsigned char data_avail ;
unsigned short real_length ;
unsigned short time_stamp ;
unsigned char data[1] ;
unsigned char status ;
unsigned char data_avail ;
unsigned short real_length ;
unsigned short time_stamp ;
unsigned char data[1] ;
} trace_pkt_t;
#endif
typedef struct {
unsigned char error_flag ;
unsigned short time_stamp ;
unsigned char reserved[13] ;
unsigned char error_flag ;
unsigned short time_stamp ;
unsigned char reserved[13] ;
} api_rx_hdr_t;
typedef struct {
api_rx_hdr_t api_rx_hdr ;
unsigned char data[1] ;
api_rx_hdr_t api_rx_hdr ;
unsigned char data[1] ;
} api_rx_element_t;
typedef struct {
unsigned char attr ;
unsigned char misc_Tx_bits ;
unsigned char reserved[14] ;
unsigned char attr ;
unsigned char misc_Tx_bits ;
unsigned char reserved[14] ;
} api_tx_hdr_t;
typedef struct {
api_tx_hdr_t api_tx_hdr ;
unsigned char data[1] ;
api_tx_hdr_t api_tx_hdr ;
unsigned char data[1] ;
} api_tx_element_t;
/* Special UDP drivers management commands */
@ -574,6 +573,8 @@ enum {
NO_HDLC_RX_IN_PROCESS
};
#pragma pack()
#endif

View File

@ -0,0 +1,794 @@
/************************************************************************************
* *
* PHYAPI.H - the 'C' header file for the Sangoma S508/S514 PHY-level ATM code API. *
* *
************************************************************************************
*/
#ifndef __SDLA_ATM_H_
#define __SDLA_ATM_H_
#pragma pack(1)
/* ----------------------------------------------------------------------------
* Constants defining the shared memory control block (mailbox)
* --------------------------------------------------------------------------*/
#define BASE_ADDR_MB_STRUCT 0xE000 /* the base address of the mailbox structure */
#define NUMBER_MB_RESERVED_BYTES 0x0B /* the number of reserved bytes in the mailbox header area */
#define SIZEOF_MB_DATA_BFR 240 /* the size of the actual mailbox data area */
/* the control block mailbox structure */
typedef struct {
unsigned char opp_flag; /* the opp flag */
unsigned char command; /* the user command */
unsigned short buffer_length; /* the data length */
unsigned char return_code; /* the return code */
char MB_reserved[NUMBER_MB_RESERVED_BYTES]; /* reserved for later use */
char data[SIZEOF_MB_DATA_BFR]; /* the data area */
} ATM_MAILBOX_STRUCT;
/* ----------------------------------------------------------------------------
* Interface commands
* --------------------------------------------------------------------------*/
/* global interface commands */
#define READ_GLOBAL_EXCEPTION_CONDITION 0x01 /* read a global exception condition from the adapter */
#define SET_GLOBAL_CONFIGURATION 0x02 /* set the global operational configuration */
#define READ_GLOBAL_CONFIGURATION 0x03 /* read the global configuration */
#define READ_GLOBAL_STATISTICS 0x04 /* retrieve the global statistics */
#define FLUSH_GLOBAL_STATISTICS 0x05 /* flush the global statistics */
#define SET_MODEM_STATUS 0x06 /* set the status of DTR and/or RTS */
#define READ_MODEM_STATUS 0x07 /* read the current status of CTS and DCD */
#define READ_COMMS_ERROR_STATS 0x08 /* read the communication error statistics */
#define FLUSH_COMMS_ERROR_STATS 0x09 /* flush the communication error statistics */
#define SET_TRACE_CONFIGURATION 0x0A /* set the line trace configuration */
#define READ_TRACE_CONFIGURATION 0x0B /* read the line trace configuration */
#define READ_TRACE_STATISTICS 0x0C /* read the trace statistics */
#define FLUSH_TRACE_STATISTICS 0x0D /* flush the trace statistics */
/* PHY-level interface commands */
#define PHY_READ_CODE_VERSION 0x20 /* read the ATM code version */
#define PHY_READ_EXCEPTION_CONDITION 0x21 /* read a PHY-level exception condition from the adapter */
#define PHY_SET_CONFIGURATION 0x22 /* set the PHY-level configuration */
#define PHY_READ_CONFIGURATION 0x23 /* read the PHY-level configuration */
#define PHY_ENABLE_COMMUNICATIONS 0x24 /* enable PHY-level communications */
#define PHY_DISABLE_COMMUNICATIONS 0x25 /* disable PHY-level communications */
#define PHY_READ_STATUS 0x26 /* read the PHY-level status */
#define PHY_READ_OPERATIONAL_STATS 0x27 /* retrieve the PHY-level operational statistics */
#define PHY_FLUSH_OPERATIONAL_STATS 0x28 /* flush the PHY-level operational statistics */
#define PHY_RESYNCHRONIZE_RECEIVER 0x29 /* resynchronize the receiver */
#define PHY_SET_TX_UNDERRUN_CONFIG 0x2A /* set the transmit underrun cell configuration */
#define PHY_READ_TX_UNDERRUN_CONFIG 0x2B /* read the transmit underrun cell configuration */
#define PHY_SET_INTERRUPT_TRIGGERS 0x30 /* set the PHY-level application interrupt triggers */
#define PHY_READ_INTERRUPT_TRIGGERS 0x31 /* read the PHY-level application interrupt trigger configuration */
/* ----------------------------------------------------------------------------
* Return codes from interface commands
* --------------------------------------------------------------------------*/
#define OK 0x00 /* the interface command was successful */
/* return codes from global interface commands */
#define NO_GLOBAL_EXCEP_COND_TO_REPORT 0x01 /* there is no global exception condition to report */
#define LGTH_GLOBAL_CFG_DATA_INVALID 0x01 /* the length of the passed global configuration data is invalid */
#define LGTH_TRACE_CFG_DATA_INVALID 0x01 /* the length of the passed trace configuration data is invalid */
#define IRQ_TIMEOUT_VALUE_INVALID 0x02 /* an invalid application IRQ timeout value was selected */
#define TRACE_CONFIG_INVALID 0x02 /* the passed line trace configuration is invalid */
#define ADAPTER_OPERATING_FREQ_INVALID 0x03 /* an invalid adapter operating frequency was selected */
/* return codes from command READ_GLOBAL_EXCEPTION_CONDITION */
#define EXCEP_MODEM_STATUS_CHANGE 0x10 /* a modem status change occurred */
#define EXCEP_APP_IRQ_TIMEOUT 0x12 /* an application IRQ timeout has occurred */
/* return codes from PHY-level interface commands */
#define PHY_NO_EXCEP_COND_TO_REPORT 0x21 /* there is no PHY-level exception condition to report */
#define PHY_COMMS_DISABLED 0x21 /* communications are not currently enabled */
#define PHY_COMMS_ENABLED 0x21 /* communications are currently enabled */
#define PHY_DISABLE_COMMS_BEFORE_CFG 0x21 /* communications must be disabled before setting the configuration */
#define PHY_CFG_BEFORE_COMMS_ENABLED 0x22 /* perform a PHY_SET_CONFIGURATION before enabling comms */
#define PHY_LGTH_CFG_DATA_INVALID 0x22 /* the length of the passed configuration data is invalid */
#define PHY_LGTH_INT_TRIG_DATA_INVALID 0x22 /* the length of the passed interrupt trigger data is invalid */
#define PHY_LGTH_TX_UND_DATA_INVALID 0x22 /* the length of the passed transmit underrun data is invalid */
#define PHY_RX_NOT_SYNCHRONIZED 0x22 /* the receiver is not synchronized */
#define PHY_INVALID_IRQ_SELECTED 0x23 /* an invalid IRQ was selected in the PHY_SET_INTERRUPT_TRIGGERS */
#define PHY_INVALID_CFG_DATA 0x23 /* the passed configuration data is invalid */
#define PHY_IRQ_TMR_VALUE_INVALID 0x24 /* an invalid application IRQ timer value was selected */
#define PHY_INVALID_COMMAND 0x2F /* the defined interface command is invalid */
/* return codes from command PHY_READ_EXCEPTION_CONDITION */
#define PHY_EXCEP_RX_SYNC_STATE_CHANGE 0x30 /* the PHY receiver has changed state */
#define PHY_EXCEP_INVALID_HEC 0x32 /* the Rx consecutive incorrect HEC counter has expired */
#define PHY_EXCEP_RECEP_LOSS 0x33 /* the cell reception sync loss timer has expired */
#define PHY_EXCEP_RX_DISCARD 0x36 /* incoming cells were discarded */
#define PHY_EXCEP_TX_LENGTH_ERROR 0x37 /* a transmit buffer of invalid length was detected */
/* ----------------------------------------------------------------------------
* Constants for the READ_GLOBAL_EXCEPTION_CONDITION command
* --------------------------------------------------------------------------*/
/* the global exception condition structure for handling a modem status change */
typedef struct {
unsigned char modem_status_change; /* the modem status change */
} GLOBAL_EX_MODEM_STRUCT;
/* settings for the 'modem_status_change' */
#define CHANGE_IN_DCD 0x04 /* a change in DCD occured */
#define CHANGE_IN_CTS 0x10 /* a change in CTS occured */
/* ----------------------------------------------------------------------------
* Constants for the SET_GLOBAL_CONFIGURATION/READ_GLOBAL_CONFIGURATION commands
* --------------------------------------------------------------------------*/
/* the global configuration structure */
typedef struct {
unsigned short adapter_config_options; /* adapter configuration options */
unsigned short app_IRQ_timeout; /* application IRQ timeout */
unsigned long adapter_operating_frequency; /* adapter operating frequency */
} GLOBAL_CONFIGURATION_STRUCT;
/* settings for the 'adapter_config_options' */
#define ADPTR_CFG_S514 0x0001 /* S514 adapter */
/* settings for the 'app_IRQ_timeout' */
#define MAX_APP_IRQ_TIMEOUT_VALUE 5000 /* the maximum permitted IRQ timeout */
/* ----------------------------------------------------------------------------
* Constants for the READ_GLOBAL_STATISTICS command
* --------------------------------------------------------------------------*/
/* the global statistics structure */
typedef struct {
unsigned short app_IRQ_timeout_count; /* application IRQ timeout count */
} GLOBAL_STATS_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for the SET_MODEM_STATUS command
* --------------------------------------------------------------------------*/
/* the set modem status structure */
typedef struct {
unsigned char output_modem_status; /* the output modem status */
} SET_MODEM_STATUS_STRUCT;
/* settings for the 'output_modem_status' */
#define SET_DTR_HIGH 0x01 /* set DTR high */
#define SET_RTS_HIGH 0x02 /* set RTS high */
/* ----------------------------------------------------------------------------
* Constants for the READ_MODEM_STATUS command
* --------------------------------------------------------------------------*/
/* the read modem status structure */
typedef struct {
unsigned char input_modem_status; /* the input modem status */
} READ_MODEM_STATUS_STRUCT;
/* settings for the 'input_modem_status' */
#define DCD_HIGH 0x08 /* DCD is high */
#define CTS_HIGH 0x20 /* CTS is high */
/* ----------------------------------------------------------------------------
* Constants for the READ_COMMS_ERROR_STATS command
* --------------------------------------------------------------------------*/
/* the communications error statistics structure */
typedef struct {
unsigned short Rx_overrun_err_count; /* receiver overrun error count */
unsigned short reserved_0; /* reserved for later use */
unsigned short reserved_1; /* reserved for later use */
unsigned short DCD_state_change_count; /* DCD state change count */
unsigned short CTS_state_change_count; /* CTS state change count */
} COMMS_ERROR_STATS_STRUCT;
/* ----------------------------------------------------------------------------
* Constants used for line tracing
* --------------------------------------------------------------------------*/
/* the trace configuration structure (SET_TRACE_CONFIGURATION/READ_TRACE_CONFIGURATION commands) */
typedef struct {
unsigned char trace_config; /* trace configuration */
unsigned long ptr_trace_stat_el_cfg_struct; /* a pointer to the line trace element configuration structure */
} LINE_TRACE_CONFIG_STRUCT;
/* 'trace_config' bit settings */
#define TRACE_INACTIVE 0x00 /* trace is inactive */
#define TRACE_ACTIVE 0x01 /* trace is active */
#define TRACE_LIMIT_REPEAT_CELLS 0x08 /* limit the tracing of repeated Physical Layer and Idle Cells */
#define TRACE_PHY_UNASSIGNED_CELLS 0x10 /* trace Unassigned Cells */
#define TRACE_PHY_IDLE_CELLS 0x20 /* trace Idle Cells */
#define TRACE_PHY_PHYS_LAYER_CELLS 0x40 /* trace Physical Layer Cells */
#define TRACE_PHY_NON_UNAS_PHYS_CELLS 0x80 /* trace cells other than Physical Layer and Idle Cells */
/* the line trace status element configuration structure */
typedef struct {
unsigned short number_trace_status_els; /* number of line trace elements */
unsigned long base_addr_trace_status_els; /* base address of the trace element list */
unsigned long next_trace_el_to_use; /* pointer to the next trace element to be used */
} TRACE_STATUS_EL_CFG_STRUCT;
/* the line trace status element structure */
typedef struct {
unsigned char opp_flag; /* opp flag */
unsigned short trace_length; /* trace length */
unsigned char trace_type; /* trace type */
unsigned short trace_time_stamp; /* time stamp */
unsigned short trace_reserved_1; /* reserved for later use */
unsigned long trace_reserved_2; /* reserved for later use */
unsigned long ptr_data_bfr; /* pointer to the trace data buffer */
} TRACE_STATUS_ELEMENT_STRUCT;
/* settings for the 'trace_type' */
#define TRACE_INCOMING 0x00 /* an incoming block/cell has been traced */
#define TRACE_OUTGOING 0x01 /* an outgoing block/cell has been traced */
#define TRACE_HEC_ERROR 0x80 /* the traced cell has a HEC error */
/* the line trace statistics structure */
typedef struct {
unsigned long blocks_traced_count; /* number of blocks traced */
unsigned long trc_blocks_discarded_count; /* number of trace blocks discarded */
} LINE_TRACE_STATS_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for the PHY_READ_EXCEPTION_CONDITION command
* --------------------------------------------------------------------------*/
/* the structure returned on a return code PHY_EXCEP_RX_SYNC_STATE_CHANGE */
/* Note that the definitions for the 'Rx_sync_status' are as per the PHY_READ_STATUS command */
typedef struct {
unsigned char Rx_sync_status; /* receiver synchronization status */
} PHY_RX_SYNC_EXCEP_STRUCT;
/* the structure returned on a return code PHY_EXCEP_RX_DISCARD */
typedef struct {
unsigned long Rx_discard_count; /* number of incoming blocks discarded */
} PHY_RX_DISC_EXCEP_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for the PHY_SET_CONFIGURATION/PHY_READ_CONFIGURATION command
* --------------------------------------------------------------------------*/
/* the PHY-level configuration structure */
typedef struct {
unsigned long baud_rate; /* the baud rate */
unsigned short line_config_options; /* line configuration options */
unsigned short modem_config_options; /* modem configuration options */
unsigned short modem_status_timer; /* timer for monitoring modem status changes */
unsigned short API_options; /* API options */
unsigned short protocol_options; /* protocol options */
unsigned short HEC_options; /* HEC options */
unsigned char custom_Rx_COSET; /* the custom COSET value used when checking the HEC value in received cells */
unsigned char custom_Tx_COSET; /* the custom COSET value used when setting the HEC value in transmitted cells */
unsigned short buffer_options; /* Tx/Rx buffer options */
unsigned short max_cells_in_Tx_block; /* the maximum number of cells in an outgoing block */
unsigned char Tx_underrun_cell_GFC; /* the GFC value in a Tx underrun cell */
unsigned char Tx_underrun_cell_PT; /* the PT value in a Tx underrun cell */
unsigned char Tx_underrun_cell_CLP; /* the CLP value in a Tx underrun cell */
unsigned char Tx_underrun_cell_payload; /* the payload character in a Tx underrun cell */
unsigned short max_cells_in_Rx_block; /* the maximum number of cells in an incoming block */
unsigned short Rx_hunt_timer; /* receiver hunt timer */
unsigned short Rx_sync_bytes; /* receiver synchronization bytes */
unsigned short Rx_sync_offset; /* offset of the receiver synchronization bytes */
unsigned short cell_Rx_sync_loss_timer; /* cell reception synchronization loss timer */
unsigned short Rx_HEC_check_timer; /* the Rx HEC check timer */
unsigned short Rx_bad_HEC_timer; /* the time period for monitoring cells with bad HEC values */
unsigned short Rx_max_bad_HEC_count; /* the maximum number of bad HEC count */
unsigned short statistics_options; /* operational statistics options */
unsigned long ptr_shared_mem_info_struct; /* a pointer to the shared memory area information structure */
unsigned long ptr_Tx_stat_el_cfg_struct; /* a pointer to the transmit status element configuration structure */
unsigned long ptr_Rx_stat_el_cfg_struct; /* a pointer to the receive status element configuration structure */
} PHY_CONFIGURATION_STRUCT;
/* settings for the 'line_config_options' */
#define PHY_INTERFACE_LEVEL_V35 0x0001 /* V.35 interface level */
#define PHY_INTERFACE_LEVEL_RS232 0x0002 /* RS-232 interface level */
/* settings for the 'modem_config_options' */
#define PHY_MANUAL_DTR_RTS 0x0001 /* don't automatically raise DTR and RTS when performing an */
/* PHY_ENABLE_COMMUNICATIONS command */
#define PHY_IGNORE_CHG_MODEM_STATUS 0x0002 /* don't report changes in modem status to the application */
/* settings for the 'API_options' */
#define PHY_DISCARD_RX_UNASSIGNED_CELLS 0x0001 /* discard incoming Unassigned Cells */
#define PHY_DISCARD_RX_IDLE_CELLS 0x0002 /* discard incoming Idle Cells */
#define PHY_DISCARD_RX_PHYS_LAYER_CELLS 0x0004 /* discard incoming Physical Layer Cells */
#define PHY_TRANSPARENT_TX_RX_CELLS 0x0010 /* cells passed to and from the application transparently */
#define PHY_DECODED_TX_RX_CELLS 0x0020 /* cells decoded and formatted by the PHY firmware */
/* settings for the 'protocol_options' */
#define PHY_UNI 0x0001 /* configure as a User-Network Interface */
#define PHY_NNI 0x0002 /* configure as a Network Node Interface */
#define PHY_MANUAL_RX_SYNC 0x0100 /* use user-defined Rx synchronization parameters */
/* settings for the 'HEC_options' */
#define PHY_DISABLE_RX_HEC_CHECK 0x0001 /* disable the checking of the HEC value in received cells */
#define PHY_DISABLE_AUTO_SYNC_BAD_HEC 0x0002 /* disable automatic resynchronization on receipt of cells with bad HEC values */
#define PHY_DISABLE_RX_COSET 0x0010 /* disable XOR with COSET when checking the HEC value in received cells */
#define PHY_DISABLE_TX_COSET 0x0020 /* disable XOR with COSET when setting the HEC value in transmitted cells */
#define PHY_CUSTOM_RX_COSET 0x0040 /* use a custom COSET when checking the HEC value in received cells */
#define PHY_CUSTOM_TX_COSET 0x0080 /* use a custom COSET when setting the HEC value in transmitted cells */
/* bit settings for the 'buffer_options' */
#define PHY_TX_ONLY 0x0001 /* transmit only (no reception) */
#define PHY_RX_ONLY 0x0002 /* receive only (no transmission) */
#define PHY_SINGLE_TX_BUFFER 0x0010 /* configure a single transmit buffer */
/* settings for the 'statistics_options' */
#define PHY_TX_BYTE_COUNT_STAT 0x0001 /* record the number of bytes transmitted */
#define PHY_RX_BYTE_COUNT_STAT 0x0002 /* record the number of bytes received */
#define PHY_TX_THROUGHPUT_STAT 0x0004 /* compute the transmit throughput */
#define PHY_RX_THROUGHPUT_STAT 0x0008 /* compute the receive throughput */
#define PHY_INCL_UNDERRUN_TX_THRUPUT 0x0010 /* include Tx underrun cells in Tx throughput */
#define PHY_INCL_DISC_RX_THRUPUT 0x0020 /* include discarded (idle/unassigned) Rx cells in Rx throughput */
/* permitted minimum and maximum values for setting the PHY configuration */
#define PHY_MAX_BAUD_RATE_S508 2666666 /* maximum baud rate (S508) */
#define PHY_MAX_BAUD_RATE_S514 2750000 /* maximum baud rate (S514) */
#define PHY_MIN_MODEM_TIMER 0 /* minimum modem status timer */
#define PHY_MAX_MODEM_TIMER 6000 /* maximum modem status timer */
#define PHY_MIN_RX_HUNT_TIMER 1 /* minimum receiver hunt timer */
#define PHY_MAX_RX_HUNT_TIMER 6000 /* maximum receiver hunt timer */
#define PHY_MIN_RX_SYNC_OFFSET 0 /* minimum offset of receiver synchronization bytes */
#define PHY_MAX_RX_SYNC_OFFSET 50 /* maximum offset of receiver synchronization bytes */
#define PHY_MIN_CELLS_IN_TX_BLOCK 1 /* minimum number of cells in an outgoing block */
#define PHY_MAX_CELLS_IN_TX_BLOCK 38 /* maximum number of cells in an outgoing block */
#define PHY_MIN_CELLS_IN_RX_BLOCK 1 /* minimum number of cells in an incoming block */
#define PHY_MAX_CELLS_IN_RX_BLOCK 38 /* maximum number of cells in an incoming block */
#define PHY_MAX_RX_SYNC_LOSS_TIMER 6000 /* maximum cell reception sync loss timer */
#define PHY_MAX_RX_HEC_CHECK_TIMER 6000 /* maximum receive HEC check timer */
#define PHY_MIN_RX_BAD_HEC_TIMER 5 /* minimum time for monitoring cells with bad HEC values */
#define PHY_MAX_RX_BAD_HEC_TIMER 60000 /* maximum time for monitoring cells with bad HEC values */
#define PHY_MIN_RX_BAD_HEC_COUNT 1 /* the minimum bad HEC counter */
#define PHY_MAX_RX_BAD_HEC_COUNT 10000 /* the maximum bad HEC counter */
#define PHY_MAX_RX_INCORRECT_HEC_COUNT 100 /* maximum receive consecutive incorrect HEC counter */
/* ----------------------------------------------------------------------------
* Constants for the PHY_READ_STATUS command
* --------------------------------------------------------------------------*/
/* the PHY-level status structure */
typedef struct {
unsigned char Rx_sync_status; /* receiver synchronization status */
unsigned char excep_conditions; /* PHY exception conditions */
unsigned char no_Rx_blocks_avail; /* number of Rx blocks available for the application */
unsigned short Rx_sync_time; /* receiver synchronization time */
unsigned short Rx_sync_bytes; /* receiver synchronization bytes */
unsigned short Rx_sync_offset; /* offset of the receiver synchronization bytes */
} PHY_STATUS_STRUCT;
/* settings for the 'Rx_sync_status' variable */
#define PHY_RX_SYNC_LOST 0x00 /* synchronization has been lost */
#define PHY_RX_HUNT 0x01 /* receiver in hunt state */
#define PHY_RX_PRESYNC 0x02 /* receiver in presync state */
#define PHY_RX_SYNCHRONIZED 0x80 /* receiver synchronized */
/* ----------------------------------------------------------------------------
* Constants for the PHY_READ_OPERATIONAL_STATS command
* --------------------------------------------------------------------------*/
/* the PHY-level operational statistics structure */
typedef struct {
/* transmission statistics */
unsigned long blocks_Tx_count; /* number of blocks transmitted */
unsigned long bytes_Tx_count; /* number of bytes transmitted */
unsigned long Tx_throughput; /* transmit throughput */
unsigned long no_ms_for_Tx_thruput_comp; /* millisecond time used for the Tx throughput computation */
unsigned long Tx_underrun_cell_count; /* number of underrun cells transmitted */
unsigned long Tx_length_error_count; /* number of blocks transmitted with a length error */
unsigned long reserved_Tx_stat0; /* reserved for later use */
unsigned long reserved_Tx_stat1; /* reserved for later use */
/* reception statistics */
unsigned long blocks_Rx_count; /* number of blocks received */
unsigned long bytes_Rx_count; /* number of bytes received */
unsigned long Rx_throughput; /* receive throughput */
unsigned long no_ms_for_Rx_thruput_comp; /* millisecond time used for the Rx throughput computation */
unsigned long Rx_blocks_discard_count; /* number of incoming blocks discarded */
unsigned long Rx_Idle_Cell_discard_count; /* number of incoming Idle Cells discarded */
unsigned long Rx_Unas_Cell_discard_count; /* number of incoming Unassigned Cells discarded */
unsigned long Rx_Phys_Lyr_Cell_discard_count;/* number of incoming Physical Layer Cells discarded */
unsigned long Rx_bad_HEC_count; /* number of incoming cells with a bad HEC */
unsigned long reserved_Rx_stat0; /* reserved for later use */
unsigned long reserved_Rx_stat1; /* reserved for later use */
/* synchronization statistics */
unsigned long Rx_sync_attempt_count; /* receiver synchronization attempt count */
unsigned long Rx_sync_achieved_count; /* receiver synchronization achieved count */
unsigned long Rx_sync_failure_count; /* receiver synchronization failure count */
unsigned long Rx_hunt_attempt_count; /* Rx hunt attempt count */
unsigned long Rx_hunt_char_sync_count; /* Rx hunt character synchronization count */
unsigned long Rx_hunt_timeout_count; /* Rx hunt timeout count */
unsigned long Rx_hunt_achieved_count; /* Rx hunt achieved count */
unsigned long Rx_hunt_failure_count; /* Rx hunt failure count */
unsigned long Rx_presync_attempt_count; /* Rx presync attempt count */
unsigned long Rx_presync_achieved_count; /* Rx presync achieved count */
unsigned long Rx_presync_failure_count; /* Rx presync failure count */
unsigned long Rx_resync_bad_HEC_count; /* Rx re-synchronization due to cells received with a bad HEC */
unsigned long Rx_resync_reception_loss_count;/* Rx re-synchronization due to loss of reception */
unsigned long Rx_resync_overrun_count; /* Rx re-synchronization due receiver overrun */
unsigned long reserved_Rx_sync_stat0; /* reserved for later use */
unsigned long reserved_Rx_sync_stat1; /* reserved for later use */
} PHY_OPERATIONAL_STATS_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for the PHY_SET_TX_UNDERRUN_CONFIG command
* --------------------------------------------------------------------------*/
/* the PHY transmit underrun cell structure */
typedef struct {
unsigned char Tx_underrun_cell_GFC; /* the GFC value in a Tx underrun cell */
unsigned char Tx_underrun_cell_PT; /* the PT value in a Tx underrun cell */
unsigned char Tx_underrun_cell_CLP; /* the CLP value in a Tx underrun cell */
unsigned char Tx_underrun_cell_payload; /* the payload character in a Tx underrun cell */
} PHY_TX_UNDERRUN_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for using application interrupts
* --------------------------------------------------------------------------*/
/* the structure used for the PHY_SET_INTERRUPT_TRIGGERS/PHY_READ_INTERRUPT_TRIGGERS command */
typedef struct {
unsigned char interrupt_triggers; /* interrupt trigger configuration */
unsigned char IRQ; /* IRQ to be used */
unsigned short interrupt_timer; /* interrupt timer */
unsigned short misc_interrupt_bits; /* miscellaneous interrupt bits */
} PHY_INT_TRIGGERS_STRUCT;
/* 'interrupt_triggers' bit settings */
#define PHY_INT_RX 0x01 /* interrupt on reception */
#define PHY_INT_TX 0x02 /* interrupt on transmission */
#define PHY_INT_COMMAND_COMPLETE 0x04 /* interrupt when an interface command is complete */
#define PHY_INT_TIMER 0x08 /* interrupt on a defined 1/100th second timeout */
#define PHY_INT_GLOBAL_EXCEP_COND 0x10 /* interrupt on a global exception condition */
#define PHY_INT_PHY_EXCEP_COND 0x20 /* interrupt on a PHY-level exception condition */
#define PHY_INT_TRACE 0x80 /* interrupt when trace data is available */
/* 'interrupt_timer' limitation */
#define MAX_INTERRUPT_TIMER_VALUE 60000 /* the maximum permitted timer interrupt value */
/* interrupt types indicated at 'interrupt_type' byte of the INTERRUPT_INFORMATION_STRUCT */
#define PHY_NO_INT_PEND 0x00 /* no interrups are pending */
#define PHY_RX_INT_PEND 0x01 /* a receive interrupt is pending */
#define PHY_TX_INT_PEND 0x02 /* a transmit interrupt is pending */
#define PHY_COMMAND_COMPLETE_INT_PEND 0x04 /* a 'command complete' interrupt is pending */
#define PHY_TIMER_INT_PEND 0x08 /* a timer interrupt is pending */
#define PHY_GLOBAL_EXCEP_COND_INT_PEND 0x10 /* a global exception condition interrupt is pending */
#define PHY_PHY_EXCEP_COND_INT_PEND 0x20 /* a PHY exception condition interrupt is pending */
#define PHY_TRACE_INT_PEND 0x80 /* a trace data interrupt is pending */
/* ----------------------------------------------------------------------------
* Constants for block transmission
* --------------------------------------------------------------------------*/
/* the block transmit status element configuration structure */
typedef struct {
unsigned short number_Tx_status_els; /* number of transmit status elements */
unsigned long base_addr_Tx_status_els; /* base address of the transmit element list */
unsigned long next_Tx_status_el_to_use; /* pointer to the next transmit element to be used */
} PHY_TX_STATUS_EL_CFG_STRUCT;
/* the block transmit status element structure */
typedef struct {
unsigned char opp_flag; /* opp flag */
unsigned short block_length; /* length of the block to be transmitted */
unsigned char misc_Tx_bits; /* miscellaneous Tx bits */
unsigned char Tx_underrun_cell_GFC; /* the GFC value in a Tx underrun cell */
unsigned char Tx_underrun_cell_PT; /* the PT value in a Tx underrun cell */
unsigned char Tx_underrun_cell_CLP; /* the CLP value in a Tx underrun cell */
unsigned char Tx_underrun_cell_payload; /* the payload character in a Tx underrun cell */
unsigned char reserved[4]; /* reserved for internal use */
unsigned long ptr_data_bfr; /* pointer to the data area */
} PHY_TX_STATUS_EL_STRUCT;
/* settings for the 'misc_Tx_bits' */
#define PHY_UPDATE_TX_UNDERRUN_CONFIG 0x01 /* update the transmit underrun cell configuration */
/* ----------------------------------------------------------------------------
* Constants for block reception
* --------------------------------------------------------------------------*/
/* the block receive status element configuration structure */
typedef struct {
unsigned short number_Rx_status_els; /* number of receive status elements */
unsigned long base_addr_Rx_status_els; /* base address of the receive element list */
unsigned long next_Rx_status_el_to_use; /* pointer to the next receive element to be used */
} PHY_RX_STATUS_EL_CFG_STRUCT;
/* the block receive status element structure */
typedef struct {
unsigned char opp_flag; /* opp flag */
unsigned short block_length; /* length of the received block */
unsigned char misc_Rx_bits; /* miscellaneous Rx bits */
unsigned short time_stamp; /* receive time stamp */
unsigned char reserved[6]; /* reserved for internal use */
unsigned long ptr_data_bfr; /* pointer to the data area */
} PHY_RX_STATUS_EL_STRUCT;
/* settings for the 'misc_Rx_bits' */
#define RX_OVERRUN_ERROR 0x04 /* the incoming block has an overrun error */
#define HEC_ERROR 0x08 /* the received cell has a HEC error */
/* structure used for transmitting and receiving cells that are decoded and formatted by the PHY firmware */
typedef struct {
unsigned char reserved[5]; /* reserved for internal use */
unsigned char payload[48]; /* information payload */
unsigned short GFC_VPI; /* GFC (Generic Flow Control)/VPI (Virtual Path Identifier) */
unsigned short VCI; /* VCI (Virtual Channel Identifier) */
unsigned char PT; /* PT (Payload Type) */
unsigned char CLP; /* CLP (Cell Loss Priority) */
unsigned char HEC; /* HEC (Header Error Control) */
} PHY_TX_RX_DECODE_STRUCT;
/* ----------------------------------------------------------------------------
* Constants defining the shared memory information area
* --------------------------------------------------------------------------*/
/* the global information structure */
typedef struct {
unsigned char global_status; /* global status */
unsigned char modem_status; /* current modem status */
unsigned char global_excep_conditions; /* global exception conditions */
unsigned char glob_info_reserved[5]; /* reserved */
unsigned char code_name[4]; /* code name */
unsigned char code_version[4]; /* code version */
} GLOBAL_INFORMATION_STRUCT;
/* the PHY information structure */
typedef struct {
unsigned char Rx_sync_status; /* receiver synchronization status */
unsigned char PHY_excep_conditions; /* PHY exception conditions */
unsigned char no_Rx_blocks_avail; /* number of Rx blocks available for the application */
unsigned char PHY_info_reserved[13]; /* reserved */
} PHY_INFORMATION_STRUCT;
/* the interrupt information structure */
typedef struct {
unsigned char interrupt_type; /* type of interrupt triggered */
unsigned char interrupt_permission; /* interrupt permission mask */
unsigned char int_info_reserved[14]; /* reserved */
} INTERRUPT_INFORMATION_STRUCT;
/* the front-end information structure */
typedef struct {
unsigned char parallel_port_A_input; /* input - parallel port A */
unsigned char parallel_port_B_input; /* input - parallel port B */
unsigned char FT1_INS_alarm_condition; /* the current FT1 in-service/alarm condition */
unsigned char FT1_info_reserved[13]; /* reserved */
} FE_INFORMATION_STRUCT;
/* the shared memory area information structure */
typedef struct {
GLOBAL_INFORMATION_STRUCT global_info_struct; /* the global information structure */
PHY_INFORMATION_STRUCT PHY_info_struct; /* the PHY information structure */
INTERRUPT_INFORMATION_STRUCT interrupt_info_struct;/* the interrupt information structure */
FE_INFORMATION_STRUCT FE_info_struct; /* the front-end information structure */
} SHARED_MEMORY_INFO_STRUCT;
#pragma pack()
#undef wan_udphdr_data
#define wan_udphdr_data wan_udphdr_u.atm.data
#ifdef __KERNEL__
#undef wan_udp_data
#define wan_udp_data wan_udp_hdr.wan_udphdr_u.atm.data
#endif
//#define SHARED_MEMORY_INFO_STRUCT void
//#define CONFIGURATION_STRUCT PHY_CONFIGURATION_STRUCT
//#define INTERRUPT_INFORMATION_STRUCT void
#define DATA_RX_STATUS_EL_STRUCT PHY_RX_STATUS_EL_STRUCT
#define DATA_TX_STATUS_EL_STRUCT PHY_TX_STATUS_EL_STRUCT
#define INT_TRIGGERS_STRUCT PHY_INT_TRIGGERS_STRUCT
#define TX_STATUS_EL_CFG_STRUCT PHY_TX_STATUS_EL_CFG_STRUCT
#define RX_STATUS_EL_CFG_STRUCT PHY_RX_STATUS_EL_CFG_STRUCT
//#define TRACE_STATUS_EL_CFG_STRUCT void
//#define TRACE_STATUS_ELEMENT_STRUCT void
//#define LINE_TRACE_CONFIG_STRUCT void
//#define COMMS_ERROR_STATS_STRUCT void
#define OPERATIONAL_STATS_STRUCT PHY_OPERATIONAL_STATS_STRUCT
#define DFLT_TEMPLATE_VALUE ...
#define WANCONFIG_FRMW WANCONFIG_ATM
#define COMMAND_OK OK
#define APP_INT_ON_TIMER PHY_INT_TIMER
#define APP_INT_ON_TX_FRAME PHY_INT_TX
#define APP_INT_ON_RX_FRAME PHY_INT_RX
#define APP_INT_ON_GLOBAL_EXCEP_COND PHY_INT_GLOBAL_EXCEP_COND
#define APP_INT_ON_EXCEP_COND PHY_INT_PHY_EXCEP_COND
#define APP_INT_ON_COMMAND_COMPLETE PHY_INT_COMMAND_COMPLETE
#define COMMAND_COMPLETE_APP_INT_PEND PHY_COMMAND_COMPLETE_INT_PEND
#define RX_APP_INT_PEND PHY_RX_INT_PEND
#define TX_APP_INT_PEND PHY_TX_INT_PEND
#define EXCEP_COND_APP_INT_PEND PHY_PHY_EXCEP_COND_INT_PEND
#define GLOBAL_EXCEP_COND_APP_INT_PEND PHY_GLOBAL_EXCEP_COND_INT_PEND
#define TIMER_APP_INT_PEND PHY_TIMER_INT_PEND
#define TRACE_APP_INT_PEND PHY_TRACE_INT_PEND
#define READ_CODE_VERSION PHY_READ_CODE_VERSION
#define READ_CONFIGURATION PHY_READ_CONFIGURATION
#define SET_CONFIGURATION PHY_SET_CONFIGURATION
#define DISABLE_COMMUNICATIONS PHY_DISABLE_COMMUNICATIONS
#define ENABLE_COMMUNICATIONS PHY_ENABLE_COMMUNICATIONS
#define SET_INTERRUPT_TRIGGERS PHY_SET_INTERRUPT_TRIGGERS
#define READ_INTERRUPT_TRIGGERS PHY_READ_INTERRUPT_TRIGGERS
#define UDPMGMT_SIGNATURE "ATMPIPEA"
//#define FT1_MONITOR_STATUS_CTRL DFLT_TEMPLATE_VALUE
//#define ENABLE_READ_FT1_STATUS DFLT_TEMPLATE_VALUE
//#define ENABLE_READ_FT1_OP_STATS DFLT_TEMPLATE_VALUE
//#define CPIPE_FT1_READ_STATUS DFLT_TEMPLATE_VALUE
//#define TRACE_INACTIVE DFLT_TEMPLATE_VALUE
//#define READ_GLOBAL_STATISTICS DFLT_TEMPLATE_VALUE
//#define READ_MODEM_STATUS DFLT_TEMPLATE_VALUE
//#define READ_LINK_STATUS DFLT_TEMPLATE_VALUE
//#define READ_COMMS_ERROR_STATS DFLT_TEMPLATE_VALUE
//#define READ_TRACE_CONFIGURATION DFLT_TEMPLATE_VALUE
//#define GET_TRACE_INFO DFLT_TEMPLATE_VALUE
enum {
ROUTER_UP_TIME = 0x50,
FT1_READ_STATUS,
SET_FT1_MODE,
ENABLE_TRACING,
DISABLE_TRACING,
GET_TRACE_INFO,
FT1_MONITOR_STATUS_CTRL,
ENABLE_READ_FT1_STATUS,
ENABLE_READ_FT1_OP_STATS,
READ_FT1_OPERATIONAL_STATS,
ATM_LINK_STATUS
};
#define ATM_TRACE_CELL 0x01
#define ATM_TRACE_PDU 0x02
#define ATM_TRACE_DATA 0x04
#define READ_OPERATIONAL_STATS PHY_READ_OPERATIONAL_STATS
//#define SET_TRACE_CONFIGURATION DFLT_TEMPLATE_VALUE
//#define TRACE_ACTIVE DFLT_TEMPLATE_VALUE
#define EXCEP_IRQ_TIMEOUT EXCEP_APP_IRQ_TIMEOUT
#define READ_EXCEPTION_CONDITION PHY_READ_EXCEPTION_CONDITION
#define EXCEP_LINK_ACTIVE DFLT_TEMPLATE_VALUE
#define EXCEP_LINK_INACTIVE_MODEM DFLT_TEMPLATE_VALUE
#define EXCEP_LINK_INACTIVE_KPALV DFLT_TEMPLATE_VALUE
#define EXCEP_IP_ADDRESS_DISCOVERED DFLT_TEMPLATE_VALUE
#define EXCEP_LOOPBACK_CONDITION DFLT_TEMPLATE_VALUE
#define NO_EXCEP_COND_TO_REPORT DFLT_TEMPLATE_VALUE
//#define READ_GLOBAL_EXCEPTION_CONDITION DFLT_TEMPLATE_VALUE
//#define EXCEP_MODEM_STATUS_CHANGE DFLT_TEMPLATE_VALUE
#define DCD_HIGH 0x08
#define CTS_HIGH 0x20
#define INTERFACE_LEVEL_RS232 PHY_INTERFACE_LEVEL_RS232
#define INTERFACE_LEVEL_V35 PHY_INTERFACE_LEVEL_V35
#define MIN_WP_PRI_MTU 1500
#define MAX_WP_PRI_MTU MIN_WP_PRI_MTU
#define DEFAULT_WP_PRI_MTU MIN_WP_PRI_MTU
#define ATM_CELL_SIZE 53
#define ATM_OVERHEAD 1.1
#define MIN_WP_SEC_MTU 50
#define MAX_WP_SEC_MTU PHY_MAX_CELLS_IN_RX_BLOCK*ATM_CELL_SIZE/ATM_OVERHEAD
#define DEFAULT_WP_SEC_MTU 1500
/* reasons for enabling the timer interrupt on the adapter */
#define TMR_INT_ENABLED_UDP 0x01
#define TMR_INT_ENABLED_UPDATE 0x02
#define TMR_INT_ENABLED_CONFIG 0x10
#define TMR_INT_ENABLED_TE 0x20
#ifdef __KERNEL__
#define PRI_BASE_ADDR_MB_STRUCT BASE_ADDR_MB_STRUCT
static __inline void init_card_mailbox(sdla_t *card)
{
/* Initialize protocol-specific fields */
if(card->hw.type != SDLA_S514){
card->mbox = (void *) card->hw.dpmbase;
}else{
/* for a S514 adapter, set a pointer to the actual mailbox in the */
/* allocated virtual memory area */
card->mbox = (void *) card->hw.dpmbase + PRI_BASE_ADDR_MB_STRUCT;
}
}
static __inline wan_mbox_t *get_card_mailbox(sdla_t *card)
{
return (wan_mbox_t*)card->mbox;
}
static __inline void *get_card_flags(sdla_t *card)
{
return card->flags;
}
static __inline void set_card_flags(sdla_t *card, void *ptr)
{
card->flags = ptr;
}
static __inline void *get_card_rxmb(sdla_t *card)
{
return card->u.atm.rxmb;
}
static __inline void set_card_rxmb(sdla_t *card, void *ptr)
{
card->u.atm.rxmb = ptr;
if((void*)ptr > card->u.atm.rxbuf_last){
card->u.atm.rxmb = card->u.atm.rxbuf_base;
}
}
static __inline void *get_card_txbuf(sdla_t *card)
{
return card->u.atm.txbuf;
}
static __inline void set_card_txbuf(sdla_t *card, void *ptr)
{
card->u.atm.txbuf = ptr;
if ((void*)ptr > card->u.atm.txbuf_last){
card->u.atm.txbuf = card->u.atm.txbuf_base;
}
}
#endif
#endif

View File

@ -0,0 +1,366 @@
/***************************************************************************
* sdla_bri.h Sangoma ISDN-BRI definitions (for Cologne XHFC-2SU chip).
*
* Author(s): David Rokhvarg <davidr@sangoma.com>
*
* Copyright: (c) 1984 - 2007 Sangoma Technologies Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*
* ============================================================================
* February 14, 2007 David Rokhvarg
* v1.0 Initial version.
*
* February 26, 2008 David Rokhvarg
* v1.1 Imrovements in SU State transition code.
* Implemented T3 and T4 timers.
*
******************************************************************************
*/
#ifndef __SDLA_BRI_H
# define __SDLA_BRI_H
#if defined(__LINUX__)
# include <linux/xhfc24succ.h>
#else
# include <xhfc24succ.h>
#endif
/*******************************************************************************
** DEFINES and MACROS
*******************************************************************************/
#define IS_BRI_CARD(card) IS_BRI_FEMEDIA(&(card)->fe)
#define WAN_BRI_START_CHANNEL 1
#define MAX_BRI_REMORAS 4
#define MAX_BRI_MODULES_PER_REMORA 3
/*
Maximum of 4 remoras, 3 modules on each - maximum 12 modules.
On each module there is 1 dual-port ISDN BRI chip.
On each line there are 2 B-channels and 1 D-channel.
*/
#define MAX_BRI_MODULES 12
#define MAX_BRI_CHANNELS 2 /* Number of channels per device */
#define MAX_BRI_LINES (MAX_BRI_MODULES*MAX_BRI_CHANNELS)
/*
The maximum number of BRI timeslots is 32.
This is needed for the d-chan, which is always at the otherwise unused timeslot 31.
But AFT hardware is actually using only 24 timeslots - only for the b-chans.
*/
#define MAX_TIMESLOTS 32
#define BRI_DCHAN_LOGIC_CHAN 31
#define BRI_DCHAN_ACTIVE_CFG_CHAN 2
#define MAX_BRI_TIMESLOTS 3 /* this is the number of b-chans (2) and the d-chan on one BRI line */
#define MAX_TENT_CHANNELS MAX_BRI_MODULES
#define MOD_TYPE_NONE 0 /* corresponds to module which is not installed */
#define MOD_TYPE_NT 1
#define MOD_TYPE_TE 2
#define MOD_TYPE_TEST 3
#define WP_BRI_DECODE_MOD_TYPE(type) \
(type == MOD_TYPE_NT) ? "NT" : \
(type == MOD_TYPE_TE) ? "TE" : "Unknown"
/* SPI interface */
#define MOD_CHAIN_DISABLED 0
#define MOD_CHAIN_ENABLED 1
#define SPI_INTERFACE_REG 0x54
#define SPI_MAX_RETRY_COUNT 10
#define MOD_SPI_RESET 0x40000000
#define MOD_SPI_BUSY 0x80000000
#define MOD_SPI_V3_STAT 0x08000000 /* bit 27 used as START in version 1-2-3 */
#define MOD_SPI_START 0x08000000
#define BRI_FE_MAGIC 0x150D
#define WAN_BRI_OPERMODE_LEN 20
#if !defined(__WINDOWS__)
/* Front-End UDP command */
#define WAN_FE_TONES (WAN_FE_UDP_CMD_START + 0)
#define WAN_FE_RING (WAN_FE_UDP_CMD_START + 1)
#define WAN_FE_REGDUMP (WAN_FE_UDP_CMD_START + 2)
#define WAN_FE_STATS (WAN_FE_UDP_CMD_START + 3)
#define WAN_BRI_SET_ECHOTUNE _IOW (ZT_CODE, 63, struct wan_bri_echo_coefs)
#endif
/******************************************************************************
** XHFC definitions
*******************************************************************************/
/* max. number of S/U ports per XHFC-2SU controller */
#define BRI_MAX_PORTS_PER_CHIP 2
#define PORT_0 0
#define PORT_1 1
/* flags in _u16 port mode */
#define PORT_UNUSED 0x0000
#define PORT_MODE_NT 0x0001
#define PORT_MODE_TE 0x0002
#define PORT_MODE_S0 0x0004
#define PORT_MODE_UP 0x0008
#define PORT_MODE_EXCH_POL 0x0010
#define PORT_MODE_LOOP 0x0020
#define NT_TIMER 0x8000
/* NT / TE defines */
#define NT_T1_COUNT 25 /* number of 4ms interrupts for G2 timeout */
#define CLK_DLY_TE 0x0e /* CLKDEL in TE mode */
#define CLK_DLY_NT 0x6c /* CLKDEL in NT mode */
#define STA_ACTIVATE 0x60 /* start activation in A_SU_WR_STA */
#define STA_DEACTIVATE 0x40 /* start deactivation in A_SU_WR_STA */
#define LIF_MODE_NT 0x04 /* Line Interface NT mode */
#define XHFC_TIMER_T3 8000 /* 8s activation timer T3 */
#define XHFC_TIMER_T4 500 /* 500ms deactivation timer T4 */
/* xhfc Layer1 physical commands */
#define HFC_L1_ACTIVATE_TE 0x01
#define HFC_L1_FORCE_DEACTIVATE_TE 0x02
#define HFC_L1_ACTIVATE_NT 0x03
#define HFC_L1_DEACTIVATE_NT 0x04
#define HFC_L1_TESTLOOP_B1 0x05
#define HFC_L1_TESTLOOP_B2 0x06
/* xhfc Layer1 Flags (stored in bri_xhfc_port_t->l1_flags) */
#define HFC_L1_ACTIVATING 1
#define HFC_L1_ACTIVATED 2
#define HFC_L1_DEACTTIMER 4
#define HFC_L1_ACTTIMER 8
/* Layer1 timer Flags (stored in bri_xhfc_port_t->timer_flags) */
#define T3_TIMER_ACTIVE 1
#define T4_TIMER_ACTIVE 2
#define FIFO_MASK_TX 0x55555555
#define FIFO_MASK_RX 0xAAAAAAAA
#ifndef MAX_DFRAME_LEN_L1
#define MAX_DFRAME_LEN_L1 300
#endif
#define USE_F0_COUNTER 1 /* akkumulate F0 counter diff every irq */
#define TRANSP_PACKET_SIZE 0 /* minium tranparent packet size for transmittion to upper layer */
typedef struct sdla_bri_cfg_ {
int not_used;
int opermode;
char opermode_name[WAN_BRI_OPERMODE_LEN];
/* int tdmv_law;*/ /* WAN_TDMV_ALAW or WAN_TDMV_MULAW */
char clock_mode;
} sdla_bri_cfg_t;
#if defined(WAN_KERNEL)
#if !defined(WAN_DEBUG_FE)
/* no debugging info compiled */
/* NT/TE */
# define WRITE_BRI_REG(mod_no,reg,val) \
fe->write_fe_reg( fe->card, \
(int)mod_no, \
fe->bri_param.mod[mod_no].type, \
fe->bri_param.mod[mod_no].chain, \
(int)reg, (int)val)
# define READ_BRI_REG(mod_no,reg) \
fe->read_fe_reg( fe->card, \
(int)mod_no, \
fe->bri_param.mod[mod_no].type, \
fe->bri_param.mod[mod_no].chain, \
(int)reg)
#else
#warning "WAN_DEBUG_FE - Debugging Defined"
/* NT/TE */
# define WRITE_BRI_REG(mod_no,reg,val) \
fe->write_fe_reg( fe->card, \
(int)mod_no, \
fe->bri_param.mod[mod_no].type, \
fe->bri_param.mod[mod_no].chain, \
(int)reg, (int)val,__FILE__,(int)__LINE__)
# define READ_BRI_REG(mod_no,reg) \
fe->read_fe_reg( fe->card, \
(int)mod_no, \
fe->bri_param.mod[mod_no].type, \
fe->bri_param.mod[mod_no].chain, \
(int)reg,__FILE__,(int)__LINE__)
#endif/* #if !defined(WAN_DEBUG_FE) */
#define __READ_BRI_REG(mod_no,reg) \
fe->__read_fe_reg( fe->card, \
(int)mod_no, \
fe->bri_param.mod[mod_no].type, \
fe->bri_param.mod[mod_no].chain, \
(int)reg)
/***************************************************************/
/* port struct for each S/U port */
typedef struct {
u_int8_t idx; /* port idx in hw->port[idx] */
void *hw; /* back pointer to 'wp_bri_module_t' */
u_int16_t mode; /* NT/TE / ST/U */
u_int32_t l1_flags;
u_int32_t timer_flags;
int drx_indx;
int dtx_indx, bytes2transmit;
u_int8_t drxbuf[MAX_DFRAME_LEN_L1];
u_int8_t dtxbuf[MAX_DFRAME_LEN_L1];
/* layer1 ISDN timer */
wan_timer_t t3_timer;
wan_timer_t t4_timer;
/* chip registers */
reg_a_su_rd_sta su_state;
reg_a_su_ctrl0 su_ctrl0;
reg_a_su_ctrl1 su_ctrl1;
reg_a_su_ctrl2 su_ctrl2;
reg_a_st_ctrl3 st_ctrl3;
/* DavidR */
reg_a_sl_cfg sl_cfg;/* for data direction programming on pins STIO1 and STIO2 */
u_int32_t clock_routing_state, clock_routing_counter;
u_int32_t l1_state;/* BRI L1 current state of the line */
int nt_timer;
} bri_xhfc_port_t;
/*******************************************************************************
** TYPEDEF STRUCTURE
*******************************************************************************/
typedef struct {
unsigned int mod_no;
/* Both ports of a module will always be in the
SAME mode - TE or NT. */
int type;
int chain;
unsigned long events;
#if 0
#if defined(__WINDOWS__)
wan_event_ctrl_t current_control_event;
wan_event_ctrl_t *current_control_event_ptr;
#else
WAN_LIST_HEAD(, wan_event_ctrl_) event_head;
#endif
#endif
/* TDM Voice applications */
int sig;
/**********************************/
int num_ports; /* number of S and U interfaces */
int max_fifo; /* always 4 fifos per port */
u_int8_t max_z; /* fifo depth -1 */
bri_xhfc_port_t port[BRI_MAX_PORTS_PER_CHIP]; /* 2 ports - one for each Line intercace */
u_int32_t irq_cnt; /* count irqs */
u_int32_t f0_cnt; /* last F0 counter value */
u_int32_t f0_akku; /* akkumulated f0 counter deltas */
/* chip registers */
reg_r_pcm_md0 pcm_md0;
reg_r_pcm_md1 pcm_md1;
/**********************************/
void *fe; /* pointer back to 'sdla_fe_t' */
} wp_bri_module_t;
typedef struct {
/* u_int16_t type; */
unsigned int mod_no; /* A500 - ISDN BRI Remora */
unsigned char ec_dtmf_port; /* EC DTMF: SOUT or ROUT */
unsigned long ts_map;
u_int8_t tone;
} sdla_bri_event_t;
typedef struct sdla_bri_param {
int not_used;
/* each module has 2 lines, */
wp_bri_module_t mod[MAX_BRI_LINES];
/*
Maximum of 4 remoras, 3 modules on each - maximum 12 modules.
On each module there is 1 dual-port ISDN BRI chip.
On each line there are 2 B-channels and 1 D-channel.
It means we have 48 timeslots (B-channels only!), and 32 bits are not enough.
First 0-23 timeslots will be mapped on 'module_map[0]' and 24-47 will be mapped
on 'module_map[1]'.
*/
u_int32_t module_map[2]; /* Map of available module */
u_int16_t max_fe_channels; /* Number of available modules */
u_int8_t critical;
/*
Flag indicating if this logical 'card' (sdla_t) which represents a BRI line,
is the 'clock reference port' for the physical A500 card.
Only ONE 'card' may have this flag set to WANOPT_YES, all others must be
WANOPT_NO.
TE mode: if 'is_clock_master' is set to WANOPT_YES, clock recovered from
the line will be routed to ALL other BRI modules on the card.
*/
u_int8_t is_clock_master;
} sdla_bri_param_t;
/*******************************************************************************
DEFINES AND MACROS
*******************************************************************************/
/* AFT register - Intel x86 definition. */
typedef struct bri_reg{
u_int32_t data:8; /* lsb */
u_int32_t contrl:8;
u_int32_t reserv1:8;
u_int32_t mod_addr:2; /* 00, 01, 10 - adresses modules,
code 11 - address of status register per-remora.
*/
u_int32_t remora_addr:4; /* Select Remora. Maximum is 4 (from 0 to 3) for BRI */
u_int32_t reset:1;
u_int32_t start:1;/* msb */
}bri_reg_t;
#define READ_BIT (1 << 7)
#define ADDR_BIT (1 << 6)
/*******************************************************************************
** FUNCTION PROTOTYPES
*******************************************************************************/
extern int wp_bri_iface_init(void*);
#endif/* WAN_KERNEL */
/***************************************************************/
#endif /* __SDLA_BRI_H */

View File

@ -2,9 +2,9 @@
#ifndef _BSC_HEADER_
#define _BSC_HEADER_
#pragma pack(1)
/*========== MAILBOX COMMANDS AND RETURN CODES ==========*/
#define BSC_READ 0x00
#define BSC_WRITE 0x01
@ -52,91 +52,91 @@
*/
/* control block */
typedef struct {
unsigned char opp_flag ;
unsigned char command ;
unsigned short buffer_length ;
unsigned char return_code ;
unsigned char misc_tx_rx_bits ;
unsigned short heading_length ;
unsigned short notify ;
unsigned char station ;
unsigned char poll_address ;
unsigned char select_address ;
unsigned char device_address ;
unsigned char notify_extended ;
unsigned char reserved ;
unsigned char data[MDATALEN] ;
unsigned char opp_flag ;
unsigned char command ;
unsigned short buffer_length ;
unsigned char return_code ;
unsigned char misc_tx_rx_bits ;
unsigned short heading_length ;
unsigned short notify ;
unsigned char station ;
unsigned char poll_address ;
unsigned char select_address ;
unsigned char device_address ;
unsigned char notify_extended ;
unsigned char reserved ;
unsigned char data[MDATALEN] ;
} BSC_MAILBOX_STRUCT;
typedef struct {
unsigned char line_speed_number ;
unsigned short max_data_frame_size ;
unsigned char secondary_station ;
unsigned char num_consec_PAD_eof ;
unsigned char num_add_lead_SYN ;
unsigned char conversational_mode ;
unsigned char pp_dial_up_operation ;
unsigned char switched_CTS_RTS ;
unsigned char EBCDIC_encoding ;
unsigned char auto_open ;
unsigned char misc_bits ;
unsigned char protocol_options1 ;
unsigned char protocol_options2 ;
unsigned short reserved_pp ;
unsigned char max_retransmissions ;
unsigned short fast_poll_retries ;
unsigned short TTD_retries ;
unsigned short restart_timer ;
unsigned short pp_slow_restart_timer ;
unsigned short TTD_timer ;
unsigned short pp_delay_between_EOT_ENQ ;
unsigned short response_timer ;
unsigned short rx_data_timer ;
unsigned short NAK_retrans_delay_timer ;
unsigned short wait_CTS_timer ;
unsigned char mp_max_consec_ETX ;
unsigned char mp_general_poll_address ;
unsigned short sec_poll_timeout ;
unsigned char pri_poll_skips_inactive ;
unsigned char sec_additional_stn_send_gpoll ;
unsigned char pri_select_retries ;
unsigned char mp_multipoint_options ;
unsigned short reserved ;
unsigned char line_speed_number ;
unsigned short max_data_frame_size ;
unsigned char secondary_station ;
unsigned char num_consec_PAD_eof ;
unsigned char num_add_lead_SYN ;
unsigned char conversational_mode ;
unsigned char pp_dial_up_operation ;
unsigned char switched_CTS_RTS ;
unsigned char EBCDIC_encoding ;
unsigned char auto_open ;
unsigned char misc_bits ;
unsigned char protocol_options1 ;
unsigned char protocol_options2 ;
unsigned short reserved_pp ;
unsigned char max_retransmissions ;
unsigned short fast_poll_retries ;
unsigned short TTD_retries ;
unsigned short restart_timer ;
unsigned short pp_slow_restart_timer ;
unsigned short TTD_timer ;
unsigned short pp_delay_between_EOT_ENQ ;
unsigned short response_timer ;
unsigned short rx_data_timer ;
unsigned short NAK_retrans_delay_timer ;
unsigned short wait_CTS_timer ;
unsigned char mp_max_consec_ETX ;
unsigned char mp_general_poll_address ;
unsigned short sec_poll_timeout ;
unsigned char pri_poll_skips_inactive ;
unsigned char sec_additional_stn_send_gpoll ;
unsigned char pri_select_retries ;
unsigned char mp_multipoint_options ;
unsigned short reserved ;
} BSC_CONFIG_STRUCT;
typedef struct {
unsigned char max_tx_queue ;
unsigned char max_rx_queue ;
unsigned char station_flags ;
unsigned char max_tx_queue ;
unsigned char max_rx_queue ;
unsigned char station_flags ;
}ADD_STATION_STRUCT;
typedef struct {
unsigned char station ;
unsigned short time_stamp ;
unsigned char reserved[13] ;
unsigned char station ;
unsigned short time_stamp ;
unsigned char reserved[13] ;
} api_rx_hdr_t;
typedef struct {
api_rx_hdr_t api_rx_hdr ;
void * data ;
api_rx_hdr_t api_rx_hdr ;
void * data ;
} api_rx_element_t;
typedef struct {
unsigned char station ;
unsigned char misc_tx_rx_bits ;
unsigned char reserved[14] ;
unsigned char station ;
unsigned char misc_tx_rx_bits ;
unsigned char reserved[14] ;
} api_tx_hdr_t;
typedef struct {
api_tx_hdr_t api_tx_hdr ;
void * data ;
api_tx_hdr_t api_tx_hdr ;
void * data ;
} api_tx_element_t;
#pragma pack()
#define SIOC_WANPIPE_EXEC_CMD SIOC_WANPIPE_DEVPRIVATE
#pragma pack()
#endif

View File

@ -1,4 +1,4 @@
/* $Header: /usr/local/cvsroot/wanpipe_linux/code/include/sdla_bscstrm.h,v 1.3 2004/09/28 21:47:30 sangoma Exp $ */
/* $Header: /usr/local/cvsroot/wanpipe_linux/code/include/sdla_bscstrm.h,v 1.4 2007/05/24 17:45:25 sangoma Exp $ */
/*
@ -12,6 +12,9 @@
/*
* $Log: sdla_bscstrm.h,v $
* Revision 1.4 2007/05/24 17:45:25 sangoma
* Removed PACKED from include files
*
* Revision 1.3 2004/09/28 21:47:30 sangoma
* *** empty log message ***
*
@ -234,25 +237,25 @@ typedef struct {
#define RX_EXCESSIVE_LGTH_ERR_APP_LVL 0x20 /* the received block was too long (application level) */
typedef struct {
unsigned char station ;
unsigned short time_stamp ;
unsigned char reserved[13] ;
unsigned char station ;
unsigned short time_stamp ;
unsigned char reserved[13] ;
} api_rx_hdr_t;
typedef struct {
api_rx_hdr_t api_rx_hdr ;
unsigned char data[1] ;
api_rx_hdr_t api_rx_hdr ;
unsigned char data[1] ;
} api_rx_element_t;
typedef struct {
unsigned char station ;
unsigned char misc_tx_rx_bits ;
unsigned char reserved[14] ;
unsigned char station ;
unsigned char misc_tx_rx_bits ;
unsigned char reserved[14] ;
} api_tx_hdr_t;
typedef struct {
api_tx_hdr_t api_tx_hdr ;
unsigned char data[1] ;
api_tx_hdr_t api_tx_hdr ;
unsigned char data[1] ;
} api_tx_element_t;
#pragma pack()

View File

@ -13,13 +13,11 @@
* Sep 24, 1998 Jaspreet Singh o Initial Version.
*****************************************************************************/
#ifndef __SDLA_BSTRM__
#define __SDLA_BSTRM__
#ifndef __SDLA_BSTRM_H__
#define __SDLA_BSTRM_H__
#pragma pack(1)
/* Status flag for determining whether to perform a check on socket receive
* queue.
*/
@ -84,20 +82,20 @@ for the mailbox header area, we are left with a mailbox data size of 4064 bytes.
/* the mailbox structure */
typedef struct {
unsigned char opp_flag ; /* the opp flag */
unsigned char command ; /* the user command */
unsigned short buffer_length ; /* the data length */
unsigned char return_code ; /* the return code */
unsigned char misc_Tx_Rx_bits ; /* miscellaneous transmit and receive bits */
unsigned char Rx_error_bits ; /* an indication of a block received with an error */
unsigned short Rx_time_stamp ; /* a millisecond receive time stamp */
unsigned char reserved[7] ; /* reserved for later use */
char data[SIZEOF_MB_DATA_BFR] ; /* the data area */
unsigned char opp_flag ; /* the opp flag */
unsigned char command ; /* the user command */
unsigned short buffer_length ; /* the data length */
unsigned char return_code ; /* the return code */
unsigned char misc_Tx_Rx_bits ; /* miscellaneous transmit and receive bits */
unsigned char Rx_error_bits ; /* an indication of a block received with an error */
unsigned short Rx_time_stamp ; /* a millisecond receive time stamp */
unsigned char reserved[7] ; /* reserved for later use */
char data[SIZEOF_MB_DATA_BFR] ; /* the data area */
} MAILBOX_STRUCT;
typedef struct {
pid_t pid_num ;
MAILBOX_STRUCT cmdarea ;
pid_t pid_num ;
MAILBOX_STRUCT cmdarea ;
} CMDBLOCK_STRUCT;
/* definitions for setting the configuration */
@ -134,18 +132,18 @@ typedef struct {
/* the configuration structure */
typedef struct {
unsigned long baud_rate ; /* the baud rate */
unsigned long adapter_frequency ; /* the adapter frequecy */
unsigned short max_data_length ; /* the maximum length of a BSC data block */
unsigned short EBCDIC_encoding ; /* EBCDIC/ASCII encoding */
unsigned short Rx_block_type ; /* the type of BSC block to be received */
unsigned short no_consec_PADs_EOB ; /* the number of consecutive PADs indicating the end of the block */
unsigned short no_add_lead_Tx_SYN_chars ; /* the number of additional leading transmit SYN characters */
unsigned short no_bits_per_char ; /* the number of bits per character */
unsigned short parity ; /* parity */
unsigned short misc_config_options ; /* miscellaneous configuration options */
unsigned short statistics_options ; /* statistic options */
unsigned short modem_config_options ; /* modem configuration options */
unsigned long baud_rate ; /* the baud rate */
unsigned long adapter_frequency ; /* the adapter frequecy */
unsigned short max_data_length ; /* the maximum length of a BSC data block */
unsigned short EBCDIC_encoding ; /* EBCDIC/ASCII encoding */
unsigned short Rx_block_type ; /* the type of BSC block to be received */
unsigned short no_consec_PADs_EOB ; /* the number of consecutive PADs indicating the end of the block */
unsigned short no_add_lead_Tx_SYN_chars ; /* the number of additional leading transmit SYN characters */
unsigned short no_bits_per_char ; /* the number of bits per character */
unsigned short parity ; /* parity */
unsigned short misc_config_options ; /* miscellaneous configuration options */
unsigned short statistics_options ; /* statistic options */
unsigned short modem_config_options ; /* modem configuration options */
} CONFIGURATION_STRUCT;
@ -173,13 +171,13 @@ typedef struct {
/* definitions for reading the operational statistics */
/* the operational statistics structure */
typedef struct {
unsigned long no_blocks_Rx ; /* the number of data blocks received and made available for the application */
unsigned long no_bytes_Rx ; /* the number of bytes received and made available for the application */
unsigned long no_blocks_Tx ; /* the number of data blocks transmitted */
unsigned long no_bytes_Tx ; /* the number of bytes transmitted */
unsigned long no_blocks_Rx ; /* the number of data blocks received and made available for the application */
unsigned long no_bytes_Rx ; /* the number of bytes received and made available for the application */
unsigned long no_blocks_Tx ; /* the number of data blocks transmitted */
unsigned long no_bytes_Tx ; /* the number of bytes transmitted */
} OPERATIONAL_STATS_STRUCT;
#pragma pack()
/* definitions for interrupt usage */
/* 'interrupt_triggers' bit mapping set by a SET_INTERRUPT_TRIGGERS command */
@ -211,3 +209,7 @@ typedef struct {
#define RX_OVERRUN_ERROR 0x02 /* a receive overrun error occurred */
#define RX_EXCESSIVE_LGTH_ERR_INT_LVL 0x10 /* the received block was too long (interrupt level) */
#define RX_EXCESSIVE_LGTH_ERR_APP_LVL 0x20 /* the received block was too long (application level) */
#pragma pack()
#endif

View File

@ -32,6 +32,7 @@
#define _SDLA_CHDLC_H
#if defined(__LINUX__)
# include <linux/if_wanpipe.h>
# include <linux/wanpipe_sppp_iface.h>
#else
# include <wanpipe_sppp_iface.h>
@ -65,12 +66,12 @@
#if 0
typedef struct {
unsigned char opp_flag ; /* the opp flag */
unsigned char command ; /* the user command */
unsigned short buffer_length ; /* the data length */
unsigned char return_code ; /* the return code */
unsigned char MB_reserved[NUMBER_MB_RESERVED_BYTES] ; /* reserved for later */
unsigned char data[SIZEOF_MB_DATA_BFR] ; /* the data area */
unsigned char opp_flag ; /* the opp flag */
unsigned char command ; /* the user command */
unsigned short buffer_length ; /* the data length */
unsigned char return_code ; /* the return code */
unsigned char MB_reserved[NUMBER_MB_RESERVED_BYTES] ; /* reserved for later */
unsigned char data[SIZEOF_MB_DATA_BFR] ; /* the data area */
} CHDLC_MAILBOX_STRUCT;
#endif
@ -219,6 +220,15 @@ typedef struct {
#define LINK_DISCONNECTED 0x21
#define NO_TX_BFRS_AVAIL 0x24
typedef struct {
unsigned char modem_status;
} MODEM_STATUS_STRUCT;
#define SET_MODEM_DTR_HIGH 0x01
#define SET_MODEM_RTS_HIGH 0x02
#define MODEM_CTS_MASK 0x20
#define MODEM_DCD_MASK 0x08
/* ----------------------------------------------------------------------------
* Constants for the SET_GLOBAL_CONFIGURATION/READ_GLOBAL_CONFIGURATION commands
@ -226,10 +236,10 @@ typedef struct {
/* the global configuration structure */
typedef struct {
unsigned short adapter_config_options ; /* adapter config options */
unsigned short app_IRQ_timeout ; /* application IRQ timeout */
unsigned int adapter_operating_frequency ; /* adapter operating frequency */
unsigned short frame_transmit_timeout ;
unsigned short adapter_config_options ; /* adapter config options */
unsigned short app_IRQ_timeout ; /* application IRQ timeout */
unsigned int adapter_operating_frequency ; /* adapter operating frequency */
unsigned short frame_transmit_timeout ;
} GLOBAL_CONFIGURATION_STRUCT;
/* settings for the 'app_IRQ_timeout' */
@ -243,7 +253,7 @@ typedef struct {
/* the global statistics structure */
typedef struct {
unsigned short app_IRQ_timeout_count ;
unsigned short app_IRQ_timeout_count ;
} GLOBAL_STATS_STRUCT;
@ -254,16 +264,16 @@ typedef struct {
/* the communications error statistics structure */
typedef struct {
unsigned short Rx_overrun_err_count ;
unsigned short CRC_err_count ; /* receiver CRC error count */
unsigned short Rx_abort_count ; /* abort frames recvd count */
unsigned short Rx_dis_pri_bfrs_full_count ;/* receiver disabled */
unsigned short comms_err_stat_reserved_1 ;/* reserved for later */
unsigned short sec_Tx_abort_msd_Tx_int_count ; /* secondary - abort frames transmitted count (missed Tx interrupt) */
unsigned short missed_Tx_und_int_count ; /* missed tx underrun interrupt count */
unsigned short sec_Tx_abort_count ; /*secondary-abort frames tx count */
unsigned short DCD_state_change_count ; /* DCD state change */
unsigned short CTS_state_change_count ; /* CTS state change */
unsigned short Rx_overrun_err_count ;
unsigned short CRC_err_count ; /* receiver CRC error count */
unsigned short Rx_abort_count ; /* abort frames recvd count */
unsigned short Rx_dis_pri_bfrs_full_count ;/* receiver disabled */
unsigned short comms_err_stat_reserved_1 ;/* reserved for later */
unsigned short sec_Tx_abort_msd_Tx_int_count ; /* secondary - abort frames transmitted count (missed Tx interrupt) */
unsigned short missed_Tx_und_int_count ; /* missed tx underrun interrupt count */
unsigned short sec_Tx_abort_count ; /*secondary-abort frames tx count */
unsigned short DCD_state_change_count ; /* DCD state change */
unsigned short CTS_state_change_count ; /* CTS state change */
} COMMS_ERROR_STATS_STRUCT;
@ -274,9 +284,9 @@ typedef struct {
/* the trace configuration structure (SET_TRACE_CONFIGURATION/READ_TRACE_CONFIGURATION commands) */
typedef struct {
unsigned char trace_config ; /* trace configuration */
unsigned short trace_deactivation_timer ; /* trace deactivation timer */
unsigned int ptr_trace_stat_el_cfg_struct ; /* a pointer to the line trace element configuration structure */
unsigned char trace_config ; /* trace configuration */
unsigned short trace_deactivation_timer ; /* trace deactivation timer */
unsigned int ptr_trace_stat_el_cfg_struct ; /* a pointer to the line trace element configuration structure */
} LINE_TRACE_CONFIG_STRUCT;
/* 'trace_config' bit settings */
@ -289,22 +299,22 @@ typedef struct {
/* the line trace status element configuration structure */
typedef struct {
unsigned short number_trace_status_elements ; /* number of line trace elements */
unsigned int base_addr_trace_status_elements ; /* base address of the trace element list */
unsigned int next_trace_element_to_use ; /* pointer to the next trace element to be used */
unsigned int base_addr_trace_buffer ; /* base address of the trace data buffer */
unsigned int end_addr_trace_buffer ; /* end address of the trace data buffer */
unsigned short number_trace_status_elements ; /* number of line trace elements */
unsigned int base_addr_trace_status_elements ; /* base address of the trace element list */
unsigned int next_trace_element_to_use ; /* pointer to the next trace element to be used */
unsigned int base_addr_trace_buffer ; /* base address of the trace data buffer */
unsigned int end_addr_trace_buffer ; /* end address of the trace data buffer */
} TRACE_STATUS_EL_CFG_STRUCT;
/* the line trace status element structure */
typedef struct {
unsigned char opp_flag ; /* opp flag */
unsigned short trace_length ; /* trace length */
unsigned char trace_type ; /* trace type */
unsigned short trace_time_stamp ; /* time stamp */
unsigned short trace_reserved_1 ; /* reserved for later use */
unsigned int trace_reserved_2 ; /* reserved for later use */
unsigned int ptr_data_bfr ; /* ptr to the trace data buffer */
unsigned char opp_flag ; /* opp flag */
unsigned short trace_length ; /* trace length */
unsigned char trace_type ; /* trace type */
unsigned short trace_time_stamp ; /* time stamp */
unsigned short trace_reserved_1 ; /* reserved for later use */
unsigned int trace_reserved_2 ; /* reserved for later use */
unsigned int ptr_data_bfr ; /* ptr to the trace data buffer */
} TRACE_STATUS_ELEMENT_STRUCT;
/* "trace_type" bit settings */
@ -318,8 +328,8 @@ typedef struct {
/* the line trace statistics structure */
typedef struct {
unsigned int frames_traced_count ; /* number of frames traced */
unsigned int trc_frms_not_recorded_count ; /* number of trace frames discarded */
unsigned int frames_traced_count ; /* number of frames traced */
unsigned int trc_frms_not_recorded_count ; /* number of trace frames discarded */
} LINE_TRACE_STATS_STRUCT;
@ -341,24 +351,24 @@ typedef struct {
/* the CHDLC configuration structure */
typedef struct {
unsigned int baud_rate ; /* the baud rate */
unsigned short line_config_options ; /* line configuration options */
unsigned short modem_config_options ; /* modem configration options */
unsigned short modem_status_timer ; /* timer for monitoring modem status changes */
unsigned short CHDLC_API_options ; /* CHDLC API options */
unsigned short CHDLC_protocol_options ; /* CHDLC protocol options */
unsigned short percent_data_buffer_for_Tx ; /* percentage data buffering used for Tx */
unsigned short CHDLC_statistics_options ; /* CHDLC operational statistics options */
unsigned short max_CHDLC_data_field_length ; /* the maximum length of the CHDLC Data field */
unsigned short transmit_keepalive_timer ; /* the transmit keepalive timer */
unsigned short receive_keepalive_timer ; /* the receive keepalive timer */
unsigned short keepalive_error_tolerance ; /* the receive keepalive error tolerance */
unsigned short SLARP_request_timer ; /* the SLARP request timer */
unsigned int IP_address ; /* the IP address */
unsigned int IP_netmask ; /* the IP netmask */
unsigned int ptr_shared_mem_info_struct ; /* a pointer to the shared memory area information structure */
unsigned int ptr_CHDLC_Tx_stat_el_cfg_struct ; /* a pointer to the transmit status element configuration structure */
unsigned int ptr_CHDLC_Rx_stat_el_cfg_struct ; /* a pointer to the receive status element configuration structure */
unsigned int baud_rate ; /* the baud rate */
unsigned short line_config_options ; /* line configuration options */
unsigned short modem_config_options ; /* modem configration options */
unsigned short modem_status_timer ; /* timer for monitoring modem status changes */
unsigned short CHDLC_API_options ; /* CHDLC API options */
unsigned short CHDLC_protocol_options ; /* CHDLC protocol options */
unsigned short percent_data_buffer_for_Tx ; /* percentage data buffering used for Tx */
unsigned short CHDLC_statistics_options ; /* CHDLC operational statistics options */
unsigned short max_CHDLC_data_field_length ; /* the maximum length of the CHDLC Data field */
unsigned short transmit_keepalive_timer ; /* the transmit keepalive timer */
unsigned short receive_keepalive_timer ; /* the receive keepalive timer */
unsigned short keepalive_error_tolerance ; /* the receive keepalive error tolerance */
unsigned short SLARP_request_timer ; /* the SLARP request timer */
unsigned int IP_address ; /* the IP address */
unsigned int IP_netmask ; /* the IP netmask */
unsigned int ptr_shared_mem_info_struct ; /* a pointer to the shared memory area information structure */
unsigned int ptr_CHDLC_Tx_stat_el_cfg_struct ; /* a pointer to the transmit status element configuration structure */
unsigned int ptr_CHDLC_Rx_stat_el_cfg_struct ; /* a pointer to the receive status element configuration structure */
} CHDLC_CONFIGURATION_STRUCT;
/* settings for the 'line_config_options' */
@ -460,10 +470,10 @@ typedef struct {
/* the CHDLC status structure */
typedef struct {
unsigned char CHDLC_link_status ; /* CHDLC link status */
unsigned char no_Data_frms_for_app ; /* number of Data frames available for the application */
unsigned char receiver_status ; /* enabled/disabled */
unsigned char SLARP_state ; /* internal SLARP state */
unsigned char CHDLC_link_status ; /* CHDLC link status */
unsigned char no_Data_frms_for_app ; /* number of Data frames available for the application */
unsigned char receiver_status ; /* enabled/disabled */
unsigned char SLARP_state ; /* internal SLARP state */
} CHDLC_LINK_STATUS_STRUCT;
/* settings for the 'CHDLC_link_status' variable */
@ -478,10 +488,10 @@ typedef struct {
/* the structure used for the SET_CHDLC_INTERRUPT_TRIGGERS/READ_CHDLC_INTERRUPT_TRIGGERS command */
typedef struct {
unsigned char CHDLC_interrupt_triggers ; /* CHDLC interrupt trigger configuration */
unsigned char IRQ ; /* IRQ to be used */
unsigned short interrupt_timer ; /* interrupt timer */
unsigned short misc_interrupt_bits ; /* miscellaneous bits */
unsigned char CHDLC_interrupt_triggers ; /* CHDLC interrupt trigger configuration */
unsigned char IRQ ; /* IRQ to be used */
unsigned short interrupt_timer ; /* interrupt timer */
unsigned short misc_interrupt_bits ; /* miscellaneous bits */
} CHDLC_INT_TRIGGERS_STRUCT;
/* 'CHDLC_interrupt_triggers' bit settings */
@ -515,19 +525,19 @@ typedef struct {
/* the Data frame transmit status element configuration structure */
typedef struct {
unsigned short number_Tx_status_elements ; /* number of transmit status elements */
unsigned int base_addr_Tx_status_elements ; /* base address of the transmit element list */
unsigned int next_Tx_status_element_to_use ; /* pointer to the next transmit element to be used */
unsigned short number_Tx_status_elements ; /* number of transmit status elements */
unsigned int base_addr_Tx_status_elements ; /* base address of the transmit element list */
unsigned int next_Tx_status_element_to_use ; /* pointer to the next transmit element to be used */
} CHDLC_TX_STATUS_EL_CFG_STRUCT;
/* the Data frame transmit status element structure */
typedef struct {
unsigned char opp_flag ; /* opp flag */
unsigned short frame_length ; /* length of the frame to be transmitted */
unsigned char misc_Tx_bits ; /* miscellaneous transmit bits */
unsigned int reserved_2 ; /* reserved for internal use */
unsigned int reserved_3 ; /* reserved for internal use */
unsigned int ptr_data_bfr ; /* pointer to the data area */
unsigned char opp_flag ; /* opp flag */
unsigned short frame_length ; /* length of the frame to be transmitted */
unsigned char misc_Tx_bits ; /* miscellaneous transmit bits */
unsigned int reserved_2 ; /* reserved for internal use */
unsigned int reserved_3 ; /* reserved for internal use */
unsigned int ptr_data_bfr ; /* pointer to the data area */
} CHDLC_DATA_TX_STATUS_EL_STRUCT;
@ -556,22 +566,22 @@ typedef struct {
/* the Data frame receive status element configuration structure */
typedef struct {
unsigned short number_Rx_status_elements ; /* number of receive status elements */
unsigned int base_addr_Rx_status_elements ; /* base address of the receive element list */
unsigned int next_Rx_status_element_to_use ; /* pointer to the next receive element to be used */
unsigned int base_addr_Rx_buffer ; /* base address of the receive data buffer */
unsigned int end_addr_Rx_buffer ; /* end address of the receive data buffer */
unsigned short number_Rx_status_elements ; /* number of receive status elements */
unsigned int base_addr_Rx_status_elements ; /* base address of the receive element list */
unsigned int next_Rx_status_element_to_use ; /* pointer to the next receive element to be used */
unsigned int base_addr_Rx_buffer ; /* base address of the receive data buffer */
unsigned int end_addr_Rx_buffer ; /* end address of the receive data buffer */
} CHDLC_RX_STATUS_EL_CFG_STRUCT;
/* the Data frame receive status element structure */
typedef struct {
unsigned char opp_flag ; /* opp flag */
unsigned short frame_length ; /* length of the received frame */
unsigned char error_flag ; /* frame errors (HDLC_STREAMING_MODE)*/
unsigned short time_stamp ; /* receive time stamp (HDLC_STREAMING_MODE) */
unsigned int reserved_1 ; /* reserved for internal use */
unsigned short reserved_2 ; /* reserved for internal use */
unsigned int ptr_data_bfr ; /* pointer to the data area */
unsigned char opp_flag ; /* opp flag */
unsigned short frame_length ; /* length of the received frame */
unsigned char error_flag ; /* frame errors (HDLC_STREAMING_MODE)*/
unsigned short time_stamp ; /* receive time stamp (HDLC_STREAMING_MODE) */
unsigned int reserved_1 ; /* reserved for internal use */
unsigned short reserved_2 ; /* reserved for internal use */
unsigned int ptr_data_bfr ; /* pointer to the data area */
} CHDLC_DATA_RX_STATUS_EL_STRUCT;
@ -593,41 +603,41 @@ typedef struct {
/* the global information structure */
typedef struct {
unsigned char global_status ; /* global status */
unsigned char modem_status ; /* current modem status */
unsigned char global_excep_conditions ; /* global exception conditions */
unsigned char glob_info_reserved[5] ; /* reserved */
unsigned char codename[4] ; /* Firmware name */
unsigned char codeversion[4] ; /* Firmware version */
unsigned char global_status ; /* global status */
unsigned char modem_status ; /* current modem status */
unsigned char global_excep_conditions ; /* global exception conditions */
unsigned char glob_info_reserved[5] ; /* reserved */
unsigned char codename[4] ; /* Firmware name */
unsigned char codeversion[4] ; /* Firmware version */
} GLOBAL_INFORMATION_STRUCT;
/* the CHDLC information structure */
typedef struct {
unsigned char CHDLC_status ; /* CHDLC status */
unsigned char CHDLC_excep_conditions ; /* CHDLC exception conditions */
unsigned char CHDLC_info_reserved[14] ; /* reserved */
unsigned char CHDLC_status ; /* CHDLC status */
unsigned char CHDLC_excep_conditions ; /* CHDLC exception conditions */
unsigned char CHDLC_info_reserved[14] ; /* reserved */
} CHDLC_INFORMATION_STRUCT;
/* the interrupt information structure */
typedef struct {
unsigned char interrupt_type ; /* type of interrupt triggered */
unsigned char interrupt_permission ; /* interrupt permission mask */
unsigned char int_info_reserved[14] ; /* reserved */
unsigned char interrupt_type ; /* type of interrupt triggered */
unsigned char interrupt_permission ; /* interrupt permission mask */
unsigned char int_info_reserved[14] ; /* reserved */
} INTERRUPT_INFORMATION_STRUCT;
/* the S508/FT1 information structure */
typedef struct {
unsigned char parallel_port_A_input ; /* input - parallel port A */
unsigned char parallel_port_B_input ; /* input - parallel port B */
unsigned char FT1_info_reserved[14] ; /* reserved */
unsigned char parallel_port_A_input ; /* input - parallel port A */
unsigned char parallel_port_B_input ; /* input - parallel port B */
unsigned char FT1_info_reserved[14] ; /* reserved */
} FT1_INFORMATION_STRUCT;
/* the shared memory area information structure */
typedef struct {
GLOBAL_INFORMATION_STRUCT global_info_struct ; /* the global information structure */
CHDLC_INFORMATION_STRUCT CHDLC_info_struct ; /* the CHDLC information structure */
INTERRUPT_INFORMATION_STRUCT interrupt_info_struct ; /* the interrupt information structure */
FT1_INFORMATION_STRUCT FT1_info_struct ; /* the S508/FT1 information structure */
GLOBAL_INFORMATION_STRUCT global_info_struct ; /* the global information structure */
CHDLC_INFORMATION_STRUCT CHDLC_info_struct ; /* the CHDLC information structure */
INTERRUPT_INFORMATION_STRUCT interrupt_info_struct ; /* the interrupt information structure */
FT1_INFORMATION_STRUCT FT1_info_struct ; /* the S508/FT1 information structure */
} SHARED_MEMORY_INFO_STRUCT;
/* ----------------------------------------------------------------------------
@ -640,55 +650,55 @@ typedef struct {
#ifndef HDLC_PROT_ONLY
typedef struct {
unsigned char opp_flag ; /* the opp flag */
unsigned char command ; /* the user command */
unsigned short buffer_length ; /* the data length */
unsigned char return_code ; /* the return code */
unsigned char MB_reserved[NUMBER_MB_RESERVED_BYTES] ; /* reserved for later */
unsigned char opp_flag ; /* the opp flag */
unsigned char command ; /* the user command */
unsigned short buffer_length ; /* the data length */
unsigned char return_code ; /* the return code */
unsigned char MB_reserved[NUMBER_MB_RESERVED_BYTES] ; /* reserved for later */
} cblock_t;
/* UDP management packet layout (data area of ip packet) */
/*
typedef struct {
unsigned char signature[8] ;
unsigned char request_reply ;
unsigned char id ;
unsigned char reserved[6] ;
cblock_t cblock ;
unsigned char num_frames ;
unsigned char ismoredata ;
unsigned char data[SIZEOF_MB_DATA_BFR] ;
unsigned char signature[8] ;
unsigned char request_reply ;
unsigned char id ;
unsigned char reserved[6] ;
cblock_t cblock ;
unsigned char num_frames ;
unsigned char ismoredata ;
unsigned char data[SIZEOF_MB_DATA_BFR] ;
} udp_management_packet_t;
*/
typedef struct {
unsigned char num_frames ;
unsigned char ismoredata ;
unsigned char num_frames ;
unsigned char ismoredata ;
} trace_info_t;
#if 0
typedef struct {
ip_pkt_t ip_pkt ;
udp_pkt_t udp_pkt ;
wp_mgmt_t wp_mgmt ;
cblock_t cblock ;
trace_info_t trace_info ;
unsigned char data[SIZEOF_MB_DATA_BFR] ;
ip_pkt_t ip_pkt ;
udp_pkt_t udp_pkt ;
wp_mgmt_t wp_mgmt ;
cblock_t cblock ;
trace_info_t trace_info ;
unsigned char data[SIZEOF_MB_DATA_BFR] ;
} chdlc_udp_pkt_t;
#endif
typedef struct ft1_exec_cmd{
unsigned char command ; /* the user command */
unsigned short buffer_length ; /* the data length */
unsigned char return_code ; /* the return code */
unsigned char MB_reserved[NUMBER_MB_RESERVED_BYTES] ;
unsigned char command ; /* the user command */
unsigned short buffer_length ; /* the data length */
unsigned char return_code ; /* the return code */
unsigned char MB_reserved[NUMBER_MB_RESERVED_BYTES] ;
} ft1_exec_cmd_t;
typedef struct {
unsigned char opp_flag ;
ft1_exec_cmd_t cmd ;
unsigned char data[SIZEOF_MB_DATA_BFR] ;
unsigned char opp_flag ;
ft1_exec_cmd_t cmd ;
unsigned char data[SIZEOF_MB_DATA_BFR] ;
} ft1_exec_t;
@ -699,19 +709,19 @@ typedef struct {
/* UDP/IP packet (for UDP management) layout */
/*
typedef struct {
unsigned char reserved[2] ;
unsigned short ip_length ;
unsigned char reserved2[4] ;
unsigned char ip_ttl ;
unsigned char ip_protocol ;
unsigned short ip_checksum ;
unsigned int ip_src_address ;
unsigned int ip_dst_address ;
unsigned short udp_src_port ;
unsigned short udp_dst_port ;
unsigned short udp_length ;
unsigned short udp_checksum ;
udp_management_packet_t um_packet ;
unsigned char reserved[2] ;
unsigned short ip_length ;
unsigned char reserved2[4] ;
unsigned char ip_ttl ;
unsigned char ip_protocol ;
unsigned short ip_checksum ;
unsigned int ip_src_address ;
unsigned int ip_dst_address ;
unsigned short udp_src_port ;
unsigned short udp_dst_port ;
unsigned short udp_length ;
unsigned short udp_checksum ;
udp_management_packet_t um_packet ;
} ip_packet_t;
*/
@ -720,36 +730,36 @@ typedef struct {
#if 0
typedef struct {
unsigned char status ;
unsigned char data_avail ;
unsigned short real_length ;
unsigned short time_stamp ;
unsigned char data[1] ;
unsigned char status ;
unsigned char data_avail ;
unsigned short real_length ;
unsigned short time_stamp ;
unsigned char data[1] ;
} trace_pkt_t;
#endif
typedef struct {
unsigned char error_flag ;
unsigned short time_stamp ;
unsigned int sec ;
unsigned int usec ;
unsigned char reserved[5] ;
unsigned char error_flag ;
unsigned short time_stamp ;
unsigned int sec ;
unsigned int usec ;
unsigned char reserved[5] ;
} api_rx_hdr_t;
typedef struct {
api_rx_hdr_t api_rx_hdr ;
unsigned char data[1] ;
api_rx_hdr_t api_rx_hdr ;
unsigned char data[1] ;
} api_rx_element_t;
typedef struct {
unsigned char attr ;
unsigned char misc_Tx_bits ;
unsigned char reserved[14] ;
unsigned char attr ;
unsigned char misc_Tx_bits ;
unsigned char reserved[14] ;
} api_tx_hdr_t;
typedef struct {
api_tx_hdr_t api_tx_hdr ;
unsigned char data[1] ;
api_tx_hdr_t api_tx_hdr ;
unsigned char data[1] ;
} api_tx_element_t;
#endif //HDLC_PROT_ONLY
@ -768,7 +778,6 @@ typedef struct {
} ft1_config_t;
#pragma pack()
/* settings for the 'framing_mode' */
#define ESF_FRAMING 0x00 /* ESF framing */
@ -807,13 +816,23 @@ typedef struct {
#define AUTO_FT1_CFG_FAIL_OP_MODE 0x0C
#define AUTO_FT1_CFG_FAIL_INVALID_LINE 0x0D
#if !defined(__WINDOWS__)
#undef wan_udphdr_data
#define wan_udphdr_data wan_udphdr_u.chdlc.data
#endif
#ifdef __KERNEL__
#undef wan_udp_data
#define wan_udp_data wan_udp_hdr.wan_udphdr_u.chdlc.data
#endif
#pragma pack()
#if defined(__LINUX__)
enum {
SIOC_MBOX_CMD = SIOC_WANPIPE_DEVPRIVATE
};
#endif
#endif /* _SDLA_CHDLC_H */

View File

@ -34,8 +34,10 @@
* -------- --------
* GNU C Linux
*/
#pragma pack(1)
/* Adapter memory layout */
#define FR_MB_VECTOR 0xE000 /* mailbox window vector */
#define FR502_RX_VECTOR 0xA000 /* S502 direct receive window vector */
@ -63,14 +65,14 @@
*/
typedef struct fr_cmd
{
unsigned char command ; /* command code */
unsigned short length ; /* length of data buffer */
unsigned char result ; /* return code */
unsigned short dlci ; /* DLCI number */
unsigned char attr ; /* FECN, BECN, DE and C/R bits */
unsigned short rxlost1 ; /* frames discarded at int. level */
unsigned int rxlost2 ; /* frames discarded at app. level */
unsigned char rsrv[2] ; /* reserved for future use */
unsigned char command ; /* command code */
unsigned short length ; /* length of data buffer */
unsigned char result ; /* return code */
unsigned short dlci ; /* DLCI number */
unsigned char attr ; /* FECN, BECN, DE and C/R bits */
unsigned short rxlost1 ; /* frames discarded at int. level */
unsigned int rxlost2 ; /* frames discarded at app. level */
unsigned char rsrv[2] ; /* reserved for future use */
} fr_cmd_t;
@ -116,14 +118,14 @@ typedef struct fr_cmd
*/
typedef struct fr502_flags
{
unsigned char rsrv1[1] ; /* 00h: */
unsigned char tx_ready ; /* 01h: Tx buffer available */
unsigned char rx_ready ; /* 02h: Rx frame available */
unsigned char event ; /* 03h: asynchronous event */
unsigned char mstatus ; /* 04h: modem status */
unsigned char rsrv2[8] ; /* 05h: */
unsigned char iflag ; /* 0Dh: interrupt flag */
unsigned char imask ; /* 0Eh: interrupt mask */
unsigned char rsrv1[1] ; /* 00h: */
unsigned char tx_ready ; /* 01h: Tx buffer available */
unsigned char rx_ready ; /* 02h: Rx frame available */
unsigned char event ; /* 03h: asynchronous event */
unsigned char mstatus ; /* 04h: modem status */
unsigned char rsrv2[8] ; /* 05h: */
unsigned char iflag ; /* 0Dh: interrupt flag */
unsigned char imask ; /* 0Eh: interrupt mask */
} fr502_flags_t;
/*----------------------------------------------------------------------------
@ -132,14 +134,14 @@ typedef struct fr502_flags
*/
typedef struct fr508_flags
{
unsigned char rsrv1[3] ; /* 00h: reserved */
unsigned char event ; /* 03h: asynchronous event */
unsigned char mstatus ; /* 04h: modem status */
unsigned char rsrv2[11] ; /* 05h: reserved */
unsigned char iflag ; /* 10h: interrupt flag */
unsigned char imask ; /* 11h: interrupt mask */
unsigned int tse_offs ; /* 12h: Tx status element */
unsigned short dlci ; /* 16h: DLCI NUMBER */
unsigned char rsrv1[3] ; /* 00h: reserved */
unsigned char event ; /* 03h: asynchronous event */
unsigned char mstatus ; /* 04h: modem status */
unsigned char rsrv2[11] ; /* 05h: reserved */
unsigned char iflag ; /* 10h: interrupt flag */
unsigned char imask ; /* 11h: interrupt mask */
unsigned int tse_offs ; /* 12h: Tx status element */
unsigned short dlci ; /* 16h: DLCI NUMBER */
} fr508_flags_t;
/* 'event' field defines */
@ -168,12 +170,12 @@ typedef struct fr508_flags
*/
typedef struct fr_buf_info
{
unsigned short rse_num ; /* 00h: number of status elements */
unsigned int rse_base ; /* 02h: receive status array base */
unsigned int rse_next ; /* 06h: next status element */
unsigned int buf_base ; /* 0Ah: rotational buffer base */
unsigned short reserved ; /* 0Eh: */
unsigned int buf_top ; /* 10h: rotational buffer top */
unsigned short rse_num ; /* 00h: number of status elements */
unsigned int rse_base ; /* 02h: receive status array base */
unsigned int rse_next ; /* 06h: next status element */
unsigned int buf_base ; /* 0Ah: rotational buffer base */
unsigned short reserved ; /* 0Eh: */
unsigned int buf_top ; /* 10h: rotational buffer top */
} fr_buf_info_t;
/*----------------------------------------------------------------------------
@ -184,24 +186,24 @@ typedef struct fr_buf_info
*/
typedef struct fr_rx_buf_ctl
{
unsigned char flag ; /* 00h: ready flag */
unsigned short length ; /* 01h: frame length */
unsigned short dlci ; /* 03h: DLCI */
unsigned char attr ; /* 05h: FECN/BECN/DE/CR */
unsigned short tmstamp ; /* 06h: time stamp */
unsigned short rsrv[2] ; /* 08h: */
unsigned int offset ; /* 0Ch: buffer absolute address */
unsigned char flag ; /* 00h: ready flag */
unsigned short length ; /* 01h: frame length */
unsigned short dlci ; /* 03h: DLCI */
unsigned char attr ; /* 05h: FECN/BECN/DE/CR */
unsigned short tmstamp ; /* 06h: time stamp */
unsigned short rsrv[2] ; /* 08h: */
unsigned int offset ; /* 0Ch: buffer absolute address */
} fr_rx_buf_ctl_t;
typedef struct fr_tx_buf_ctl
{
unsigned char flag ; /* 00h: ready flag */
unsigned short rsrv0[2] ; /* 01h: */
unsigned short length ; /* 05h: frame length */
unsigned short dlci ; /* 07h: DLCI */
unsigned char attr ; /* 09h: FECN/BECN/DE/CR */
unsigned short rsrv1 ; /* 0Ah: */
unsigned int offset ; /* 0Ch: buffer absolute address */
unsigned char flag ; /* 00h: ready flag */
unsigned short rsrv0[2] ; /* 01h: */
unsigned short length ; /* 05h: frame length */
unsigned short dlci ; /* 07h: DLCI */
unsigned char attr ; /* 09h: FECN/BECN/DE/CR */
unsigned short rsrv1 ; /* 0Ah: */
unsigned int offset ; /* 0Ch: buffer absolute address */
} fr_tx_buf_ctl_t;
/*----------------------------------------------------------------------------
@ -209,23 +211,23 @@ typedef struct fr_tx_buf_ctl
*/
typedef struct fr_conf
{
unsigned short station ; /* 00h: CPE/Node */
unsigned short options ; /* 02h: configuration options */
unsigned short kbps ; /* 04h: baud rate in kbps */
unsigned short port ; /* 06h: RS-232/V.35 */
unsigned short mtu ; /* 08h: max. transmit length */
unsigned short t391 ; /* 0Ah: */
unsigned short t392 ; /* 0Ch: */
unsigned short n391 ; /* 0Eh: */
unsigned short n392 ; /* 10h: */
unsigned short n393 ; /* 12h: */
unsigned short cir_fwd ; /* 14h: */
unsigned short bc_fwd ; /* 16h: */
unsigned short be_fwd ; /* 18h: */
unsigned short cir_bwd ; /* 1Ah: */
unsigned short bc_bwd ; /* 1Ch: */
unsigned short be_bwd ; /* 1Eh: */
unsigned short dlci[0] ; /* 20h: */
unsigned short station ; /* 00h: CPE/Node */
unsigned short options ; /* 02h: configuration options */
unsigned short kbps ; /* 04h: baud rate in kbps */
unsigned short port ; /* 06h: RS-232/V.35 */
unsigned short mtu ; /* 08h: max. transmit length */
unsigned short t391 ; /* 0Ah: */
unsigned short t392 ; /* 0Ch: */
unsigned short n391 ; /* 0Eh: */
unsigned short n392 ; /* 10h: */
unsigned short n393 ; /* 12h: */
unsigned short cir_fwd ; /* 14h: */
unsigned short bc_fwd ; /* 16h: */
unsigned short be_fwd ; /* 18h: */
unsigned short cir_bwd ; /* 1Ah: */
unsigned short bc_bwd ; /* 1Ch: */
unsigned short be_bwd ; /* 1Eh: */
unsigned short dlci[0] ; /* 20h: */
} fr_conf_t;
/* 'station_type' defines */
@ -262,26 +264,26 @@ typedef struct fr_conf
/* the line trace status element presented by the frame relay code */
typedef struct {
unsigned char flag ; /* ready flag */
unsigned short length ; /* trace length */
unsigned char rsrv0[2] ; /* reserved */
unsigned char attr ; /* trace attributes */
unsigned short tmstamp ; /* time stamp */
unsigned char rsrv1[4] ; /* reserved */
unsigned int offset ; /* buffer absolute address */
unsigned char flag ; /* ready flag */
unsigned short length ; /* trace length */
unsigned char rsrv0[2] ; /* reserved */
unsigned char attr ; /* trace attributes */
unsigned short tmstamp ; /* time stamp */
unsigned char rsrv1[4] ; /* reserved */
unsigned int offset ; /* buffer absolute address */
} fr_trc_el_t;
typedef struct {
unsigned char status ; /* status flag */
unsigned char data_passed ; /* 0 if no data passed, 1 if */
unsigned char status ; /* status flag */
unsigned char data_passed ; /* 0 if no data passed, 1 if */
/* data passed */
unsigned short length ; /* frame length */
unsigned short tmstamp ; /* time stamp */
unsigned short length ; /* frame length */
unsigned short tmstamp ; /* time stamp */
} fpipemon_trc_hdr_t;
typedef struct {
fpipemon_trc_hdr_t fpipemon_trc_hdr ;
unsigned char data[FR_MAX_NO_DATA_BYTES_IN_FRAME] ;
fpipemon_trc_hdr_t fpipemon_trc_hdr ;
unsigned char data[FR_MAX_NO_DATA_BYTES_IN_FRAME] ;
} fpipemon_trc_t;
/* bit settings for the 'status' byte - note that bits 1, 2 and 3 are used */
@ -311,13 +313,13 @@ typedef struct {
*/
typedef struct fr_dlc_conf
{
unsigned short conf_flags ; /* 00h: configuration bits */
unsigned short cir_fwd ; /* 02h: */
unsigned short bc_fwd ; /* 04h: */
unsigned short be_fwd ; /* 06h: */
unsigned short cir_bwd ; /* 08h: */
unsigned short bc_bwd ; /* 0Ah: */
unsigned short be_bwd ; /* 0Ch: */
unsigned short conf_flags ; /* 00h: configuration bits */
unsigned short cir_fwd ; /* 02h: */
unsigned short bc_fwd ; /* 04h: */
unsigned short be_fwd ; /* 06h: */
unsigned short cir_bwd ; /* 08h: */
unsigned short bc_bwd ; /* 0Ah: */
unsigned short be_bwd ; /* 0Ch: */
} fr_dlc_conf_t;
/*----------------------------------------------------------------------------
@ -327,8 +329,8 @@ typedef struct fr_dlc_conf
*/
typedef struct fr502_intr_ctl
{
unsigned char mode ; /* 00h: interrupt enable flags */
unsigned short tx_len ; /* 01h: required Tx buffer size */
unsigned char mode ; /* 00h: interrupt enable flags */
unsigned short tx_len ; /* 01h: required Tx buffer size */
} fr502_intr_ctl_t;
/*----------------------------------------------------------------------------
@ -338,11 +340,11 @@ typedef struct fr502_intr_ctl
*/
typedef struct fr508_intr_ctl
{
unsigned char mode ; /* 00h: interrupt enable flags */
unsigned short tx_len ; /* 01h: required Tx buffer size */
unsigned char irq ; /* 03h: IRQ level to activate */
unsigned char flags ; /* 04h: ?? */
unsigned short timeout ; /* 05h: ms, for timer interrupt */
unsigned char mode ; /* 00h: interrupt enable flags */
unsigned short tx_len ; /* 01h: required Tx buffer size */
unsigned char irq ; /* 03h: IRQ level to activate */
unsigned char flags ; /* 04h: ?? */
unsigned short timeout ; /* 05h: ms, for timer interrupt */
} fr508_intr_ctl_t;
/*----------------------------------------------------------------------------
@ -351,12 +353,12 @@ typedef struct fr508_intr_ctl
*/
typedef struct fr_dlc_Status
{
unsigned char status ; /* 00h: link/DLCI status */
unsigned char status ; /* 00h: link/DLCI status */
struct
{
unsigned short dlci ; /* 01h: DLCI number */
unsigned char status ; /* 03h: DLCI status */
} circuit[1] ;
unsigned short dlci ; /* 01h: DLCI number */
unsigned char status ; /* 03h: DLCI status */
} circuit[1] ;
} fr_dlc_status_t;
/* 'status' defines */
@ -378,34 +380,34 @@ typedef struct fr_dlc_Status
*/
typedef struct fr_link_stat
{
unsigned short rx_too_long ; /* 00h: */
unsigned short rx_dropped ; /* 02h: */
unsigned short rx_dropped2 ; /* 04h: */
unsigned short rx_bad_dlci ; /* 06h: */
unsigned short rx_bad_format ; /* 08h: */
unsigned short retransmitted ; /* 0Ah: */
unsigned short cpe_tx_FSE ; /* 0Ch: */
unsigned short cpe_tx_LIV ; /* 0Eh: */
unsigned short cpe_rx_FSR ; /* 10h: */
unsigned short cpe_rx_LIV ; /* 12h: */
unsigned short node_rx_FSE ; /* 14h: */
unsigned short node_rx_LIV ; /* 16h: */
unsigned short node_tx_FSR ; /* 18h: */
unsigned short node_tx_LIV ; /* 1Ah: */
unsigned short rx_ISF_err ; /* 1Ch: */
unsigned short rx_unsolicited ; /* 1Eh: */
unsigned short rx_SSN_err ; /* 20h: */
unsigned short rx_RSN_err ; /* 22h: */
unsigned short T391_timeouts ; /* 24h: */
unsigned short T392_timeouts ; /* 26h: */
unsigned short N392_reached ; /* 28h: */
unsigned short cpe_SSN_RSN ; /* 2Ah: */
unsigned short current_SSN ; /* 2Ch: */
unsigned short current_RSN ; /* 2Eh: */
unsigned short curreny_T391 ; /* 30h: */
unsigned short current_T392 ; /* 32h: */
unsigned short current_N392 ; /* 34h: */
unsigned short current_N393 ; /* 36h: */
unsigned short rx_too_long ; /* 00h: */
unsigned short rx_dropped ; /* 02h: */
unsigned short rx_dropped2 ; /* 04h: */
unsigned short rx_bad_dlci ; /* 06h: */
unsigned short rx_bad_format ; /* 08h: */
unsigned short retransmitted ; /* 0Ah: */
unsigned short cpe_tx_FSE ; /* 0Ch: */
unsigned short cpe_tx_LIV ; /* 0Eh: */
unsigned short cpe_rx_FSR ; /* 10h: */
unsigned short cpe_rx_LIV ; /* 12h: */
unsigned short node_rx_FSE ; /* 14h: */
unsigned short node_rx_LIV ; /* 16h: */
unsigned short node_tx_FSR ; /* 18h: */
unsigned short node_tx_LIV ; /* 1Ah: */
unsigned short rx_ISF_err ; /* 1Ch: */
unsigned short rx_unsolicited ; /* 1Eh: */
unsigned short rx_SSN_err ; /* 20h: */
unsigned short rx_RSN_err ; /* 22h: */
unsigned short T391_timeouts ; /* 24h: */
unsigned short T392_timeouts ; /* 26h: */
unsigned short N392_reached ; /* 28h: */
unsigned short cpe_SSN_RSN ; /* 2Ah: */
unsigned short current_SSN ; /* 2Ch: */
unsigned short current_RSN ; /* 2Eh: */
unsigned short curreny_T391 ; /* 30h: */
unsigned short current_T392 ; /* 32h: */
unsigned short current_N392 ; /* 34h: */
unsigned short current_N393 ; /* 36h: */
} fr_link_stat_t;
/*----------------------------------------------------------------------------
@ -415,18 +417,18 @@ typedef struct fr_link_stat
*/
typedef struct fr_dlci_stat
{
unsigned int tx_frames ; /* 00h: */
unsigned int tx_bytes ; /* 04h: */
unsigned int rx_frames ; /* 08h: */
unsigned int rx_bytes ; /* 0Ch: */
unsigned int rx_dropped ; /* 10h: */
unsigned int rx_inactive ; /* 14h: */
unsigned int rx_exceed_CIR ; /* 18h: */
unsigned int rx_DE_set ; /* 1Ch: */
unsigned int tx_throughput ; /* 20h: */
unsigned int tx_calc_timer ; /* 24h: */
unsigned int rx_throughput ; /* 28h: */
unsigned int rx_calc_timer ; /* 2Ch: */
unsigned int tx_frames ; /* 00h: */
unsigned int tx_bytes ; /* 04h: */
unsigned int rx_frames ; /* 08h: */
unsigned int rx_bytes ; /* 0Ch: */
unsigned int rx_dropped ; /* 10h: */
unsigned int rx_inactive ; /* 14h: */
unsigned int rx_exceed_CIR ; /* 18h: */
unsigned int rx_DE_set ; /* 1Ch: */
unsigned int tx_throughput ; /* 20h: */
unsigned int tx_calc_timer ; /* 24h: */
unsigned int rx_throughput ; /* 28h: */
unsigned int rx_calc_timer ; /* 2Ch: */
} fr_dlci_stat_t;
#endif
@ -436,15 +438,15 @@ typedef struct fr_dlci_stat
*/
typedef struct fr_comm_stat
{
unsigned char rx_overruns ; /* 00h: */
unsigned char rx_bad_crc ; /* 01h: */
unsigned char rx_aborts ; /* 02h: */
unsigned char rx_too_long ; /* 03h: */
unsigned char tx_aborts ; /* 04h: */
unsigned char tx_underruns ; /* 05h: */
unsigned char tx_missed_undr ; /* 06h: */
unsigned char dcd_dropped ; /* 07h: */
unsigned char cts_dropped ; /* 08h: */
unsigned char rx_overruns ; /* 00h: */
unsigned char rx_bad_crc ; /* 01h: */
unsigned char rx_aborts ; /* 02h: */
unsigned char rx_too_long ; /* 03h: */
unsigned char tx_aborts ; /* 04h: */
unsigned char tx_underruns ; /* 05h: */
unsigned char tx_missed_undr ; /* 06h: */
unsigned char dcd_dropped ; /* 07h: */
unsigned char cts_dropped ; /* 08h: */
} fr_comm_stat_t;
/*----------------------------------------------------------------------------
@ -459,15 +461,15 @@ typedef struct fr_comm_stat
typedef struct arphdr_fr
{
unsigned short ar_hrd ; /* format of hardware addr */
unsigned short ar_pro ; /* format of protocol addr */
unsigned char ar_hln ; /* length of hardware addr */
unsigned char ar_pln ; /* length of protocol addr */
unsigned short ar_op ; /* ARP opcode */
unsigned short ar_sha ; /* Sender DLCI addr 2 bytes */
unsigned int ar_sip ; /* Sender IP addr 4 bytes */
unsigned short ar_tha ; /* Target DLCI addr 2 bytes */
unsigned int ar_tip ; /* Target IP addr 4 bytes */
unsigned short ar_hrd ; /* format of hardware addr */
unsigned short ar_pro ; /* format of protocol addr */
unsigned char ar_hln ; /* length of hardware addr */
unsigned char ar_pln ; /* length of protocol addr */
unsigned short ar_op ; /* ARP opcode */
unsigned short ar_sha ; /* Sender DLCI addr 2 bytes */
unsigned int ar_sip ; /* Sender IP addr 4 bytes */
unsigned short ar_tha ; /* Target DLCI addr 2 bytes */
unsigned int ar_tip ; /* Target IP addr 4 bytes */
} arphdr_fr_t;
/*----------------------------------------------------------------------------
@ -475,11 +477,11 @@ typedef struct arphdr_fr
*/
typedef struct arphdr_1490
{
unsigned char control ; /* UI, etc... */
unsigned char pad ; /* Pad */
unsigned char NLPID ; /* SNAP */
unsigned char OUI[3] ; /* Ethertype, etc... */
unsigned short PID ; /* ARP, IP, etc... */
unsigned char control ; /* UI, etc... */
unsigned char pad ; /* Pad */
unsigned char NLPID ; /* SNAP */
unsigned char OUI[3] ; /* Ethertype, etc... */
unsigned short PID ; /* ARP, IP, etc... */
} arphdr_1490_t;
/* valid ip_protocol for UDP management */
@ -543,28 +545,28 @@ typedef struct {
} drvstats_gen_t;
typedef struct {
unsigned char attr ;
unsigned short time_stamp ;
unsigned char reserved[13] ;
unsigned char attr ;
unsigned short time_stamp ;
unsigned char reserved[13] ;
} api_rx_hdr_t;
typedef struct {
api_rx_hdr_t api_rx_hdr ;
void * data ;
api_rx_hdr_t api_rx_hdr ;
void * data ;
} api_rx_element_t;
typedef struct {
unsigned char attr ;
unsigned char reserved[15] ;
unsigned char attr ;
unsigned char reserved[15] ;
} api_tx_hdr_t;
typedef struct {
api_tx_hdr_t api_tx_hdr ;
void * data ;
api_tx_hdr_t api_tx_hdr ;
void * data ;
} api_tx_element_t;
#pragma pack()
#pragma pack()
#endif /* _SDLA_FR_H */

View File

@ -1,13 +1,14 @@
/*
*************************************************************************************
* *
* FRNT_END.H - the 'C' header file for the Sangoma S508/S514 adapter front-end API. *
* sdla_front_end.h - the 'C' header file for the Sangoma S508/S514 adapter front-end API. *
* *
*************************************************************************************
*/
#ifndef _SDLA_FRONT_END_H_
#define _SDLA_FRONT_END_H_
/*
*************************************************************************
* DEFINES AND MACROS *
@ -23,6 +24,8 @@
#define WAN_MEDIA_STS1 0x06
#define WAN_MEDIA_J1 0x07
#define WAN_MEDIA_FXOFXS 0x08
#define WAN_MEDIA_BRI 0x09
#define WAN_MEDIA_SERIAL 0x0A
/*The line code */
#define WAN_LCODE_NONE 0x00
@ -42,19 +45,26 @@
#define WAN_FR_E3_G751 0x07
#define WAN_FR_E3_G832 0x08
#define WAN_FR_DS3_Cbit 0x09
#define WAN_FR_DS3_M13 0x10
#define WAN_FR_DS3_M13 0x0A
#define WAN_FR_SLC96 0x0B
/* Clocking Master/Normal */
#define WAN_NORMAL_CLK 0x01
#define WAN_MASTER_CLK 0x02
/* Serial Card FE options */
#define WAN_FE_V35 0x01
#define WAN_FE_RS232 0x02
/* Front-End DEBUG flags */
#define WAN_FE_DEBUG_NONE 0x00
#define WAN_FE_DEBUG_RBS 0x01
#define WAN_FE_DEBUG_ALARM 0x02
#define WAN_FE_DEBUG_VOLTAGE 0x03
#define WAN_FE_DEBUG_RECONFIG 0x04
#define WAN_FE_DEBUG_REG 0x05
#define WAN_FE_DEBUG_NONE 0x00
#define WAN_FE_DEBUG_RBS 0x01
#define WAN_FE_DEBUG_ALARM 0x02
#define WAN_FE_DEBUG_VOLTAGE 0x03
#define WAN_FE_DEBUG_RECONFIG 0x04
#define WAN_FE_DEBUG_REG 0x05
#define WAN_FE_DEBUG_CONFIG_VERIFY 0x06
#define WAN_FE_DEBUG_HOOK 0x07
/* Front-End DEBUG sub-flags */
/* Sub-flags for RBS debugging */
@ -134,8 +144,10 @@
#define IS_TE1_56K_MEDIA(fe_cfg)(IS_TE1_MEDIA(fe_cfg) || \
IS_56K_MEDIA(fe_cfg)
#define IS_DS3_MEDIA(fe_cfg) (FE_MEDIA(fe_cfg) == WAN_MEDIA_DS3)
#define IS_E3_MEDIA(fe_cfg) (FE_MEDIA(fe_cfg) == WAN_MEDIA_E3)
#define IS_E3_MEDIA(fe_cfg) (FE_MEDIA(fe_cfg) == WAN_MEDIA_E3)
#define IS_FXOFXS_MEDIA(fe_cfg) (FE_MEDIA(fe_cfg) == WAN_MEDIA_FXOFXS)
#define IS_BRI_MEDIA(fe_cfg) (FE_MEDIA(fe_cfg) == WAN_MEDIA_BRI)
#define IS_SERIAL_MEDIA(fe_cfg) (FE_MEDIA(fe_cfg) == WAN_MEDIA_SERIAL)
#define IS_TXTRISTATE(fe_cfg) (FE_TXTRISTATE(fe_cfg) == WANOPT_YES)
@ -151,6 +163,8 @@
(FE_MEDIA(fe_cfg) == WAN_MEDIA_DS3) ? "DS3" : \
(FE_MEDIA(fe_cfg) == WAN_MEDIA_E3) ? "E3" : \
(FE_MEDIA(fe_cfg) == WAN_MEDIA_FXOFXS) ? "FXO/FXS" : \
(FE_MEDIA(fe_cfg) == WAN_MEDIA_BRI) ? "BRI" : \
(FE_MEDIA(fe_cfg) == WAN_MEDIA_SERIAL) ? "V35/RS232" : \
"Unknown"
#define LCODE_DECODE(fe_cfg) \
@ -168,7 +182,8 @@
(FE_FRAME(fe_cfg) == WAN_FR_E3_G751) ? "G.751" : \
(FE_FRAME(fe_cfg) == WAN_FR_E3_G832) ? "G.832" : \
(FE_FRAME(fe_cfg) == WAN_FR_DS3_Cbit) ? "C-bit" : \
(FE_FRAME(fe_cfg) == WAN_FR_DS3_M13) ? "M13" : "Unknown"
(FE_FRAME(fe_cfg) == WAN_FR_DS3_M13) ? "M13" : \
(FE_FRAME(fe_cfg) == WAN_FR_SLC96) ? "SLC-96" : "Unknown"
@ -187,21 +202,20 @@ typedef struct {
unsigned int line_no;
unsigned char tx_tristate_mode;
unsigned int tdmv_law;
unsigned char poll_mode; /* enable fe poll driven arch */
unsigned char poll_mode;
union {
sdla_te_cfg_t te_cfg;
sdla_te3_cfg_t te3_cfg;
sdla_remora_cfg_t remora;
sdla_bri_cfg_t bri;
} cfg;
} sdla_fe_cfg_t;
typedef struct {
unsigned int alarms;
unsigned int liu_alarms;
unsigned int bert_alarms;
u_int32_t alarms;
union {
sdla_te_stats_t te1_stats;
//sdla_te_pmon_t te_pmon;
/*sdla_te_pmon_t te_pmon;*/
sdla_te3_pmon_t te3_pmon;
} u;
#define te_pmon u.te1_stats.pmon
@ -210,6 +224,7 @@ typedef struct {
typedef struct {
unsigned char type;
unsigned char mode;
int mod_no; /* A200/A400 */
union{
struct {
int channel;
@ -220,12 +235,24 @@ typedef struct {
int reg;
unsigned char value;
} reg;
struct {
int offhook;
}hook;
} fe_debug_un;
#define fe_debug_rbs fe_debug_un.rbs
#define fe_debug_reg fe_debug_un.reg
#define fe_debug_hook fe_debug_un.hook
} sdla_fe_debug_t;
/* Front-End status */
#define FE_STATUS_DECODE(fe_status) \
(fe_status == FE_DISCONNECTED) ? "disconnected" :\
(fe_status == FE_CONNECTED) ? "connected" : \
"unknown"
#define WAN_FE_STATUS_DECODE(fe) FE_STATUS_DECODE((fe)->fe_status)
#ifdef WAN_KERNEL
#define FE_ASSERT(val) if (val) return;
@ -242,6 +269,8 @@ typedef struct {
#define IS_FXOFXS_FEMEDIA(fe) IS_FXOFXS_MEDIA(&((fe)->fe_cfg))
#define IS_FE_TXTRISTATE(fe) IS_TXTRISTATE(&((fe)->fe_cfg))
#define IS_FR_FEUNFRAMED(fe) IS_FR_UNFRAMED(&((fe)->fe_cfg))
#define IS_BRI_FEMEDIA(fe) IS_BRI_MEDIA(&((fe)->fe_cfg))
#define IS_SERIAL_FEMEDIA(fe) IS_SERIAL_MEDIA(&((fe)->fe_cfg))
#define WAN_FE_MEDIA(fe) FE_MEDIA(&((fe)->fe_cfg))
#define WAN_FE_LCODE(fe) FE_LCODE(&((fe)->fe_cfg))
@ -254,15 +283,16 @@ typedef struct {
#define FE_LCODE_DECODE(fe) LCODE_DECODE(&((fe)->fe_cfg))
#define FE_FRAME_DECODE(fe) FRAME_DECODE(&((fe)->fe_cfg))
#define WAN_FE_START_CHANNEL(fe) \
(IS_TE1_FEMEDIA(fe)) ? GET_TE_START_CHANNEL(fe) : \
(IS_FXOFXS_FEMEDIA(fe)) ? WAN_RM_START_CHANNEL: \
(IS_BRI_FEMEDIA(fe)) ? WAN_BRI_START_CHANNEL: 0
#define WAN_FE_MAX_CHANNELS(fe) \
(IS_TE1_FEMEDIA(fe)) ? GET_TE_CHANNEL_RANGE(fe) : \
(IS_FXOFXS_FEMEDIA(fe)) ? MAX_FXOFXS_CHANNELS : 0
(IS_FXOFXS_FEMEDIA(fe)) ? MAX_FXOFXS_CHANNELS : \
(IS_BRI_FEMEDIA(fe)) ? MAX_BRI_CHANNELS : 0
/* Front-End status */
#define WAN_FE_STATUS_DECODE(fe) \
((fe)->fe_status == FE_DISCONNECTED) ? "disconnected" :\
((fe)->fe_status == FE_CONNECTED) ? "connected" : \
"unknown"
#if 0
enum fe_status {
FE_UNITIALIZED = 0x00,
@ -390,7 +420,7 @@ typedef struct sdla_fe_timer_event_ {
WAN_LIST_ENTRY(sdla_fe_timer_event_) next;
} sdla_fe_timer_event_t;
#define WAN_FE_MAX_QEVENT_LEN 20
#define WAN_FE_MAX_QEVENT_LEN 20
typedef struct {
char *name;
void *card;
@ -406,21 +436,25 @@ typedef struct {
#define te_param fe_param.te
#define te3_param fe_param.te3
#define rm_param fe_param.remora
#define bri_param fe_param.bri
sdla_te_param_t te;
sdla_56k_param_t k56_param;
sdla_te3_param_t te3;
sdla_remora_param_t remora;
sdla_bri_param_t bri;
} fe_param;
#define fe_alarm fe_stats.alarms
#define liu_alarm fe_stats.liu_alarms
#define bert_alarm fe_stats.bert_alarms
sdla_fe_stats_t fe_stats;
#define fe_alarm fe_stats.alarms
sdla_fe_stats_t fe_stats;
wan_spinlock_t lock;
wan_spinlock_t lockirq;
wan_timer_t timer;
#if defined(__WINDOWS__)
WAN_LIST_HEAD(fe_timer_event_list_head, sdla_fe_timer_event_) event;
#else
WAN_LIST_HEAD(, sdla_fe_timer_event_) event;
unsigned int event_map;
#endif
unsigned int event_map;
int (*write_cpld)(void*, unsigned short, unsigned char);
int (*read_cpld)(void*, unsigned short, unsigned char);
int (*write_fe_cpld)(void*, unsigned short, unsigned char);
@ -477,9 +511,10 @@ typedef struct {
int (*if_unconfig)(void *fe, u32, u8);
int (*disable_irq)(void *fe);
int (*polling)(sdla_fe_t *fe);
int (*add_timer)(sdla_fe_t *fe, unsigned long);
int (*isr)(sdla_fe_t *fe);
int (*process_udp)(sdla_fe_t *fe, void*, unsigned char*);
unsigned int (*read_alarm)(sdla_fe_t *fe, int);
u_int32_t (*read_alarm)(sdla_fe_t *fe, int);
int (*read_pmon)(sdla_fe_t *fe, int);
int (*flush_pmon)(sdla_fe_t *fe);
/* Set Front-End alarm (T1/E1) */
@ -490,8 +525,10 @@ typedef struct {
char* (*print_fe_act_channels)(sdla_fe_t*);
/* Print Front-End alarm (T1/E1/56K) */
int (*print_fe_alarm)(sdla_fe_t*,unsigned int);
/* Get front end status */
/* Get front end status: Connected/Disconnected */
int (*get_fe_status)(sdla_fe_t *fe, unsigned char*);
/* Set front end status: Connected/Disconnected only ISDN BRI */
int (*set_fe_status)(sdla_fe_t *fe, unsigned char);
/* Get front end media type */
unsigned char (*get_fe_media)(sdla_fe_t *fe);
/* Get front end media type string */
@ -499,9 +536,9 @@ typedef struct {
/* Set Line-loopback modes */
int (*set_fe_lbmode)(sdla_fe_t*, unsigned char, unsigned char);
/* Update Alarm Status for proc file system */
int (*update_alarm_info)(sdla_fe_t*, struct seq_file* m, int* stop_cnt);
int (*update_alarm_info)(sdla_fe_t*, struct seq_file*, int*);
/* Update PMON Status for proc file system */
int (*update_pmon_info)(sdla_fe_t*, struct seq_file* m, int* stop_cnt);
int (*update_pmon_info)(sdla_fe_t*, struct seq_file*, int*);
/* AFT T1/E1 cards only */
int (*led_ctrl)(sdla_fe_t*, int mode);
/* Check RBS bits (T1/E1 cards) */
@ -521,7 +558,10 @@ typedef struct {
void (*enable_timer)(sdla_fe_t* fe, unsigned char cmd, unsigned int delay);
#endif
/* Available front-end map */
unsigned int (*active_map)(sdla_fe_t *fe);
/* BRI addition - one Wanpipe may have two lines, provide the 'line_no' when
getting the active channels map.
*/
unsigned int (*active_map)(sdla_fe_t *fe, unsigned char line_no);
/* Transmit DTMF number */
int (*set_dtmf)(sdla_fe_t*, int, unsigned char);
/* Enable/Disable FE interrupt */
@ -530,6 +570,11 @@ typedef struct {
int (*event_ctrl)(sdla_fe_t*, wan_event_ctrl_t*);
/* Front-End watchdog */
int (*watchdog)(sdla_fe_t*);
/* Transmit ISDN BRI D-chan data */
int (*isdn_bri_dchan_tx)(sdla_fe_t*, void*, unsigned int);
/* Receive ISDN BRI D-chan data */
int (*isdn_bri_dchan_rx)(sdla_fe_t*, void*, unsigned int);
} sdla_fe_iface_t;
/*

View File

@ -1,547 +0,0 @@
/*
*************************************************************************************
* *
* FRNT_END.H - the 'C' header file for the Sangoma S508/S514 adapter front-end API. *
* *
*************************************************************************************
*/
#ifndef _SDLA_FRONT_END_H_
#define _SDLA_FRONT_END_H_
/*
*************************************************************************
* DEFINES AND MACROS *
*************************************************************************
*/
/* Front-End media type */
#define WAN_MEDIA_NONE 0x00
#define WAN_MEDIA_T1 0x01
#define WAN_MEDIA_E1 0x02
#define WAN_MEDIA_56K 0x03
#define WAN_MEDIA_DS3 0x04
#define WAN_MEDIA_E3 0x05
#define WAN_MEDIA_STS1 0x06
#define WAN_MEDIA_J1 0x07
#define WAN_MEDIA_FXOFXS 0x08
/*The line code */
#define WAN_LCODE_NONE 0x00
#define WAN_LCODE_AMI 0x01 /* T1/E1/DS3/E3 */
#define WAN_LCODE_B8ZS 0x02 /* T1 */
#define WAN_LCODE_HDB3 0x03 /* E1/E3 */
#define WAN_LCODE_B3ZS 0x04 /* DS3 */
/* Framing modes */
#define WAN_FR_NONE 0x00
#define WAN_FR_ESF 0x01
#define WAN_FR_D4 0x02
#define WAN_FR_ESF_JAPAN 0x03
#define WAN_FR_CRC4 0x04
#define WAN_FR_NCRC4 0x05
#define WAN_FR_UNFRAMED 0x06
#define WAN_FR_E3_G751 0x07
#define WAN_FR_E3_G832 0x08
#define WAN_FR_DS3_Cbit 0x09
#define WAN_FR_DS3_M13 0x10
/* Clocking Master/Normal */
#define WAN_NORMAL_CLK 0x01
#define WAN_MASTER_CLK 0x02
/* Front-End DEBUG flags */
#define WAN_FE_DEBUG_NONE 0x00
#define WAN_FE_DEBUG_RBS 0x01
#define WAN_FE_DEBUG_ALARM 0x02
#define WAN_FE_DEBUG_VOLTAGE 0x03
#define WAN_FE_DEBUG_RECONFIG 0x04
#define WAN_FE_DEBUG_REG 0x05
/* Front-End DEBUG sub-flags */
/* Sub-flags for RBS debugging */
#define WAN_FE_DEBUG_RBS_RX_ENABLE 0x01
#define WAN_FE_DEBUG_RBS_TX_ENABLE 0x02
#define WAN_FE_DEBUG_RBS_RX_DISABLE 0x03
#define WAN_FE_DEBUG_RBS_TX_DISABLE 0x04
#define WAN_FE_DEBUG_RBS_READ 0x05
#define WAN_FE_DEBUG_RBS_SET 0x06
#define WAN_FE_DEBUG_RBS_PRINT 0x07
#define WAN_FE_DEBUG_RBS_DECODE(mode) \
((mode) == WAN_FE_DEBUG_RBS_RX_ENABLE) ? "Enable RBS RX" : \
((mode) == WAN_FE_DEBUG_RBS_TX_ENABLE) ? "Enable RBS TX" : \
((mode) == WAN_FE_DEBUG_RBS_RX_DISABLE) ? "Disable RBS RX" : \
((mode) == WAN_FE_DEBUG_RBS_TX_DISABLE) ? "Disable RBS TX" : \
((mode) == WAN_FE_DEBUG_RBS_READ) ? "Read RBS" : \
((mode) == WAN_FE_DEBUG_RBS_SET) ? "Set RBS" : \
((mode) == WAN_FE_DEBUG_RBS_PRINT) ? "Print RBS" : "Unknown"
/* Sub-flags for ALARM debugging */
#define WAN_FE_DEBUG_ALARM_AIS_ENABLE 0x01
#define WAN_FE_DEBUG_ALARM_AIS_DISABLE 0x02
#define WAN_FE_DEBUG_ALARM_DECODE(mode) \
((mode) == WAN_FE_DEBUG_ALARM_AIS_ENABLE) ? "Enable TX AIS" : \
((mode) == WAN_FE_DEBUG_ALARM_AIS_DISABLE) ? "Disable TX AIS" : \
"Unknown"
/* Front-End TX tri-state mode flags */
#define WAN_FE_TXMODE_ENABLE 0x01
#define WAN_FE_TXMODE_DISABLE 0x02
/* Read alarm flag */
#define WAN_FE_ALARM_NONE 0x00
#define WAN_FE_ALARM_READ 0x01
#define WAN_FE_ALARM_PRINT 0x02
#define WAN_FE_ALARM_UPDATE 0x04
#define IS_FE_ALARM_READ(action) ((action) & WAN_FE_ALARM_READ)
#define IS_FE_ALARM_PRINT(action) ((action) & WAN_FE_ALARM_PRINT)
#define IS_FE_ALARM_UPDATE(action) ((action) & WAN_FE_ALARM_UPDATE)
/* Read pmon flag */
#define WAN_FE_PMON_UPDATE 0x01
#define WAN_FE_PMON_PRINT 0x02
#define WAN_FE_PMON_READ 0x04
#define IS_FE_PMON_UPDATE(action) ((action) & WAN_FE_PMON_UPDATE)
#define IS_FE_PMON_PRINT(action) ((action) & WAN_FE_PMON_PRINT)
#define IS_FE_PMON_READ(action) ((action) & WAN_FE_PMON_READ)
/* FE interrupt action command */
#define WAN_FE_INTR_ENABLE 0x01
#define WAN_FE_INTR_MASK 0x02
/* FE event action command */
#define WAN_FE_EVENT_ENABLE 0x01
#define WAN_FE_EVENT_MASK 0x02
/* Alaw/Mulaw */
#define WAN_TDMV_ALAW 0x01
#define WAN_TDMV_MULAW 0x02
#define FE_MEDIA(fe_cfg) ((fe_cfg)->media)
#define FE_SUBMEDIA(fe_cfg) ((fe_cfg)->sub_media)
#define FE_LCODE(fe_cfg) ((fe_cfg)->lcode)
#define FE_FRAME(fe_cfg) ((fe_cfg)->frame)
#define FE_LINENO(fe_cfg) ((fe_cfg)->line_no)
#define FE_TXTRISTATE(fe_cfg) ((fe_cfg)->tx_tristate_mode)
#define FE_TDMV_LAW(fe_cfg) ((fe_cfg)->tdmv_law)
#define IS_T1_MEDIA(fe_cfg) (FE_MEDIA(fe_cfg) == WAN_MEDIA_T1)
#define IS_E1_MEDIA(fe_cfg) (FE_MEDIA(fe_cfg) == WAN_MEDIA_E1)
#define IS_J1_MEDIA(fe_cfg) (FE_MEDIA(fe_cfg) == WAN_MEDIA_T1 && \
FE_SUBMEDIA(fe_cfg) == WAN_MEDIA_J1)
#define IS_TE1_MEDIA(fe_cfg) (IS_T1_MEDIA(fe_cfg) || \
IS_E1_MEDIA(fe_cfg) || \
IS_J1_MEDIA(fe_cfg))
#define IS_56K_MEDIA(fe_cfg) (FE_MEDIA(fe_cfg) == WAN_MEDIA_56K)
#define IS_TE1_56K_MEDIA(fe_cfg)(IS_TE1_MEDIA(fe_cfg) || \
IS_56K_MEDIA(fe_cfg)
#define IS_DS3_MEDIA(fe_cfg) (FE_MEDIA(fe_cfg) == WAN_MEDIA_DS3)
#define IS_E3_MEDIA(fe_cfg) (FE_MEDIA(fe_cfg) == WAN_MEDIA_E3)
#define IS_FXOFXS_MEDIA(fe_cfg) (FE_MEDIA(fe_cfg) == WAN_MEDIA_FXOFXS)
#define IS_TXTRISTATE(fe_cfg) (FE_TXTRISTATE(fe_cfg) == WANOPT_YES)
#define IS_FR_UNFRAMED(fe_cfg) (FE_FRAME(fe_cfg) == WAN_FR_UNFRAMED)
#define MEDIA_DECODE(fe_cfg) \
(FE_MEDIA(fe_cfg) == WAN_MEDIA_T1 && \
FE_SUBMEDIA(fe_cfg)==WAN_MEDIA_J1)?"J1" : \
(FE_MEDIA(fe_cfg) == WAN_MEDIA_T1) ? "T1" : \
(FE_MEDIA(fe_cfg) == WAN_MEDIA_E1) ? "E1" : \
(FE_MEDIA(fe_cfg) == WAN_MEDIA_J1) ? "J1" : \
(FE_MEDIA(fe_cfg) == WAN_MEDIA_56K) ? "56K" : \
(FE_MEDIA(fe_cfg) == WAN_MEDIA_DS3) ? "DS3" : \
(FE_MEDIA(fe_cfg) == WAN_MEDIA_E3) ? "E3" : \
(FE_MEDIA(fe_cfg) == WAN_MEDIA_FXOFXS) ? "FXO/FXS" : \
"Unknown"
#define LCODE_DECODE(fe_cfg) \
(FE_LCODE(fe_cfg) == WAN_LCODE_AMI) ? "AMI" : \
(FE_LCODE(fe_cfg) == WAN_LCODE_B8ZS) ? "B8ZS" : \
(FE_LCODE(fe_cfg) == WAN_LCODE_HDB3) ? "HDB3" : \
(FE_LCODE(fe_cfg) == WAN_LCODE_B3ZS) ? "B3ZS" : "Unknown"
#define FRAME_DECODE(fe_cfg) \
(FE_FRAME(fe_cfg) == WAN_FR_ESF) ? "ESF" : \
(FE_FRAME(fe_cfg) == WAN_FR_D4) ? "D4" : \
(FE_FRAME(fe_cfg) == WAN_FR_CRC4) ? "CRC4" : \
(FE_FRAME(fe_cfg) == WAN_FR_NCRC4) ? "non-CRC4" : \
(FE_FRAME(fe_cfg) == WAN_FR_UNFRAMED) ? "Unframed" : \
(FE_FRAME(fe_cfg) == WAN_FR_E3_G751) ? "G.751" : \
(FE_FRAME(fe_cfg) == WAN_FR_E3_G832) ? "G.832" : \
(FE_FRAME(fe_cfg) == WAN_FR_DS3_Cbit) ? "C-bit" : \
(FE_FRAME(fe_cfg) == WAN_FR_DS3_M13) ? "M13" : "Unknown"
/* front-end configuration and access interface commands */
#define READ_FRONT_END_REGISTER (WAN_FE_CMD_START+0) /* 0x90 read from front-end register */
#define WRITE_FRONT_END_REGISTER (WAN_FE_CMD_START+1) /* 0x91 write to front-end register */
#define READ_FRONT_END_STATISTICS (WAN_FE_CMD_START+2) /* 0x92 read the front-end statistics */
#define FLUSH_FRONT_END_STATISTICS (WAN_FE_CMD_START+3) /* 0x93 flush the front-end statistics */
typedef struct {
unsigned char media;
unsigned char sub_media;
unsigned char lcode;
unsigned char frame;
unsigned int line_no;
unsigned char tx_tristate_mode;
unsigned int tdmv_law;
unsigned char poll_mode; /* enable fe poll driven arch */
union {
sdla_te_cfg_t te_cfg;
sdla_te3_cfg_t te3_cfg;
sdla_remora_cfg_t remora;
} cfg;
} sdla_fe_cfg_t;
typedef struct {
unsigned int alarms;
unsigned int liu_alarms;
unsigned int bert_alarms;
union {
sdla_te_stats_t te1_stats;
//sdla_te_pmon_t te_pmon;
sdla_te3_pmon_t te3_pmon;
} u;
#define te_pmon u.te1_stats.pmon
} sdla_fe_stats_t;
typedef struct {
unsigned char type;
unsigned char mode;
union{
struct {
int channel;
unsigned char abcd;
} rbs;
struct {
int read;
int reg;
unsigned char value;
} reg;
} fe_debug_un;
#define fe_debug_rbs fe_debug_un.rbs
#define fe_debug_reg fe_debug_un.reg
} sdla_fe_debug_t;
#ifdef WAN_KERNEL
#define FE_ASSERT(val) if (val) return;
#define FE_ASSERT1(val) if (val) return 1;
#define WAN_FECALL(dev, func, x) \
((dev)->fe_iface.func) ? (dev)->fe_iface.func x : -EINVAL
#define IS_T1_FEMEDIA(fe) IS_T1_MEDIA(&((fe)->fe_cfg))
#define IS_E1_FEMEDIA(fe) IS_E1_MEDIA(&((fe)->fe_cfg))
#define IS_TE1_FEMEDIA(fe) IS_TE1_MEDIA(&((fe)->fe_cfg))
#define IS_56K_FEMEDIA(fe) IS_56K_MEDIA(&((fe)->fe_cfg))
#define IS_J1_FEMEDIA(fe) IS_J1_MEDIA(&((fe)->fe_cfg))
#define IS_FXOFXS_FEMEDIA(fe) IS_FXOFXS_MEDIA(&((fe)->fe_cfg))
#define IS_FE_TXTRISTATE(fe) IS_TXTRISTATE(&((fe)->fe_cfg))
#define IS_FR_FEUNFRAMED(fe) IS_FR_UNFRAMED(&((fe)->fe_cfg))
#define WAN_FE_MEDIA(fe) FE_MEDIA(&((fe)->fe_cfg))
#define WAN_FE_LCODE(fe) FE_LCODE(&((fe)->fe_cfg))
#define WAN_FE_FRAME(fe) FE_FRAME(&((fe)->fe_cfg))
#define WAN_FE_LINENO(fe) FE_LINENO(&((fe)->fe_cfg))
#define WAN_FE_TXTRISTATE(fe) FE_TXTRISTATE(&((fe)->fe_cfg))
#define WAN_FE_TDMV_LAW(fe) FE_TDMV_LAW(&((fe)->fe_cfg))
#define FE_MEDIA_DECODE(fe) MEDIA_DECODE(&((fe)->fe_cfg))
#define FE_LCODE_DECODE(fe) LCODE_DECODE(&((fe)->fe_cfg))
#define FE_FRAME_DECODE(fe) FRAME_DECODE(&((fe)->fe_cfg))
#define WAN_FE_MAX_CHANNELS(fe) \
(IS_TE1_FEMEDIA(fe)) ? GET_TE_CHANNEL_RANGE(fe) : \
(IS_FXOFXS_FEMEDIA(fe)) ? MAX_FXOFXS_CHANNELS : 0
/* Front-End status */
#define WAN_FE_STATUS_DECODE(fe) \
((fe)->fe_status == FE_DISCONNECTED) ? "disconnected" :\
((fe)->fe_status == FE_CONNECTED) ? "connected" : \
"unknown"
#if 0
enum fe_status {
FE_UNITIALIZED = 0x00,
FE_DISCONNECTED,
FE_CONNECTED
};
#endif
/* adapter configuration interface commands */
#define SET_ADAPTER_CONFIGURATION (WAN_INTERFACE_CMD_START+0) /* 0xA0 set adapter configuration */
#define READ_ADAPTER_CONFIGURATION (WAN_INTERFACE_CMD_START+1) /* 0xA1 read adapter configuration */
/* return codes from interface commands */
#define LGTH_FE_CFG_DATA_INVALID 0x91 /* the length of the FE_RX_DISC_TX_IDLE_STRUCT is invalid */
#define LGTH_ADAPTER_CFG_DATA_INVALID 0x91 /* the length of the passed configuration data is invalid */
#define INVALID_FE_CFG_DATA 0x92 /* the passed SET_FE_RX_DISC_TX_IDLE_CFG data is invalid */
#define ADPTR_OPERATING_FREQ_INVALID 0x92 /* an invalid adapter operating frequency was selected */
#define PROT_CFG_BEFORE_FE_CFG 0x93 /* set the protocol-level configuration before setting the FE configuration */
#define SET_FE_RX_DISC_TX_IDLE_CFG 0x98 /* set the front-end Rx discard/Tx idle configuration */
#define READ_FE_RX_DISC_TX_IDLE_CFG 0x99 /* read the front-end Rx discard/Tx idle configuration */
#define SET_TE1_SIGNALING_CFG 0x9A /* set the T1/E1 signaling configuration */
#define READ_TE1_SIGNALING_CFG 0x9B /* read the T1/E1 signaling configuration */
#define COMMAND_INVALID_FOR_ADAPTER 0x9F /* the command is invalid for the adapter type */
/* ---------------------------------------------------------------------------------
* Constants for the SET_FE_RX_DISC_TX_IDLE_CFG/READ_FE_RX_DISC_TX_IDLE_CFG commands
* --------------------------------------------------------------------------------*/
#define NO_ACTIVE_RX_TIME_SLOTS_T1 24 /* T1 - no active time slots used for reception */
#define NO_ACTIVE_TX_TIME_SLOTS_T1 24 /* T1 - no active time slots used for transmission */
#define NO_ACTIVE_RX_TIME_SLOTS_E1 32 /* E1 - no active time slots used for reception */
#define NO_ACTIVE_TX_TIME_SLOTS_E1 31 /* E1 - no active time slots used for transmission (channel 0 reserved for framing) */
/* the structure used for the SET_FE_RX_DISC_TX_IDLE_CFG/READ_FE_RX_DISC_TX_IDLE_CFG command */
#pragma pack(1)
typedef struct {
unsigned short lgth_Rx_disc_bfr; /* the length of the Rx discard buffer */
unsigned short lgth_Tx_idle_bfr; /* the length of the Tx idle buffer */
/* the transmit idle data buffer */
unsigned char Tx_idle_data_bfr[NO_ACTIVE_TX_TIME_SLOTS_E1];
} FE_RX_DISC_TX_IDLE_STRUCT;
#pragma pack()
/* ----------------------------------------------------------------------------
* Constants for front-end access
* --------------------------------------------------------------------------*/
/* the structure used for the READ_FRONT_END_REGISTER/WRITE_FRONT_END_REGISTER command */
#pragma pack(1)
typedef struct {
unsigned short register_number; /* the register number to be read from or written to */
unsigned char register_value; /* the register value read/written */
} FRONT_END_REG_STRUCT;
#pragma pack()
#pragma pack(1)
typedef struct {
unsigned char opp_flag; /* opp flag */
union {
struct {
unsigned char RR8_56k; /* register #8 value - 56K CSU/DSU */
unsigned char RR9_56k; /* register #9 value - 56K CSU/DSU */
unsigned char RRA_56k; /* register #A value - 56K CSU/DSU */
unsigned char RRB_56k; /* register #B value - 56K CSU/DSU */
unsigned char RRC_56k; /* register #C value - 56K CSU/DSU */
} stat_56k;
} FE_U;
} FRONT_END_STATUS_STRUCT;
#pragma pack()
/* -----------------------------------------------------------------------------
* Constants for the READ_FRONT_END_STATISTICS command
* ---------------------------------------------------------------------------*/
/* the front-end statistics structure */
#pragma pack(1)
typedef struct {
unsigned int FE_interrupt_count; /* the number of front-end interrupts generated */
unsigned int FE_app_timeout_count; /* the number of front-end interrupt application timeouts */
} FE_STATISTICS_STRUCT;
#pragma pack()
/* --------------------------------------------------------------------------------
* Constants for the SET_ADAPTER_CONFIGURATION/READ_ADAPTER_CONFIGURATION commands
* -------------------------------------------------------------------------------*/
/* the adapter configuration structure */
#pragma pack(1)
typedef struct {
unsigned short adapter_type; /* type of adapter */
unsigned short adapter_config; /* miscellaneous adapter configuration options */
unsigned int operating_frequency; /* adapter operating frequency */
} ADAPTER_CONFIGURATION_STRUCT;
#pragma pack()
typedef int (WRITE_FRONT_END_REG_T)(void*, ...);
typedef unsigned char (READ_FRONT_END_REG_T)(void*, ...);
enum {
AFT_LED_ON,
AFT_LED_OFF,
AFT_LED_TOGGLE
};
typedef struct sdla_fe_timer_event_ {
unsigned char type;
u_int8_t mode;
int delay;
union{
#define te_event u_fe.te
#define rm_event u_fe.rm
sdla_te_event_t te;
sdla_rm_event_t rm;
} u_fe;
WAN_LIST_ENTRY(sdla_fe_timer_event_) next;
} sdla_fe_timer_event_t;
#define WAN_FE_MAX_QEVENT_LEN 20
typedef struct {
char *name;
void *card;
sdla_fe_cfg_t fe_cfg;
/* FIXME: Remove the following parameters from wandev_t */
unsigned char fe_status;
/* unsigned int fe_alarm; */
unsigned char fe_chip_id;
unsigned char fe_max_ports;
unsigned char fe_debug;
/* ^^^ */
union {
#define te_param fe_param.te
#define te3_param fe_param.te3
#define rm_param fe_param.remora
sdla_te_param_t te;
sdla_56k_param_t k56_param;
sdla_te3_param_t te3_param;
sdla_remora_param_t remora;
} fe_param;
#define fe_alarm fe_stats.alarms
#define liu_alarm fe_stats.liu_alarms
#define bert_alarm fe_stats.bert_alarms
sdla_fe_stats_t fe_stats;
wan_spinlock_t lock;
wan_timer_t timer;
WAN_LIST_HEAD(, sdla_fe_timer_event_) event;
unsigned int event_map;
int (*write_cpld)(void*, unsigned short, unsigned char);
int (*read_cpld)(void*, unsigned short, unsigned char);
int (*write_fe_cpld)(void*, unsigned short, unsigned char);
int (*read_fe_cpld)(void*, unsigned short, unsigned char);
int (*write_framer)(void*,unsigned short,unsigned short);
unsigned int (*read_framer)(void*,unsigned short);
WRITE_FRONT_END_REG_T *write_fe_reg;
READ_FRONT_END_REG_T *read_fe_reg;
READ_FRONT_END_REG_T *__read_fe_reg;
#if defined(__WINDOWS__)
int remora_modules_counter;/* set in wp_remora_config() */
#endif
} sdla_fe_t;
/*
** Sangoma Front-End interface structure
*/
#if 0
typedef struct {
/* In-Service or Not (T1/E1/56K) */
unsigned int (*get_fe_service_status)(void*);
/* Print Front-End alarm (T1/E1/56K) */
void (*print_fe_alarm)(void*,unsigned int);
/* Print Front-End alarm (T1/E1/56K) */
char* (*print_fe_act_channels)(void*);
/* Set Front-End alarm (T1/E1) */
void (*set_fe_alarm)(void*,unsigned int);
/* Set extra interrupt type (after link get connected)) */
int (*set_fe_sigcfg)(void*, unsigned int);
} sdla_fe_iface_t;
#endif
#if defined(__LINUX__)
# include <linux/wanpipe_events.h>
#elif defined(__WINDOWS__)
# include <wanpipe_events.h> /* for wan_event_ctrl_t */
#endif
/*
** Sangoma Front-End interface structure (new version)
** FIXME: replace sdla_fe_iface_t with the new version! */
typedef struct {
int (*reset)(void *fe, int, int);
int (*global_config)(void *fe);
int (*global_unconfig)(void *fe);
int (*chip_config)(void *fe);
int (*config)(void *fe);
int (*post_init)(void*);
/* Set extra T1/E1 configuration */
int (*reconfig)(sdla_fe_t*);
int (*unconfig)(void *fe);
int (*pre_release)(void*);
int (*if_config)(void *fe, u32, u8);
int (*if_unconfig)(void *fe, u32, u8);
int (*disable_irq)(void *fe);
int (*polling)(sdla_fe_t *fe);
int (*isr)(sdla_fe_t *fe);
int (*process_udp)(sdla_fe_t *fe, void*, unsigned char*);
unsigned int (*read_alarm)(sdla_fe_t *fe, int);
int (*read_pmon)(sdla_fe_t *fe, int);
int (*flush_pmon)(sdla_fe_t *fe);
/* Set Front-End alarm (T1/E1) */
int (*set_fe_alarm)(sdla_fe_t *fe, unsigned int);
/* Set extra interrupt type (after link get connected)) */
int (*set_fe_sigctrl)(sdla_fe_t*, int, unsigned long, int);
/* Print Front-End alarm (T1/E1/56K) */
char* (*print_fe_act_channels)(sdla_fe_t*);
/* Print Front-End alarm (T1/E1/56K) */
int (*print_fe_alarm)(sdla_fe_t*,unsigned int);
/* Get front end status */
int (*get_fe_status)(sdla_fe_t *fe, unsigned char*);
/* Get front end media type */
unsigned char (*get_fe_media)(sdla_fe_t *fe);
/* Get front end media type string */
char* (*get_fe_media_string)(void);
/* Set Line-loopback modes */
int (*set_fe_lbmode)(sdla_fe_t*, unsigned char, unsigned char);
/* Update Alarm Status for proc file system */
int (*update_alarm_info)(sdla_fe_t*, struct seq_file* m, int* stop_cnt);
/* Update PMON Status for proc file system */
int (*update_pmon_info)(sdla_fe_t*, struct seq_file* m, int* stop_cnt);
/* AFT T1/E1 cards only */
int (*led_ctrl)(sdla_fe_t*, int mode);
/* Check RBS bits (T1/E1 cards) */
int (*check_rbsbits)(sdla_fe_t*, int, unsigned int, int);
/* Read RBS bits (T1/E1 cards) */
unsigned char (*read_rbsbits)(sdla_fe_t*, int, int);
/* Set RBS bits (T1/E1 cards, voice) */
int (*set_rbsbits)(sdla_fe_t*, int, unsigned char);
/* Report RBS bits (T1/E1 cards) */
int (*report_rbsbits)(sdla_fe_t*);
/* Get Front-End SNMP data */
int (*get_snmp_data)(sdla_fe_t*, void*, void*);
/* Check if the interrupt is for this port */
int (*check_isr)(sdla_fe_t *fe);
#if defined(__WINDOWS__)
/* Enable TE1 poll timer (WINDOWS ONLY) */
void (*enable_timer)(sdla_fe_t* fe, unsigned char cmd, unsigned int delay);
#endif
/* Available front-end map */
unsigned int (*active_map)(sdla_fe_t *fe);
/* Transmit DTMF number */
int (*set_dtmf)(sdla_fe_t*, int, unsigned char);
/* Enable/Disable FE interrupt */
int (*intr_ctrl)(sdla_fe_t*, int, u_int8_t, u_int8_t, unsigned int);
/* Event Control */
int (*event_ctrl)(sdla_fe_t*, wan_event_ctrl_t*);
/* Front-End watchdog */
int (*watchdog)(sdla_fe_t*);
} sdla_fe_iface_t;
/*
** Sangoma Front-End interface structure (new version)
** FIXME: replace sdla_fe_iface_t with the new version! */
typedef struct {
int (*check_hook_state)(sdla_fe_t *, int);
int (*hook_state)(sdla_fe_t *, int, int);
} sdla_fe_notify_iface_t;
#endif /* WAN_KERNEL */
#endif

View File

@ -13,8 +13,8 @@
* Oct 14, 1998 Jaspreet Singh o Initial Version.
*****************************************************************************/
#ifndef _SDLA_HDLC___
#define _SDLA_HDLC___
#ifndef __SDLA_HDLC_H__
#define __SDLA_HDLC_H__
#pragma pack(1)
@ -52,13 +52,13 @@
*/
typedef struct {
unsigned char opp_flag ; /* the opp flag */
unsigned char command ; /* the command code */
unsigned short buffer_length ; /* the data length */
unsigned char return_code ; /* the return code */
unsigned char PF_bit ; /* the HDLC P/F bit */
char MB_reserved[NUMBER_HDLC_MB_RES_BYTES] ; /* for later use */
char data[MAX_NO_DATA_BYTES_IN_I_FRAME] ; /* the data area */
unsigned char opp_flag ; /* the opp flag */
unsigned char command ; /* the command code */
unsigned short buffer_length ; /* the data length */
unsigned char return_code ; /* the return code */
unsigned char PF_bit ; /* the HDLC P/F bit */
char MB_reserved[NUMBER_HDLC_MB_RES_BYTES] ; /* for later use */
char data[MAX_NO_DATA_BYTES_IN_I_FRAME] ; /* the data area */
} HDLC_MAILBOX_STRUCT;
@ -67,20 +67,20 @@ typedef struct {
typedef struct {
unsigned char opp_flag ; /* the opp flag */
unsigned char command ; /* the command code */
unsigned short buffer_length ; /* the data length */
unsigned char return_code ; /* the return code */
unsigned char PF_bit ; /* the HDLC P/F bit */
char MB_reserved[NUMBER_HDLC_MB_RES_BYTES] ; /* for later use */
char data[SIZEOF_HDLC_MB_DATA_BFR] ; /* the data area */
unsigned char opp_flag ; /* the opp flag */
unsigned char command ; /* the command code */
unsigned short buffer_length ; /* the data length */
unsigned char return_code ; /* the return code */
unsigned char PF_bit ; /* the HDLC P/F bit */
char MB_reserved[NUMBER_HDLC_MB_RES_BYTES] ; /* for later use */
char data[SIZEOF_HDLC_MB_DATA_BFR] ; /* the data area */
} TRUE_HDLC_MAILBOX_STRUCT;
typedef struct {
pid_t pid_num ;
HDLC_MAILBOX_STRUCT cmdarea ;
pid_t pid_num ;
HDLC_MAILBOX_STRUCT cmdarea ;
} CMDBLOCK_STRUCT;
@ -288,9 +288,9 @@ typedef struct {
typedef struct {
unsigned char trace_config ; /* trace configuration */
unsigned short trace_deactivation_timer ; /* trace deactivation timer */
unsigned long ptr_trace_stat_el_cfg_struct ; /* a pointer to the line trace element configuration structure */
unsigned char trace_config ; /* trace configuration */
unsigned short trace_deactivation_timer ; /* trace deactivation timer */
unsigned long ptr_trace_stat_el_cfg_struct ; /* a pointer to the line trace element configuration structure */
} LINE_TRACE_CONFIG_STRUCT;
@ -309,11 +309,11 @@ typedef struct {
typedef struct {
unsigned short number_trace_status_elements ; /* number of line trace elements */
unsigned long base_addr_trace_status_elements ;/* base address of the trace element list */
unsigned long next_trace_element_to_use ; /* pointer to the next trace element to be used */
unsigned long base_addr_trace_buffer ; /* base address of the trace data buffer */
unsigned long end_addr_trace_buffer ; /* end address of the trace data buffer */
unsigned short number_trace_status_elements ; /* number of line trace elements */
unsigned long base_addr_trace_status_elements ;/* base address of the trace element list */
unsigned long next_trace_element_to_use ; /* pointer to the next trace element to be used */
unsigned long base_addr_trace_buffer ; /* base address of the trace data buffer */
unsigned long end_addr_trace_buffer ; /* end address of the trace data buffer */
} TRACE_STATUS_EL_CFG_STRUCT;
@ -323,13 +323,13 @@ typedef struct {
typedef struct {
unsigned char opp_flag ; /* opp flag */
unsigned short trace_length ; /* trace length */
unsigned char trace_type ; /* trace type */
unsigned short trace_time_stamp ;/* time stamp */
unsigned short trace_reserved_1 ;/* reserved for later use */
unsigned long trace_reserved_2 ; /* reserved for later use */
unsigned long ptr_data_bfr ; /* pointer to the trace data buffer */
unsigned char opp_flag ; /* opp flag */
unsigned short trace_length ; /* trace length */
unsigned char trace_type ; /* trace type */
unsigned short trace_time_stamp ;/* time stamp */
unsigned short trace_reserved_1 ;/* reserved for later use */
unsigned long trace_reserved_2 ; /* reserved for later use */
unsigned long ptr_data_bfr ; /* pointer to the trace data buffer */
} TRACE_STATUS_ELEMENT_STRUCT;
@ -360,24 +360,24 @@ typedef struct {
typedef struct {
unsigned long baud_rate ; /* the baud rate */
unsigned short line_config_options ; /* line configuration options */
unsigned short modem_config_options ; /* modem configuration options */
unsigned short HDLC_API_options ; /* HDLC API options */
unsigned short HDLC_protocol_options ; /* HDLC protocol options */
unsigned short HDLC_buffer_config_options ; /* HDLC buffer configuration options */
unsigned short HDLC_statistics_options ; /* HDLC operational statistics options */
unsigned short configured_as_DTE ; /* DTE or DCE configuration */
unsigned short max_HDLC_I_field_length ; /* the maximum length of the HDLC I-field */
unsigned short HDLC_I_frame_window ; /* k - the I-frame window (maximum number of outstanding I-frames) */
unsigned short HDLC_T1_timer ; /* the HDLC T1 timer */
unsigned short HDLC_T2_timer ; /* the HDLC T2 timer */
unsigned short HDLC_T3_timer ; /* the HDLC T3 timer */
unsigned short HDLC_T4_timer ; /* the HDLC T4 timer */
unsigned short HDLC_N2_counter ; /* the HDLC N2 counter */
unsigned long ptr_shared_mem_info_struct ;/* a pointer to the shared memory area information structure */
unsigned long ptr_HDLC_Tx_stat_el_cfg_struct ;/* a pointer to the transmit status element configuration structure */
unsigned long ptr_HDLC_Rx_stat_el_cfg_struct ;/* a pointer to the receive status element configuration structure */
unsigned long baud_rate ; /* the baud rate */
unsigned short line_config_options ; /* line configuration options */
unsigned short modem_config_options ; /* modem configuration options */
unsigned short HDLC_API_options ; /* HDLC API options */
unsigned short HDLC_protocol_options ; /* HDLC protocol options */
unsigned short HDLC_buffer_config_options ; /* HDLC buffer configuration options */
unsigned short HDLC_statistics_options ; /* HDLC operational statistics options */
unsigned short configured_as_DTE ; /* DTE or DCE configuration */
unsigned short max_HDLC_I_field_length ; /* the maximum length of the HDLC I-field */
unsigned short HDLC_I_frame_window ; /* k - the I-frame window (maximum number of outstanding I-frames) */
unsigned short HDLC_T1_timer ; /* the HDLC T1 timer */
unsigned short HDLC_T2_timer ; /* the HDLC T2 timer */
unsigned short HDLC_T3_timer ; /* the HDLC T3 timer */
unsigned short HDLC_T4_timer ; /* the HDLC T4 timer */
unsigned short HDLC_N2_counter ; /* the HDLC N2 counter */
unsigned long ptr_shared_mem_info_struct ;/* a pointer to the shared memory area information structure */
unsigned long ptr_HDLC_Tx_stat_el_cfg_struct ;/* a pointer to the transmit status element configuration structure */
unsigned long ptr_HDLC_Rx_stat_el_cfg_struct ;/* a pointer to the receive status element configuration structure */
} HDLC_CONFIGURATION_STRUCT;
@ -604,9 +604,9 @@ typedef struct {
*/
typedef struct {
unsigned char interrupt_type ; /* type of interrupt triggered */
unsigned char interrupt_permission ; /* interrupt permission mask */
unsigned char int_info_reserved[14] ; /* reserved */
unsigned char interrupt_type ; /* type of interrupt triggered */
unsigned char interrupt_permission ; /* interrupt permission mask */
unsigned char int_info_reserved[14] ; /* reserved */
} HDLC_INTERRUPT_INFO_STRUCT;
@ -633,9 +633,9 @@ typedef struct {
typedef struct {
unsigned short number_Tx_status_elements ; /* number of transmit status elements */
unsigned long base_addr_Tx_status_elements ; /* base address of the transmit element list */
unsigned long next_Tx_status_element_to_use ; /* pointer to the next transmit element to be used */
unsigned short number_Tx_status_elements ; /* number of transmit status elements */
unsigned long base_addr_Tx_status_elements ; /* base address of the transmit element list */
unsigned long next_Tx_status_element_to_use ; /* pointer to the next transmit element to be used */
} HDLC_TX_STATUS_EL_CFG_STRUCT;
@ -644,12 +644,12 @@ typedef struct {
*/
typedef struct {
unsigned char opp_flag ; /* opp flag */
unsigned short I_frame_length ; /* length of the frame*/
unsigned char P_bit ; /* P-bit setting in the frame */
unsigned long reserved_1 ; /* reserved for internal use */
unsigned long reserved_2 ; /* reserved for internal use */
unsigned long ptr_data_bfr ; /* pointer to the data area */
unsigned char opp_flag ; /* opp flag */
unsigned short I_frame_length ; /* length of the frame*/
unsigned char P_bit ; /* P-bit setting in the frame */
unsigned long reserved_1 ; /* reserved for internal use */
unsigned long reserved_2 ; /* reserved for internal use */
unsigned long ptr_data_bfr ; /* pointer to the data area */
} HDLC_I_FRM_TX_STATUS_EL_STRUCT;
@ -665,11 +665,11 @@ typedef struct {
typedef struct {
unsigned short number_Rx_status_elements ; /* number of receive status elements */
unsigned long base_addr_Rx_status_elements ; /* base address of the receive element list */
unsigned long next_Rx_status_element_to_use ; /* pointer to the next receive element to be used */
unsigned long base_addr_Rx_buffer ; /* base address of the receive data buffer */
unsigned long end_addr_Rx_buffer ; /* end address of the receive data buffer */
unsigned short number_Rx_status_elements ; /* number of receive status elements */
unsigned long base_addr_Rx_status_elements ; /* base address of the receive element list */
unsigned long next_Rx_status_element_to_use ; /* pointer to the next receive element to be used */
unsigned long base_addr_Rx_buffer ; /* base address of the receive data buffer */
unsigned long end_addr_Rx_buffer ; /* end address of the receive data buffer */
} HDLC_RX_STATUS_EL_CFG_STRUCT;
/*
@ -677,12 +677,12 @@ typedef struct {
*/
typedef struct {
unsigned char opp_flag ; /* opp flag */
unsigned short I_frame_length ; /*length of the recvd frame */
unsigned char P_bit ; /* P-bit setting in the frame */
unsigned long reserved_1 ; /* reserved for internal use */
unsigned long reserved_2 ; /* reserved for internal use */
unsigned long ptr_data_bfr ; /* pointer to the data area */
unsigned char opp_flag ; /* opp flag */
unsigned short I_frame_length ; /*length of the recvd frame */
unsigned char P_bit ; /* P-bit setting in the frame */
unsigned long reserved_1 ; /* reserved for internal use */
unsigned long reserved_2 ; /* reserved for internal use */
unsigned long ptr_data_bfr ; /* pointer to the data area */
} HDLC_I_FRM_RX_STATUS_EL_STRUCT;
@ -700,12 +700,12 @@ typedef struct {
typedef struct {
unsigned char global_status ; /* global status */
unsigned char modem_status ;/* current modem status*/
unsigned char global_excep_conditions ; /* global exception conditions */
unsigned char glob_info_reserved[5] ; /* reserved */
unsigned char code_name[4] ; /* code name */
unsigned char code_version[4] ; /* code version */
unsigned char global_status ; /* global status */
unsigned char modem_status ;/* current modem status*/
unsigned char global_excep_conditions ; /* global exception conditions */
unsigned char glob_info_reserved[5] ; /* reserved */
unsigned char code_name[4] ; /* code name */
unsigned char code_version[4] ; /* code version */
} GLOBAL_INFORMATION_STRUCT;
@ -716,9 +716,9 @@ typedef struct {
typedef struct {
unsigned char parallel_port_A_input ; /* input - parallel port A */
unsigned char parallel_port_B_input ; /* input - parallel port B */
unsigned char FT1_info_reserved[14] ; /* reserved */
unsigned char parallel_port_A_input ; /* input - parallel port A */
unsigned char parallel_port_B_input ; /* input - parallel port B */
unsigned char FT1_info_reserved[14] ; /* reserved */
} FT1_INFORMATION_STRUCT;
@ -728,14 +728,14 @@ typedef struct {
typedef struct {
unsigned char HDLC_status ; /* HDLC status */
unsigned char HDLC_excep_frms_Rx ; /* HDLC exception conditions - received frames */
unsigned char HDLC_excep_frms_Tx ; /* HDLC exception conditions - transmitted frames */
unsigned char HDLC_excep_miscellaneous ; /* HDLC exception conditions - miscellaneous */
unsigned char rotating_SUP_frm_count ; /* rotating Supervisory frame count */
unsigned char LAPB_status ; /* internal LAPB status */
unsigned char internal_HDLC_status ; /* internal HDLC status */
unsigned char HDLC_info_reserved[9] ; /* reserved */
unsigned char HDLC_status ; /* HDLC status */
unsigned char HDLC_excep_frms_Rx ; /* HDLC exception conditions - received frames */
unsigned char HDLC_excep_frms_Tx ; /* HDLC exception conditions - transmitted frames */
unsigned char HDLC_excep_miscellaneous ; /* HDLC exception conditions - miscellaneous */
unsigned char rotating_SUP_frm_count ; /* rotating Supervisory frame count */
unsigned char LAPB_status ; /* internal LAPB status */
unsigned char internal_HDLC_status ; /* internal HDLC status */
unsigned char HDLC_info_reserved[9] ; /* reserved */
} HDLC_INFORMATION_STRUCT;
@ -748,14 +748,12 @@ typedef struct {
typedef struct {
GLOBAL_INFORMATION_STRUCT global_info ; /* the global information structure */
FT1_INFORMATION_STRUCT FT1_info ; /* the S508/FT1 information structure */
HDLC_INFORMATION_STRUCT HDLC_info ; /* the HDLC information structure */
HDLC_INTERRUPT_INFO_STRUCT HDLC_interrupt_info ; /* the HDLC interrupt information structure */
GLOBAL_INFORMATION_STRUCT global_info ; /* the global information structure */
FT1_INFORMATION_STRUCT FT1_info ; /* the S508/FT1 information structure */
HDLC_INFORMATION_STRUCT HDLC_info ; /* the HDLC information structure */
HDLC_INTERRUPT_INFO_STRUCT HDLC_interrupt_info ; /* the HDLC interrupt information structure */
} HDLC_SHARED_MEMORY_INFO_STRUCT;
#pragma pack()
#pragma pack()
#endif

View File

@ -18,8 +18,6 @@
#define MAX_FR_CHANNELS 1023
#define HIGHEST_VALID_DLCI MAX_FR_CHANNELS-1
#pragma pack(1)
typedef struct {
unsigned ea1 : 1;
unsigned cr : 1;
@ -30,9 +28,7 @@ typedef struct {
unsigned becn : 1;
unsigned fecn : 1;
unsigned dlcil: 4;
}fr_hdr;
#pragma pack()
}__attribute__ ((packed)) fr_hdr;
#define FR_HEADER_LEN 8
@ -57,6 +53,14 @@ typedef struct {
#define FR_LINK_INOPER 0x00 /* for global status (DLCI == 0) */
#define FR_LINK_OPER 0x01
#if 0
#define FR_DLCI_INOPER 0x00
#define FR_DLCI_DELETED 0x01 /* for circuit status (DLCI != 0) */
#define FR_DLCI_ACTIVE 0x02
#define FR_DLCI_WAITING 0x04
#define FR_DLCI_NEW 0x08
#define FR_DLCI_REPORT 0x40
#endif
#define PVC_STATE_NEW 0x01
#define PVC_STATE_ACTIVE 0x02

Some files were not shown because too many files have changed in this diff Show More