Commit Graph

485 Commits

Author SHA1 Message Date
Denis Kenzior 9d118c4666 ppp: Make iterators work all the time 2010-04-08 16:46:45 -05:00
Denis Kenzior c5590d114e ppp: Move some one-time setters to the proto 2010-04-08 10:40:12 -05:00
Denis Kenzior 4e01f9921e ppp: Add rca callback
When the other side acks our options, then let us apply these options
locally and start using them
2010-04-07 16:41:49 -05:00
Denis Kenzior 5f361d7de9 ppp: Add pppcp option iterators 2010-04-07 16:41:49 -05:00
Denis Kenzior 4a6a381a1d ppp: Remove lcp_protocol_reject
Use pppcp_send_reject_protocol
2010-04-07 16:41:49 -05:00
Denis Kenzior 892ee0a364 ppp: Move pppcp_timer_data private 2010-04-07 16:41:49 -05:00
Denis Kenzior fc26e6e409 ppp: Cleanup ipcp.c 2010-04-07 16:41:49 -05:00
Denis Kenzior 340013c6ef ppp: Hide away the magic_number in ppp_lcp.c 2010-04-07 16:41:40 -05:00
Denis Kenzior 1149210e16 ppp: Use auth->proto, not ppp->proto
Otherwise we move on to NCP stage prematurely
2010-04-06 23:11:26 -05:00
Denis Kenzior 97ff3d56f4 Fix: Allow setting of tx ACCM
Specification is explicit that ACCM defaults to ~0
2010-04-06 22:49:47 -05:00
Denis Kenzior 5e67ee2ff5 ppp: Remove OPTION_ERR, treat errors as reject 2010-04-06 22:49:47 -05:00
Denis Kenzior e0c8704705 ppp: Verify magic number is not zero 2010-04-06 22:49:47 -05:00
Denis Kenzior 130ac43255 ppp: Move up the look up table definition 2010-04-06 22:49:47 -05:00
Denis Kenzior f6d23e153e ppp: Implement receive ACCM 2010-04-06 22:49:44 -05:00
Denis Kenzior 8bff9b6541 Refactor: Make struct pppcp declaration private 2010-04-05 16:55:28 -05:00
Denis Kenzior 04cfa990e2 Refactor: add pppcp_set/get_magic_number 2010-04-05 16:55:07 -05:00
Denis Kenzior de83e99644 Refactor: add pppcp_set_prefix 2010-04-05 16:46:08 -05:00
Denis Kenzior 97b0aa590d Refactor: add pppcp_get_ppp 2010-04-05 16:44:00 -05:00
Denis Kenzior 7739af4a26 Refactor: add pppcp_set_option_strings 2010-04-05 16:42:17 -05:00
Denis Kenzior 7b447dd0e2 Refactor: Move valid code selection to ipcp/lcp
We already have a set_valid_codes function, let us use it
2010-04-05 16:16:14 -05:00
Denis Kenzior 4f5de3426e Refactor: Move packet_ops to a static look-up
No need to allocate space for this, as it is always the same for all
instances.
2010-04-05 16:14:39 -05:00
Denis Kenzior 48a012c810 Refactor: Make option_scan more type safe 2010-04-05 14:32:11 -05:00
Denis Kenzior 5e8a9c2941 Refactor: Make option_process more typesafe
option_process was declared with two gpointer arguments for the sole
reason of being used as a GFunc.  Casting to a GFunc or re-writing the
foreach as a loop is preferable.
2010-04-05 14:25:14 -05:00
Denis Kenzior 60d96505dc Refactor: Add pppcp_set_data & pppcp_get_data
Using these functions makes the code much cleaner than trying to pass
the priv pointer everywhere
2010-04-05 14:16:00 -05:00
Marcel Holtmann 331fcaea32 Make pppcp_code enum a private structure 2010-04-05 11:12:43 -07:00
Marcel Holtmann 12ffb2c772 Make pppcp_event_type enum a private structure 2010-04-05 11:05:08 -07:00
Denis Kenzior 64ffcf1cfa Refactor: Move to a transition state table
It is much more compact to re-implement the transition states as a table
as opposed to functions with switch/case statements.  The logic is made
much easier to follow and much of the code duplication is eliminated
2010-04-05 12:36:43 -05:00
Denis Kenzior d6517e63fe Refactor: Make the enum assignments explicit
They will be used for certain magic later on
2010-04-05 10:13:10 -05:00
Denis Kenzior e56710e1da Refactor: Move the state definition to ppp_cp.c 2010-04-05 10:12:39 -05:00
Kristen Carlson Accardi 9905245e79 ppp: implement Max-Failure counter
put a cap on the number of Configure-Nak packets we send.
2010-04-05 09:45:14 -05:00
Marcel Holtmann c2fb0a1630 Move PPP constants where they are used 2010-04-03 22:32:27 -07:00
Marcel Holtmann 5772ad5d8b Make GAtPPP fields really private 2010-04-03 22:25:09 -07:00
Marcel Holtmann 352ea97f8f Hide internals of ring buffer structure 2010-04-02 21:51:19 -07:00
Marcel Holtmann 09f7be82a9 Remove circular inclusion protection from ring buffer header 2010-04-02 20:34:25 -07:00
Marcel Holtmann 764501482e Fix some cases where g_try_new should be used 2010-04-02 19:20:53 -07:00
Marcel Holtmann 4733ddaffa Move frame NULL checks into the unstuffing function 2010-04-02 19:06:31 -07:00
Marcel Holtmann 9d8e55d489 Fix coding style with callback structures 2010-04-02 19:01:38 -07:00
Kristen Carlson Accardi 3c3077f847 ppp: implement net close 2010-04-02 19:03:56 -05:00
Denis Kenzior ebc6e3b9dc Refactor: Get rid of (now) pointless comments 2010-04-02 19:03:56 -05:00
Marcel Holtmann ffa99a1ebb Also the default case should have a break statement 2010-04-02 13:48:44 -07:00
Denis Kenzior 349d4d8c5d Remove the PPP option from gsmdial
Pointless since we should always connect using PPP
2010-04-02 15:13:25 -05:00
Denis Kenzior 2c466c8baf Refactor: Get rid of packet handler registrations
There are only about 4 protocols that the current ppp code handles and
it is doubtful that it will grow much more.  There's no point in having
an extensive packet handler registration framework.
2010-04-02 15:11:48 -05:00
Marcel Holtmann 3c39543cd6 Fix tabs vs. whitespace coding style violation 2010-04-02 13:34:10 -07:00
Marcel Holtmann 76200165bb Add more missing break statements 2010-04-02 13:33:35 -07:00
Kristen Carlson Accardi 0766a67832 ppp: fix missing breaks in switch statements 2010-04-02 13:19:14 -07:00
Marcel Holtmann 8097a1ed52 Add missing break or fall through comments to switch statements 2010-04-02 12:40:45 -07:00
Marcel Holtmann 0e8b2815a8 Always reset option_rval for every option 2010-04-02 11:43:20 -07:00
Marcel Holtmann 843d3bd2a3 Add missing arpa/inet.h includes 2010-04-02 11:42:42 -07:00
Kristen Carlson Accardi 74e1abd353 ppp: use queue to transmit
Since we are using non buffered I/O, use a queue to transmit when buffer
space is available.
2010-04-02 13:05:47 -05:00
Denis Kenzior 1ed6966cb4 Split out ipcp protocol into ppp_ipcp.c 2010-04-02 12:53:45 -05:00
Kristen Carlson Accardi c2a589e732 ppp: fix event generation on close
Prevents too early transition to PPP_DEAD
2010-04-02 12:53:45 -05:00
Marcel Holtmann edba0296c5 Remove PPP CP event_queue handling and process events directly 2010-04-01 21:44:07 -07:00
Denis Kenzior a182034336 Fix: Stop infinite attempts to register
Sometimes if the modem firmware is particularly nutty we will see
frequent cell-reselections at startup, resulting in us attempting to
register multiple times.  Try to stop this behavior by keeping track of
what state we're in and hoping the hardware is at least somewhat sane.
2010-04-01 22:32:58 -05:00
Marcel Holtmann a845dc8da7 Remove obfuscation for some of the event handling 2010-04-01 20:40:39 -07:00
Marcel Holtmann 6607b5985e Move functions from ppp.c into gatppp.c 2010-04-01 20:33:03 -07:00
Marcel Holtmann 7d6649680f Remove PPP event_queue handling and process events directly 2010-04-01 20:26:24 -07:00
Marcel Holtmann cdc1e3c31b Check FCS while unstuffing the byte stream 2010-04-01 20:18:49 -07:00
Marcel Holtmann dabac98cb4 Remove PPP recv_queue handling and process frames directly 2010-04-01 20:11:43 -07:00
Marcel Holtmann cb791ceb78 Remove usage of AT+CGACT for now 2010-04-01 20:06:31 -07:00
Marcel Holtmann 847e7c7f14 Fix order of PPP frame recording and processing 2010-04-01 14:31:19 -07:00
Marcel Holtmann 544c02da49 Add support for recording PPP sessions in pppdump format 2010-04-01 13:47:25 -07:00
Marcel Holtmann ef82241deb Implement g_at_ppp_set_debug support 2010-04-01 13:11:11 -07:00
Marcel Holtmann dc55d14e9c Add some debugging information to PPP authentication handling 2010-04-01 09:56:18 -07:00
Marcel Holtmann 4f99859d37 Remove useless pppcp_protocol_data structure 2010-04-01 09:13:44 -07:00
Marcel Holtmann 5f0d8493e7 Remove forward declarations in PPP network handling 2010-04-01 00:17:10 -07:00
Marcel Holtmann eb9e7872a9 Add debugging for PPP LCP and IPCP options 2010-04-01 00:07:40 -07:00
Marcel Holtmann f081de4ea6 Use ppp%d as PPP interface name instead of tun%d 2010-03-31 22:29:43 -07:00
Denis Kenzior 988b24adb0 Fix: Introduce PPP data state
Some modems send PPP data introspersed along with the CONNECT final
response.  Fixup the parser so we can still detect the final response.
2010-03-31 18:48:52 -05:00
Denis Kenzior ee8084c0d0 Fix: Update gsm dial to the new GAtPPP API 2010-03-31 18:48:30 -05:00
Denis Kenzior cc1bb46ffa Refactor: Use GAtDisconnectFunc for ppp disconnect
The ppp argument to the current disconnect callback is useless as the
ppp structure is most likely stored in user data anyway.
2010-03-31 18:47:30 -05:00
Denis Kenzior d6093b819f Refactor: GAtPPP connect callback
The connect callback was not giving enough information and the
information it was providing was not in a convenient form.

- Provide the ppp interface name (e.g. tun0)
- Provide ip, dns1 & dns2 as strings
- Do not send the ppp structure in the callback, it is most likely
  present in the user data anyway
2010-03-31 18:45:17 -05:00
Denis Kenzior 0a98e1aef3 Style: Whitespace damage due to spaces, not tabs
Also use proper indentation style
2010-03-31 14:11:41 -05:00
Andrzej Zaborowski 27d0bc6ccf Fix ampersand commands check
Also remove a trailing tab.
2010-03-31 13:16:13 -05:00
Denis Kenzior a3eeb88511 Style: remove unneeded blank line 2010-03-31 13:04:57 -05:00
Marcel Holtmann f87537644b Fix whitespace damage in PPP implementation 2010-03-31 10:30:54 -07:00
Zhenhua Zhang 82687aa58b Add test implementation for CPBS 2010-03-31 08:39:47 -05:00
Zhenhua Zhang ba35179687 Add test implementation to support SMS 2010-03-31 08:39:43 -05:00
Denis Kenzior b421d0756b Refactor: Simplify V250 setting command functions 2010-03-31 08:38:01 -05:00
Denis Kenzior 2ec19b67a2 Refactor: Simplify gatserver s-register functions 2010-03-31 08:22:40 -05:00
Zhenhua Zhang 86b0fa3194 Fix echo command back even if don't process it 2010-03-31 08:12:55 -05:00
Zhenhua Zhang 5819927a38 Add Repeat last command support 2010-03-31 08:10:33 -05:00
Zhenhua Zhang 1390a63933 Add implementation for ATE and other basic command 2010-03-31 08:10:27 -05:00
Zhenhua Zhang d7eb09cc05 Add implementation for S3, S4, S5 command 2010-03-31 08:10:23 -05:00
Denis Kenzior e63840ba11 Fix: Make sure we still increment read_count 2010-03-30 22:06:12 -05:00
Zhenhua Zhang c288921bab Fix ignore incoming bytes during parsing
Server processes one command line at one time, so ignore the rest
incoming bytes during the command parsing.
2010-03-30 21:59:34 -05:00
Denis Kenzior 1f5e785901 Update test-server to the new API 2010-03-30 20:29:25 -05:00
Denis Kenzior 250c0c1ef9 Simplify the send_info API 2010-03-30 20:29:10 -05:00
Denis Kenzior d7e784d517 Fix: Treat garbage as echo 2010-03-30 19:16:47 -05:00
Denis Kenzior 46ebde6965 Fix: Properly handle async final responses 2010-03-30 19:15:55 -05:00
Denis Kenzior 94eeab3688 Fix: We need to preserve the original line 2010-03-30 17:12:43 -05:00
Denis Kenzior 437c2d8ccf Fix: Use VERSION define to generate CGMR response 2010-03-30 16:40:44 -05:00
Denis Kenzior 40ca3cb3f5 Fix: Record last received command 2010-03-30 15:25:50 -05:00
Denis Kenzior a2c4c8e7b6 Fix: Send an ERROR on A/ 2010-03-30 15:18:34 -05:00
Denis Kenzior a77037c099 Add test implementation for CFUN 2010-03-30 15:14:42 -05:00
Denis Kenzior 6b33c5c4e6 Fix: Make sure g_print is followed by a newline 2010-03-30 14:38:06 -05:00
Denis Kenzior 45e6f5cb39 Add initial implementation of cgmr/cgmi/cgmm/cgsn 2010-03-30 14:37:42 -05:00
Denis Kenzior 11a8ccad0a Fix: SO_REUSEADDR should be set before bind 2010-03-30 14:37:20 -05:00
Denis Kenzior 0448392a91 Refactor: Simplify extended command parsing logic 2010-03-30 14:36:02 -05:00
Denis Kenzior 882b62b640 Refactor: Add a single-line response function 2010-03-30 14:35:29 -05:00
Zhenhua Zhang cdc13c40b6 Add API stubs for unsolicited / final responses 2010-03-30 12:37:29 -05:00
Denis Kenzior 58e3d14651 Add stubs for test server commands 2010-03-30 12:23:11 -05:00
Denis Kenzior d171a91ab3 Refactor: tty creation 2010-03-30 12:15:11 -05:00
Marcel Holtmann cb26fc4a03 Fix use of g_checksum_get_digest() inout argument 2010-03-29 18:13:01 -07:00
Marcel Holtmann 6af6567004 Enable PPP session suport for AT+CGDATA command 2010-03-28 09:15:02 -07:00
Kristen Carlson Accardi ee294d35b8 ppp: send PPP_FAIL when authentication fails 2010-03-26 23:00:28 -05:00
Marcel Holtmann 834f3af1dc Fix some comments in dialer example 2010-03-26 19:41:06 -07:00
Marcel Holtmann fb043af678 Allow empty secrets for CHAP authentication 2010-03-26 19:35:54 -07:00
Marcel Holtmann 95bceddba4 Add support for NBNS server options 2010-03-26 19:25:56 -07:00
Kristen Carlson Accardi c31bee9fff ppp: handle Config-Reject
if our peer sends us a Config-Reject packet, we must delete that
config item and not request that it be negotiated when we send our
next Config-Request.
2010-03-26 19:19:46 -07:00
Kristen Carlson Accardi 8777e778f3 ppp: use common code to get options from pppcp packet data 2010-03-26 19:19:46 -07:00
Kristen Carlson Accardi 5260379d98 ppp: send Protocol-Reject
change ppp_decode to store the length of the decoded frame, so that
if we have a packet with a protocol we don't understand, we can send
Protocol-Reject packets.  Modify ppp_cp code to add support for sending
Protocol-Reject packet.
2010-03-26 19:19:46 -07:00
Kristen Carlson Accardi 3772a6401c ppp: comment fix
Put some additional clarification in comment for receiving Code-Reject
and Protocol-Reject packets.
2010-03-26 19:19:46 -07:00
Kristen Carlson Accardi 909ab154a4 ppp: fix segfault in pppcp_send_code_reject()
fix memory corruption caused by misplaced paren when memcpying
rejected packet data into Code-Reject packet.
2010-03-26 19:19:46 -07:00
Kristen Carlson Accardi af63a2b8ee ppp: change debug output to include control protocol prefix 2010-03-25 12:38:57 -07:00
Marcel Holtmann 1e33e5339d Fix some small copy-and-paste typos 2010-03-25 08:20:19 -07:00
Marcel Holtmann c84cb16edd Check network status to handle auto-registration 2010-03-25 07:33:41 -07:00
Marcel Holtmann ada2c7f986 Check modem mode before tyring to change it 2010-03-25 07:20:03 -07:00
Kristen Carlson Accardi 5b656cdf34 gsmdial: shutdown ppp link if we have one
If we have created a ppp link, shut it down when the signal handler
is called.
2010-03-25 06:50:17 -07:00
Kristen Carlson Accardi f720a27a1f separate memory cleanup from PPP shutdown
don't free memory at PPP shutdown, because we need to be able to
send terminate traffic.  Free memory when we have reached the
PPP_DEAD phase instead.
2010-03-25 06:50:10 -07:00
Kristen Carlson Accardi 06ae2b2c98 add tracing for PPP terminate path
Insert some calls to pppcp_trace() for future debugging needs.
2010-03-25 06:50:10 -07:00
Kristen Carlson Accardi bde388e0d5 remove unneeded debug statement
cleanup old debug print statement
2010-03-25 06:50:10 -07:00
Kristen Carlson Accardi 060a195432 use separate timers for PPP config and terminate
Prevent conflicts between config timer information and terminate timer
information by providing a new data structure which keeps timer information
for config and terminate requests separate.
2010-03-24 23:04:45 -05:00
Kristen Carlson Accardi fb40115bf2 switch to g_timeout_add_seconds()
we don't care that much about the exactness of our timer, so use
the more power efficient call.
2010-03-24 23:04:42 -05:00
Denis Kenzior 1905d4deda Fix: Make CONNECT <baud> responses work 2010-03-24 19:42:16 -05:00
Denis Kenzior 9ed01bfecd Refactor: Simplify parsing logic
It isn't actually necessary to check the basic command prefixes, if the
extended prefix doesn't match we try to parse it like a basic command.
That one does the same exact check anyway.  If that fails, then this is
not a recognized command line anyway.
2010-03-24 19:41:19 -05:00
Denis Kenzior a9c089ab34 Refactor basic command parsing
Make more bullet proof and efficient
2010-03-24 19:37:18 -05:00
Denis Kenzior 1f99435a42 Fix: Use SO_REUSEADDR in test_server 2010-03-24 19:34:33 -05:00
Denis Kenzior 644d5922b2 Style: foo[0] is preferable to *foo 2010-03-24 16:28:42 -05:00
Denis Kenzior 005ecd5dd9 Fix: Be more paranoid in basic command parsing 2010-03-24 16:28:19 -05:00
Zhenhua Zhang 7c8fa919fa Add basic command parsing 2010-03-24 16:02:10 -05:00
Denis Kenzior c1c3b5502e Style: No point to write a function to wrap g_free
Using casting magic works well enough, and more consistent with the rest
of the library.
2010-03-24 15:24:06 -05:00
Kristen Carlson Accardi efb95941be fix memory leak in ppp_auth
Free packet after calling ppp_transmit()
2010-03-24 13:21:32 -07:00
Kristen Carlson Accardi 7dbd19e441 fix memory leaks after ppp_transmit
Free packets in ppp_cp after calling ppp_transmit()
2010-03-24 13:21:31 -07:00
Kristen Carlson Accardi 954e114507 fix memory leaks in option handling
free the data as well as the link when deleting options lists.
2010-03-24 13:21:31 -07:00
Marcel Holtmann b4267dc624 Remove pointless optimization attempt with g_list_length() 2010-03-22 21:43:46 -07:00
Marcel Holtmann 39476a2b54 Use password instead of passwd as variable name 2010-03-22 20:13:55 -07:00
Marcel Holtmann 6cbfe5fa1e The g_free() function checks for NULL pointers
And so does even the free() function from glibc ;)
2010-03-22 20:10:17 -07:00
Marcel Holtmann e396b7d5af Unnest some more functions in PPP CP implementation 2010-03-22 20:07:13 -07:00
Marcel Holtmann 91b742730a Some additional whitespace cleanup for PPP code 2010-03-22 20:01:28 -07:00
Marcel Holtmann 8667c8694d Fix the broken PPP CP debug trace function 2010-03-22 19:56:53 -07:00
Marcel Holtmann a09d38643b Remove some heavy nesting that is not needed at all 2010-03-22 19:32:47 -07:00
Marcel Holtmann c59a93e6fb Fix another pointer casting issue on 32-bit systems 2010-03-22 19:29:34 -07:00
Marcel Holtmann abbd1640f4 Fix pointer casting with uint16 protocol variable 2010-03-22 19:13:22 -07:00
Kristen Carlson Accardi 8cae71ef5c Add PPP option to gsmdial
Implement new options for gsmdial to use PPP and set the user name and
password for authentication if needed.
2010-03-22 17:28:23 -07:00
Kristen Carlson Accardi a84fc350b4 IP support for PPP
Adds IPCP support, and creates a TUN interface for sending/receiving IP
packets.
2010-03-22 17:28:23 -07:00
Kristen Carlson Accardi 6cb22fe096 CHAP with MD5 authentication support
Authentication support with CHAP and MD5
2010-03-22 17:28:23 -07:00
Kristen Carlson Accardi cd5ddc2bee PPP LCP support
Implement LCP support for the PPP protocol.
2010-03-22 17:28:23 -07:00
Kristen Carlson Accardi 31e99d9d78 Generic PPP control protocol support
Implement a generic protocol that can be shared by both the LCP and the
NCP implementation.
2010-03-22 17:28:23 -07:00
Kristen Carlson Accardi d38443482f Basic PPP protocol support
This patch implements the basic PPP protocol.  LCP, NCP etc. are handled in
a different patch.
2010-03-22 17:28:23 -07:00
Denis Kenzior a8a720d983 Fix: extract line should use S3, not hardcode CR 2010-03-22 12:59:04 -05:00
Denis Kenzior 2583ff626b Refactor: Command line extraction 2010-03-22 12:59:04 -05:00
Denis Kenzior c78805a91b Refactor: Extended command parsing
Make the code more bullet proof and easier to follow
2010-03-22 12:59:04 -05:00
Zhenhua Zhang f9991f929a Add G_AT_SERVER_RESULT_EXT_ERROR 2010-03-22 12:59:04 -05:00
Zhenhua Zhang 7633a54ffd Add g_at_server_register and unregister callback 2010-03-22 12:59:04 -05:00
Zhenhua Zhang 60cf097ffd Add notify at command callback 2010-03-22 12:59:04 -05:00
Zhenhua Zhang 8850d3dc9e Add server at command data structure 2010-03-22 12:59:04 -05:00
Zhenhua Zhang c7828602d4 Add extended command parsing 2010-03-22 12:59:04 -05:00
Zhenhua Zhang 3d4af3eee6 Add framework of server parser
a. The parser fetch and parse one command per loop. The prefix is
the command prefix without parameter. For example, the prefix of
"AT+CLIP=1" is "+CLIP".

b. Search registered notification node in command_list. Invoke the
callback if found.

c. Termiate the execution if the result is an error. Otherwise,
parse next command.
2010-03-22 12:59:04 -05:00
Denis Kenzior 12d97c18a0 Add support for IP based connections to gsmdial 2010-03-18 16:05:47 -05:00
Denis Kenzior 5d8bbb9e5f Fix: Echo everything as soon as received 2010-03-18 14:47:34 -05:00
Zhenhua Zhang 73d92263a6 Refactor add is_basic_command_prefix function 2010-03-18 13:25:56 -05:00
Zhenhua Zhang c57be559d6 Rename parse_v250_settings
To parse_basic_command
2010-03-18 13:24:56 -05:00
Zhenhua Zhang 05209cb701 Rename parse_at_command
To parse_extended_command
2010-03-18 13:24:36 -05:00
Zhenhua Zhang 171a4117fc Rename is_at_command_prefix
To is_extended_command_prefix
2010-03-18 13:24:24 -05:00
Zhenhua Zhang 074c7ff920 Rename g_at_server_send_result
To g_at_server_send_final
2010-03-18 13:24:06 -05:00
Denis Kenzior 8d9f7fda2e Fix: Use g_try_malloc in gatutil 2010-03-16 17:22:56 -05:00
Denis Kenzior 4cbb33fcbd Fix: Use the proper enum type 2010-03-03 13:07:24 -06:00
Zhenhua Zhang 72851607e1 Add command echo back if ATE=1 2010-03-03 13:01:34 -06:00
Denis Kenzior 7be80ef131 Fix: Simplify write-again logic 2010-02-26 16:17:57 -06:00
Denis Kenzior 988fed5951 Fix: Don't allocate buffers if we don't need to 2010-02-26 16:16:46 -06:00
Zhenhua Zhang c6f4d051b2 Add write server response into non-blocking IO
Write server response into non-blocking GIOChannel when we have
G_IO_OUT signal.
2010-02-26 16:10:19 -06:00
Zhenhua Zhang 534898f164 Add write buffer queue for non-blocking write
The head of the queue is the data to be written, the tail is the
free buffer to cache data into.

If the tail of queue is full, allocate a new free buffer and
append it at the tail.
2010-02-26 16:07:33 -06:00
Zhenhua Zhang e96293d5bb Add define for read and write buffer size 2010-02-26 16:04:52 -06:00
Zhenhua Zhang 79b480166c Do not trigger user disconnect at g_at_shutdown
Similar to gatchat, introduce read_watcher_destroy_notify and do
not trigger user disconnect at g_at_shutdown. Delay destroy of
gatserver until read_watcher is destroyed.
2010-02-26 16:04:36 -06:00
Zhenhua Zhang c4073fca00 Rename server_io to channel
To make it consistent with GAtChat.
2010-02-10 16:41:31 -06:00
Zhenhua Zhang c5f962cb18 Replace sprintf with snprintf 2010-02-10 16:41:31 -06:00
Zhenhua Zhang d80bba564e Rename buf to read_buf in GAtServer
Because we may introduce write_buf for sever response buffer.
2010-02-10 16:41:31 -06:00
Denis Kenzior 8d8f5d90a0 Fix: Dead Assignment 2010-02-04 00:00:00 -06:00
Gustavo F. Padovan ed4cf758b7 Remove dead assignments at gatchat 2010-02-03 00:12:49 -06:00
Zhenhua Zhang 2a58101807 Fix change state immediately when meet the slash
According to V.250 spec section 5.2.4 Repeating a command line, if
the prefix "A/" or "a/" is received, we should execute the last
command immediately. No need to meet \r.
2010-02-02 11:31:23 -06:00
Denis Kenzior a4b681f02f Fix: Remove unused label 2010-02-01 18:02:40 -06:00
Denis Kenzior 32e329e7d3 Fix: Don't leak memory 2010-02-01 17:59:29 -06:00
Denis Kenzior 321bb02ee3 Fix: Skip whitespace in AT command line 2010-02-01 17:59:29 -06:00
Denis Kenzior 57d62a0b42 Refactor: Use more flexible parser framework 2010-02-01 17:59:29 -06:00
Zhenhua Zhang de154c6897 Add test case for GAtServer
To implement PTY, TCP, Unix socket example to create GAtServer
instance.
2010-02-01 17:59:28 -06:00
Denis Kenzior 0767f1dbd8 Fix: Check if the command is still pending 2010-02-01 17:59:28 -06:00
Denis Kenzior e6ccc74504 Style: No need for the extra line 2010-02-01 17:59:28 -06:00
Denis Kenzior 263044721e Fix: Don't set variables to NULL/0
These were already set to 0 by g_try_new0
2010-02-01 17:59:28 -06:00
Denis Kenzior b6961b0d68 Refactor: Support max_read attempts like GAtChat 2010-02-01 17:59:28 -06:00
Denis Kenzior 1514997ff1 Fix: Use a function instead of a table 2010-02-01 17:59:28 -06:00
Denis Kenzior 49e0ff2aa6 Refactor: Make enums follow 27.007 Annex B 2010-02-01 17:59:28 -06:00
Denis Kenzior cd1845da6b Fix: Make compile 2010-02-01 17:59:28 -06:00
Zhenhua Zhang df7b1b30dc Add GAtServer basic parsing support
It's the basic skeleton of GAtServer, including new/shutdown, ref/
unref, received_data/parse_buffer and set_discuss/set_debug.

GAtServer is to emulate the server side of AT conversation. It
complies with V.250 and 27.007 spec to accept AT command like
ATV1, ATE0 and extended command like AT+CLCC. Upper layer could
create customize server to expose TTY, tcp or unix socket to
client side application.
2010-02-01 17:59:27 -06:00
Marcel Holtmann 4f3b99e189 Use 3 read attempts when in non-blocking mode 2010-01-28 22:24:04 +01:00
Marcel Holtmann c9a37e4a9a Add new constructor for fully blocking operation 2010-01-28 22:05:44 +01:00
Denis Kenzior fb918d39ba Fix: Take care of uninitialized variable condition
In some (impossible) circumstances rbytes and err might be used
uninitialized.  Here we make a check that a read was actually attempted
before checking those variables.
2010-01-28 14:38:59 -06:00
Marcel Holtmann 839988cfa3 Limit the number of continues read attempts 2010-01-28 12:41:31 +01:00
Denis Kenzior aebda1ac94 Refactor: Reorder argument order
The order of arguments was a bit confusing, reorder them to make more
logical sense.
2010-01-20 14:21:22 -06:00
Zhenhua Zhang 7145edd3a4 Add gatutil.c to share common APIs with GAtServer
Add gatutil.c/h gat.h and move shared typedef and APIs into it.
So that they can be shared by GAtServer and GAtChat.
2010-01-20 14:13:57 -06:00
Denis Kenzior e8d18946b9 Fix: One more fix for disconnect detection
In situations where lots of data is generated by the remote side (e.g.
phonebook is being read) we can get our ring buffer filled up.  In this
case setting rbytes to zero first and then breaking out of the loop
leads to an erroneous disconnect detection.  The fix is to move setting
of rbytes after we know we still have some space.
2010-01-15 10:24:01 -06:00
Denis Kenzior aec5b8a44f Fix: Make remote disconnect detection work 2010-01-14 10:26:12 -06:00
Denis Kenzior 687c84a1ff Style: Various issues 2010-01-12 17:54:37 -06:00
Marcel Holtmann 144080e749 Update copyright information 2010-01-01 17:00:10 -08:00
Marcel Holtmann 2876e1aa64 Unifiy all GAtChat error labels 2009-12-24 07:06:23 -08:00
Denis Kenzior 76e2eb1afc Add legacy mode to gsmdial
Use ATD*99 variety for modems that don't support CGDATA.
2009-12-10 18:14:11 -06:00
Denis Kenzior a41e856cfd Fix: wrong abbreviation for option 2009-12-10 17:49:33 -06:00
Denis Kenzior 7a456aaf7a Add offmode to gsmdial 2009-12-10 17:43:57 -06:00
Denis Kenzior 62d8cf7aa3 Fix: Fix gsmdial to handle MD300
MD300 never sends a CGREG indication, we must query it after CGATT
2009-12-10 17:41:42 -06:00
Denis Kenzior 51e090a283 Add the beginnings of a GSM GPRS dialing app 2009-12-10 17:11:27 -06:00
Denis Kenzior 1d98c226b5 Add g_at_chat_unregister_all function 2009-12-02 19:10:08 -06:00
Denis Kenzior cf98ebb653 Add: g_at_chat_cancel_all function
This will cancel all commands currently queued.
2009-12-02 19:10:04 -06:00
Denis Kenzior 9b5b1057e4 Fix: Sometimes it is possible to cancel first cmd
Commands on the head of the queue can be canceled if none of its bytes
have actually been written to the modem.  This is tracked by
cmd_bytes_written variable.
2009-12-02 15:27:26 -06:00
Denis Kenzior 0d022d3057 Fix: Don't allow cancelation of command id 0 2009-12-02 15:26:56 -06:00
Denis Kenzior 48a61b6d06 Fix: Retry the wakeup command until the modem OKs
The calypso is weird where it doesn't actually wakeup on the first try,
we need to bang its head a few times until it responds
2009-11-26 07:44:25 -06:00
Yang Gu d9acd12fae Framework to support non-standard terminator 2009-11-24 18:06:20 +01:00
Denis Kenzior d6f5ac3767 Fix: Make sure we don't gobble up unsolicited 2009-11-23 19:56:24 -06:00
Andrzej Zaborowski 19187a0ee7 Properly skip over quoted values
Otherwise a left paren in a string can bring an obscure segfault.
2009-11-10 12:59:30 -06:00
Denis Kenzior f83bb9d7b7 Cleanup previous patch and update docs 2009-10-28 16:38:55 -05:00
Ryan Raasch c630300c99 Refactor: Capitalize g_at_tty option names 2009-10-28 16:36:33 -05:00
Zhenhua Zhang 525ca751bd Handle right bracket in next_unquoted_string 2009-10-23 13:39:41 -05:00
Ryan Raasch d1db227d20 Enable / Disable CREAD functionality in gattty 2009-10-21 19:06:43 -05:00
Denis Kenzior feda620c94 Fix: Stop crashing when unrefing chat in callback 2009-10-16 17:46:28 -05:00
Denis Kenzior 43e5152934 Fix: Do not leak chat references in case of error 2009-10-15 16:15:17 -05:00
Denis Kenzior 20dc22a6c4 Fix: Cleanup debug formats 2009-10-15 16:15:17 -05:00
Denis Kenzior d4d1617684 Fix: Do not send shutdown more than once 2009-10-15 16:15:17 -05:00
Denis Kenzior a8af38d209 Fix: Be more paranoid in checking DLC validity 2009-10-15 16:15:17 -05:00
Denis Kenzior 112d07e14e Refactor: Add driver model to GAtMux
GAtMux can now be made to work with multiple multiplexing protocols.
Currently on the 27.010 (07.10) Advanced and Basic modes are supported.
However, further protocol support can be added by providing the
necessary driver functions for GAtMux
2009-10-15 16:15:17 -05:00
Denis Kenzior bcf962c79c Forgot to add void* to get_data 2009-10-15 16:15:17 -05:00
Denis Kenzior 6bfd76123b Forgot to add driverdata functions 2009-10-15 16:15:17 -05:00
Denis Kenzior a4a54f6625 Refactor: Enable multiplexer drivers for GAtMux 2009-10-15 16:15:17 -05:00
Denis Kenzior 1575f2dcd1 Fix: Notify sources upon shutdown 2009-10-15 16:15:16 -05:00
Denis Kenzior 5826fc9c15 Add ability to open/close multiple DLCs 2009-10-15 16:15:16 -05:00
Denis Kenzior 4734ebcb46 Refactor: Add convenience method to start 0710 MUX
Use an existing GAtChat that has been setup appropriately to conver the
channel into a MUX
2009-10-15 16:15:16 -05:00
Denis Kenzior 9aa2182261 Add ability to retrieve the atchat IOChannel 2009-10-15 16:15:16 -05:00
Denis Kenzior 556186eb35 Remove more unused code 2009-10-15 16:15:16 -05:00
Denis Kenzior 4c5cf38ddb Fix: Use DISC on dlc 0 instead of CLD
Some MUX implementations do not seem to support Multiplexer Closedown
(CLD) command.  The standard specifies that sending DISC on DLC 0 should
act exactly the same as CLD.
2009-10-08 12:53:25 -05:00
Denis Kenzior e2415161de Fix: Make compile on some obscure platforms 2009-10-08 12:53:25 -05:00
Denis Kenzior f9db94cd73 Cleanup: Remove more dead code 2009-10-08 12:53:25 -05:00
Denis Kenzior efadf058c3 Cleanup: Get rid of unused member
ctx->server is never set to anything but 0.  This was intended to handle
server side functionality of the GSM 07.10 multiplexer, but never fully
implemented.  Since GAtMux is only really meant for the client side, we
can safely remove this dead code.
2009-10-08 12:53:25 -05:00
Denis Kenzior 273c8b06a0 Get rid of from_tty variant, use gattty instead 2009-10-08 12:53:25 -05:00
Denis Kenzior 7e82686e70 Fix: Make next_hexstring handle optional quotes
Ericsson MBM devices send CRSM information as hex strings, yet enclose
them in quotes which is not according to the standard.
2009-10-02 18:25:56 -05:00
Marcel Holtmann cfbc902287 Add support for switching to a different GAtSyntax at runtime 2009-10-02 12:29:02 +02:00
Marcel Holtmann 729056cb2e Fix missing include for close() function call 2009-10-02 03:25:35 +02:00
Denis Kenzior 6a78e402d3 Replace g_at_chat_new_from_tty with g_at_tty_open 2009-10-01 16:43:19 -05:00
Marcel Holtmann a37f0dbad6 Add skeleton for gsmdial test application 2009-09-24 17:39:09 -07:00
Zhenhua Zhang 78244d6190 Unref GIOChannel in g_at_chat_new_from_tty 2009-09-24 10:01:07 -07:00
Marcel Holtmann c4a5f3a483 Fix trailing whitespace 2009-09-18 13:56:03 -07:00
Denis Kenzior a1e67482bb Simplify cleanup logic 2009-09-18 13:33:22 -05:00
Marcel Holtmann 47b1d09b6e Hook up GAtMux with GSM 07.10 implementation 2009-09-08 09:04:11 +02:00
Marcel Holtmann 8de68799a5 Remove AT command and re-init support from GSM 07.10 2009-09-08 08:51:46 +02:00