Commit Graph

615 Commits

Author SHA1 Message Date
Denis Kenzior 0c4a0e61b6 gsmdial: Update to new API 2011-05-24 12:25:07 -05:00
Denis Kenzior eeb3ccc321 gatppp: Refactor PPP API
Remove the series of constructors which take a GIOChannel directly.
These weren't used.

This change also allows the construction of the PPP object and filling
in various pertinent information without starting the HDLC processing.
The client must now use g_at_ppp_open() for the client side or
g_at_ppp_listen() for the server side to start the true PPP session.
The previous owner of the GAtIO object must be suspended beforehand.
2011-05-24 12:25:07 -05:00
Denis Kenzior 72dee45005 gatppp: Make sure to clean up guard_timeout_source 2011-05-24 12:25:07 -05:00
Denis Kenzior d82c5ce1fa gatppp: Rename guard_timeout_src to _source 2011-05-24 12:25:07 -05:00
Guillaume Zajac db430aaf1c gatppp: Do not call disconnect func if suspended 2011-05-24 12:25:07 -05:00
Guillaume Zajac ab027e9e9c gatppp: Add GAtPPP suspend API 2011-05-24 12:25:07 -05:00
Guillaume Zajac 7617c492b8 gatppp: Add GAtPPP resume functionality 2011-05-24 12:25:07 -05:00
Guillaume Zajac 47f5887c29 ppp_net: add ppp_net_resume_interface() API 2011-05-24 12:25:07 -05:00
Denis Kenzior 6f6a9747f8 gathdlc: Squash unneeded function 2011-05-24 12:25:07 -05:00
Guillaume Zajac ce71d75675 gathdlc: add g_at_hdlc_resume() API 2011-05-24 12:25:07 -05:00
Denis Kenzior 832cc3317b gatppp: Make ppp->fd handling a bit easier to grok 2011-05-24 12:10:22 -05:00
Denis Kenzior e8c7fc8a8a ppp_net: streamline ppp_net_new logic 2011-05-24 12:10:22 -05:00
Denis Kenzior 5405d0860f gatppp: Ensure created GAtPPP object is not null 2011-05-24 12:10:22 -05:00
Guillaume Zajac 7e5ccc18d7 gatppp: Add new contructor to use external fd 2011-05-24 12:10:22 -05:00
Denis Kenzior be7cce9cb3 gatppp: Don't go over 80 characters / line 2011-05-24 11:47:46 -05:00
Denis Kenzior cccf76cfdf test-server: Remove legacy code
The previous thinking was to use the PPP stack to send Conf-Naks with
some delay to client requests until the IP configuration was setup
correctly.  However, we now hide this by using the delay during the
processing of the ATD.  This code is no longer relevant.
2011-05-24 11:47:46 -05:00
Caiwen Zhang 65d65f4fbe gatppp: add name field when using chap auth
Some systems require name field, otherwise chap authentication will
fail.
2011-05-11 20:24:35 -05:00
Caiwen Zhang 37d04bee15 gatppp: fix ppp protocol-reject constructing error
In PPP Protocol-Reject package the 'rejected data field' should be a copy
of the rejected package, the copy starts from the data field. besides,
Protocol-Reject package include a 'rejected protocol field', it is the
same as the protocol field of the rejected package.

Protocol-Reject package structure is:

	| PPP_header | rejected protocol | rejected data

The rejected package structure is:
	| Addr | Control | protocol | data

So the Protocol-Reject package data field is copied from the 3rd byte of
the rejected package.
2011-05-11 13:29:30 -05:00
Guillaume Zajac f1cbb783fc gatppp: Add API for setting suspend callback
In situations where the PPP stream can be suspended by the peer, e.g. in
the server role using '+++'
2011-05-08 23:03:22 -05:00
Denis Kenzior d48c309151 ppp_net: Reset the watch to zero when removing 2011-05-08 23:02:19 -05:00
Guillaume Zajac 9fea153593 ppp_net: add ppp_net_suspend_interface() function 2011-05-08 23:00:12 -05:00
Guillaume Zajac badd5555ec gathdlc: delete read/write handler in hdlc_suspend 2011-05-08 22:59:03 -05:00
Guillaume Zajac 8a56acd549 gathdlc: Add public suspend function 2011-05-08 22:58:41 -05:00
Marcel Holtmann 6d426a19a6 gatchat: Fix memory leak with notify nodes list
The list itself needs to be freed as well and not only its elements.
2011-05-06 09:19:54 -07:00
Denis Kenzior dc86e86446 gathdlc: Make sure to set in_read_handler properly 2011-05-02 07:15:41 -05:00
Denis Kenzior 94d6d505ee gathdlc: Add support for detecting +++ escapes 2011-05-02 07:06:28 -05:00
Guillaume Zajac 70ae2f0028 gatio: add ability to drain GAtIO read buffer 2011-05-02 07:05:57 -05:00
Guillaume Zajac 6b3cfbba85 gat: add GAtSuspendFunc CB typedef 2011-04-29 08:30:22 -05:00
Martin Xu 0dc3d69c54 gatppp: Fix crash related to not stopping timers
In case of offline modem when GPRS data connection is connected, if gprs
atom is removed before PPP termination process is complete, the terminate_timer
will not be stop. It will cause ofonod crash when the timer times out.
2011-04-26 14:47:11 -05:00
Olivier Guiter bdb4c8d3db gatserver: add tone and pulse dialing AT commands 2011-03-29 13:54:46 -05:00
Denis Kenzior be5aadc16f gatchat: Add support for short prompt send variant 2011-03-28 18:06:59 -05:00
Denis Kenzior 2ed142de3c gatsyntax: support short prompt in v1 parser 2011-03-28 18:06:59 -05:00
Denis Kenzior b6d6282158 gatsyntax: support short prompt for permissive 2011-03-28 18:06:59 -05:00
Jarko Poutiainen 57faa0c931 gatchat: new hint to handle +CPOS 2011-03-28 18:06:59 -05:00
Jarko Poutiainen 17599580d8 gatchat: introduce send for +CPOS 2011-03-28 18:06:58 -05:00
Denis Kenzior 92a6b18ef4 gatsyntax: Support echo of empty lines 2011-03-28 18:06:57 -05:00
Denis Kenzior 54736c532c gatsyntax: Re-name enum a proper way 2011-03-28 18:06:57 -05:00
Olivier Guiter 6b03d7cdff gatserver: add v250 ATL and ATM commands 2011-03-25 12:37:25 -05:00
Olivier Guiter 155cf8f9c4 gatserver: add AT&F command 2011-03-24 13:27:13 -05:00
Olivier Guiter cc17e8fd8c gatserver: add ATZ command 2011-03-23 15:01:36 -05:00
Patrick Porlan 2f0485e757 ringbuffer: Switch ringbuffer to g_slice allocator
This should allow for more efficient handling of equally sized
buffers, in terms of alignment and recycling.
2011-03-16 21:34:54 -05:00
Patrick Porlan bb0e3e0a58 PPP: Optimize write buffer management
Extend the write buffer handling in gathdlc.c to minimize stalling and
process switching during large PPP transfers. The single write buffer
is replaced by a queue of buffers, allowing for much larger emission
windows without hugely impacting memory consumption. This reduces the
time required to send 50 MB between a couple of local PPP interfaces on
my laptop from ~53s to ~3s.
2011-03-15 14:15:26 -05:00
Patrick Porlan 992019cad4 gatchat: Optimize ringbuffer modulo operations
Replace modulo operations in ringbuffer.c by masking operations.  This
is possible because the size of the ring buffers is always a power of
two, and yields a small performance improvement.

The improvement should be mostly visible on processors that implement
division in microcode (Atom) or lack a division instruction (ARM).
2011-03-02 22:50:32 -06:00
Denis Kenzior ef49d65b70 gsmdial: Introduce data_mode
If we're in PPP mode, then don't send unsolicited notifications.  Only a
NO CARRIER is really allowed.
2011-02-28 16:13:56 -06:00
Denis Kenzior 51d950994d gatserver: Tweak use of g_at_server_suspend/resume 2011-02-28 16:13:56 -06:00
Denis Kenzior d3350d6662 test-server: Make sure to send CONNECT
Before starting the ppp session we should make sure that the CONNECT
response has been sent on the wire.
2011-02-28 16:13:56 -06:00
Denis Kenzior 4da1a9318c gatserver: Exit garbage state on HDLC frame end 2011-02-28 16:13:56 -06:00
Denis Kenzior 6f8675d7fa gatppp: Try to detect no carrier conditions 2011-02-28 16:13:56 -06:00
Denis Kenzior ea56a71067 gatppp: Delay signaling ppp_down
Delay signaling of ppp_down until we exit the GAtHDLC read handler.
Otherwise exchanging the read handler on GAtIO might lead to funny
double consumption problems.
2011-02-28 16:13:56 -06:00
Denis Kenzior 0dc8e5e588 gathdlc: Try to detect no carrier conditions
Sometimes we receive the no carrier embedded in a stream following the
PPP packets.  This might be due to write scheduling on the remote side
or read scheduling locally.  Try not to consume the no carrier condition
and assume the previous hdlc frames will result in closing of the ppp
stack.
2011-02-28 16:13:56 -06:00
Denis Kenzior 703271e629 gatio: Remove stray empty line 2011-02-28 16:13:56 -06:00
Denis Kenzior 78eb4ee59c gatio: update comment 2011-02-28 16:13:56 -06:00
Denis Kenzior 09ca5aaef0 gathdlc: Unregister read / write handlers
When GAtHDLC is being unregistered make sure to unregister read / write
handlers so as not to crash.
2011-02-28 16:13:56 -06:00
Denis Kenzior 1cbe91090d gathdlc: drain the last hdlc frame processed
If we're being destroyed, we should drain the last HDLC frame
2011-02-28 16:13:56 -06:00
Denis Kenzior 2446d1aa43 gsmdial: register notification before resuming 2011-02-28 16:13:56 -06:00
Denis Kenzior 57f32ff899 ppp: Remove some g_prints 2011-02-28 16:13:56 -06:00
Denis Kenzior 75730bbaac ppp_cp: Replace some left over g_prints with DBG 2011-02-28 16:13:56 -06:00
Denis Kenzior e880aab120 gatppp: Replace some left-over g_prints with DBG 2011-02-28 16:13:55 -06:00
Denis Kenzior b6bc221bc8 gatppp: Send the final terminate ack
In the case where we're going down, but have a pending terminate ack,
delay signaling the upper layers until the ack has been put on the wire.
2011-02-28 16:13:55 -06:00
Denis Kenzior 802962adbc gatppp: Add a debug macro 2011-02-28 16:13:55 -06:00
Denis Kenzior 5ffe6f7beb gatio: Add write 'done' notifier
This allows external clients to get notified when GAtIO no longer has a
registered write watcher.  E.g. no more data is currently pending.
2011-02-28 16:13:55 -06:00
Denis Kenzior 3f2f11fe8f test-server: Remove root user check 2011-02-28 16:13:55 -06:00
Denis Kenzior 92404672fc gatserver: Update the internal command parsers
commit 61b30c025d changed the way the
command callbacks are being called (namely the contents of the GAtResult
object).  Most command callbacks were updated, but the internal ones
were forgotten.  This patch fixes this issue.
2011-02-28 16:13:51 -06:00
Denis Kenzior d841fc868a gatchat: Fix minor style issues 2011-02-25 10:55:08 -06:00
Frédéric Danis 8f8559edf6 gatchat: add g_at_result_iter_next_number_default API 2011-02-24 14:01:23 -06:00
Frédéric Dalleau 42224e2bbe gatserver: Add function to enable/disable echo 2011-02-23 09:31:07 -06:00
Olivier Guiter 4ae645d7e6 gatserver: Add various ATSx handlers 2011-02-22 09:45:59 -06:00
Guillaume Zajac 205d40db82 test-server: Fix crash when remote disconnects
If the remote side kills the connection when PPP is established, we
should not try to resume the AT server.
2011-02-17 11:30:47 -06:00
Denis Kenzior 36056ddb38 gsmdial: Fix minor style quirk 2011-02-16 15:45:39 -06:00
Gustavo F. Padovan c57c78062e gsmdial: add option for Bluetooth DUN dialing 2011-02-16 15:45:34 -06:00
Martin Xu 694589f51d PPP: Use default ACCM (0xffffffff) to trasmit
Using my Huawei EM770W modem, if set ACCM as 0x00000000, RXJ-
event breaks PPP link, after IP package transmit for a while.
Using default ACCM, the issue can be fixed.
I tested it at China Unicom networks.
2011-02-16 12:01:39 -06:00
Denis Kenzior 6eeaacc706 gatserver: Be more const correct 2011-02-16 00:23:44 -06:00
Denis Kenzior 55d54e377a test-server: Fix a few more occurrences 2011-02-15 16:05:02 -06:00
Denis Kenzior a6f910e27c gatserver: Change callback signature
Provide the originating GAtServer to the callback
2011-02-15 15:47:32 -06:00
Denis Kenzior a0cca0a970 gatserver: extend D with GSM/UMTS specifics 2011-02-15 15:47:32 -06:00
Denis Kenzior 5da299ad34 test-server: Behavior to match previous commit 2011-02-15 15:47:32 -06:00
Denis Kenzior 61b30c025d gatserver: Don't bother reporting command prefixes
The command line parser knows where the actual command line parameters
begin, so there's no need to make the callback skip the prefix and the
additional separator characters.
2011-02-15 15:47:32 -06:00
Martin Xu ad16e81aff PPP: Fix transmit ACCM and receive ACCM mixup
According to RFC1662 Section 7.1, ACCM Configuration Option is
used to inform the peer which control characters MUST remain
mapped when the peer sends them.
2011-02-14 14:22:32 -06:00
Olivier Guiter a1f5a5520a gatserver: Add ATS5 command feature 2011-02-14 09:51:30 -06:00
Denis Kenzior 2b9a14dd0c gatmux: Remove unused error variable 2011-02-08 16:48:52 -06:00
Carlos Pargada 1b10f55f5c gatchat: improve large file downlink data transfer
Fix large file downlink data transfer on IFX modem. Increase buffer size of
ring buffer to support close received Packets from the modem. Set highest
priority for write data on IO device
2011-01-20 12:59:40 +01:00
Marcel Holtmann d70011661c gatchat: The IO setup already ensures no encoding and no buffering 2011-01-20 10:56:21 +01:00
Marcel Holtmann 5d524cac73 gatchat: Small cleanup to make function look simpler 2011-01-20 10:55:31 +01:00
Marcel Holtmann 2f2460f5ae gatchat: Disable encoding for RawIP GIOChannel 2011-01-19 15:28:59 +01:00
Marcel Holtmann 2126700c3e gatchat: Fix setup of GIOChannel from multiplexer DLC 2011-01-19 12:10:10 +01:00
Denis Kenzior 45abba276b gatchat: Turn off buffering of GAtChat IO channels
After commit d83da35370 this was causing
the command queue to never run.
2011-01-18 12:16:19 -06:00
Olivier Guiter b931e77470 gatserver: ATS6 command handler added 2011-01-18 16:10:23 +01:00
Marcel Holtmann d83da35370 gatchat: Use g_io_channel_read_chars and g_io_channel_write_chars 2011-01-18 15:11:31 +01:00
Jeevaka Badrappan 2182336c8b gatchat: M15 coding styles fixes 2011-01-12 08:06:59 -08:00
Vinicius Costa Gomes 2702a2e349 gatchat: fix canceling in progress commands
As g_queue_peek_head() returns the node data field, we have to compare
it against the actual command, not against the pointer to the queue node.
2010-12-07 12:16:20 -06:00
Lucas De Marchi 521071a785 gatchat: explicitly compare pointers to NULL
This patch was generated by the following semantic patch
(http://coccinelle.lip6.fr/)

// <smpl>
@fix disable is_null,isnt_null1@
expression *E;
@@

- !E
+ E == NULL
// </smpl>
2010-11-29 12:05:29 -06:00
Denis Kenzior 99107c6c9d gatchat: remove write watcher on a disconnect
There's a small probability that we call chat_wakeup_writer
just before the channel disonnects.  When this happens the write
watcher still fires causing a potential crash.
2010-11-23 03:21:22 -06:00
Marcel Holtmann 8c0163bfc0 gatchat: A full support for TUN/TAP pipe and GAtRawIP 2010-10-26 16:57:35 +02:00
Marcel Holtmann a34a8840c9 gatchat: Remove unused write_watch variable of GAtHDLC 2010-10-26 15:16:35 +02:00
Marcel Holtmann 79e23355a4 gatchat: Fix missing return value for g_at_chat_set_slave 2010-10-21 20:34:13 +02:00
Marcel Holtmann 692cf6a6f6 gatchat: Add skeleton for GAtRawIP module
This adds the basic skeleton for a GAtRawIP support. It is only the
skeleton with its intended API. It has no raw IP support yet.
2010-10-21 19:36:18 +02:00
Marcel Holtmann 7492223f49 gatchat: Add support for slave chat instances
This adds support to assign a slave chat instance to an existing chat
instance. The slave chat is now additionally bound by the lifetime of
its master chat instance.

In case the master is cloned, the slave chat instance will also be
cloned as well.

With this it is possible to suspend the master while still have an
active slave for notifications or extra commands.
2010-10-21 18:41:38 +02:00
Marcel Holtmann d0cbae0092 ppp: Fix some coding style and memory leaks 2010-10-21 18:26:50 +02:00
Marcel Holtmann 0caafef6c9 gatchat: Add support for skipping AT+CMUX speed parameter 2010-10-19 18:50:52 +02:00
Denis Kenzior 1e1ddfcf1b gatchat: Fix calling unregister from callbacks
This fixes the issues with SIM hotswap on infineon
2010-10-14 09:42:42 -05:00