Commit Graph

358 Commits (ced234607ebb7407528fd96b51cf1bb15f5da785)

Author SHA1 Message Date
Teppo Järvelin 779fb6defd Cellular: AT_CellularContext disconnect in non-blocking mode
Disconnect was supporting only blocking mode.
2019-05-27 12:23:29 +03:00
Martin Kojtal a434583b6e
Merge pull request #10442 from trowbridgec/patch-1
Cellular: Make AT_CellularContext::get_context() virtual
2019-05-24 12:38:35 +01:00
Hasnain Virk bded22ee98 Prevent assigning socket id until opened at modem
Local modem ip stacks vary in their implementations and the way of
working. Some of the modems may not open a socket until an IP context is
assigned. That's why we came up with a container that stores addresses of
any CellularSocket instances created on-demand by the application. When
the application requests opening a socket we store allocate and store the
premitive in the container however actual socket creation at the modem
may happen at a later stage, e.g., a call to send_to() may result in
actual opening of a socket.

That's why we must not assign socket ids in the CellularSocket object
during construction. It must happen when actual socket is opened and is
alive.

Another implication of the previous model is that we may have multiple
sockets created in our container but the actual socket ids are not
assigned yet, so we cannot directly map the socket id to the container
indices which has been happening previously.

To solve this issue we have promoted the AT_CellularStac::find_socket_index(...) method
to be a protected method rather than being private so that the children
can use the method to determine if the given index in the container
corrsponds to the assigned socket id or not.

We have given up on the socket->created flag and the whole decision
making to actually open a socket on the modem happens on the basis of a
valid socket being assigned or not.
2019-05-22 23:43:41 -07:00
Martin Kojtal 26aa16ff39
Merge pull request #10557 from jarvte/fix_cellularcontext_init
Cellular: Initialize CellularContext member variables in correct class
2019-05-15 08:48:54 +01:00
Martin Kojtal e7b8ccf0ae
Merge pull request #10511 from AriParkkila/cell-statemachine-timeout
Cellular: Fix setting of statemachine timeout
2019-05-13 06:41:29 +01:00
Teppo Järvelin e4ee870b2e Cellular: Initialize CellularContext member variables in correct class
CellularContext member variables were initialized in inheriting class.
Now in base class where they should be initialized so that every inheriting
class don't have to init them.
2019-05-10 11:43:48 +03:00
Ari Parkkila 830b4234e9 Cellular: Fix setting of statemachine timeout 2019-05-09 04:42:30 -07:00
Martin Kojtal 13880dcd1b
Merge pull request #10465 from jarvte/fix_imsi_length
Cellular: fix calls to ATHandler::read_string(...) give correct size
2019-05-03 08:38:40 +01:00
Martin Kojtal 094f648123
Merge pull request #10488 from kivaisan/add_cellularproperty_description
Cellular: Add description for CellularProperty
2019-04-30 09:40:08 +01:00
Martin Kojtal 1ce073a9c2
Merge pull request #10402 from jarvte/disconnect_per_context
Cellular: send disconnect to correct ctx
2019-04-29 13:17:59 +01:00
Kimmo Vaisanen 38aa56efa8 Cellular: Add description for CellularProperty 2019-04-26 12:37:52 +03:00
Teppo Järvelin 1abf600d03 Cellular: fix calls to ATHandler::read_string(...) give correct size
ATHandler::read_string(...) buffer size param was changed a long time ago
to include also NULL. Some calls still gave wrong size after this change.
2019-04-25 11:20:05 +03:00
Hasnain Virk 4eaffb4b03 Minor doc update
Socket ID is usually spitted out by the modem, however there are cases
when the modem is actully taken in as an input argument, e.g., in the
case of QUECTEL M26 modem. This minor knit clarifies that the
CellularSocket::id can be an input argument.
2019-04-23 12:36:29 +03:00
Chris Trowbridge a457b80e81
More access modifier changes 2019-04-18 15:14:08 -04:00
Chris Trowbridge b59228988c
Make AT_CellularContext::get_context() virtual 2019-04-18 15:02:41 -04:00
Teppo Järvelin 9d67a8b61c Cellular: send disconnect to correct ctx
Disconnect was sent to all CellularContext classes even it concerned
one specific context. Some disconnect events are still sent to all
context classes. These event are coming from network and ment for all
context classes or event did not specify cid.
2019-04-17 13:53:40 +03:00
Martin Kojtal b2b2fcea7b
Merge pull request #10375 from AriParkkila/cell-context-cleanup
Cellular: Fix to delete PDP context on disconnect
2019-04-17 09:23:52 +01:00
Ari Parkkila 79c54372f2 Cellular: Fix to delete PDP context on disconnect 2019-04-11 03:58:56 -07:00
Ari Parkkila e0f8b2116a Cellular: Fix CellularStateMachine timeout configurations 2019-04-09 22:02:38 -07:00
Cruz Monrreal cec5a85761
Merge pull request #10354 from hasnainvirk/compile_error_at_handler
Cellular: Using new rather than malloc in debug_print
2019-04-09 11:06:15 -05:00
Cruz Monrreal d1672d0200
Merge pull request #10341 from mirelachirica/check_urc_resp_stop_1
Cellular: Check for URC during AT response stop
2019-04-09 11:05:56 -05:00
Teppo Järvelin 2470a3611c Cellular: new state machine state and better info from stm
Added new state (signal quality) and more information about progress
so application/driver can build recovery logic.
2019-04-09 13:44:45 +03:00
Hasnain Virk 9229aba87d Using new rather than malloc in debug_print
Using malloc will require us to add stdlib.h somewhere in the path for
the application. Maybe the CI apps are adding stdlib.h and that's why
the code would have worked. In a custom app, it can happen that the
header is not included. Using new avoids the need to add stdlib.h
anywhere and it is more in line with C++.
2019-04-09 12:25:59 +03:00
Mirela Chirica f100cd59c8 Cellular: Check for URC during AT response stop 2019-04-09 11:15:28 +03:00
Teppo Järvelin fe5f97895b Cellular: Fix deleting of state machine to correct class 2019-04-08 12:50:29 +03:00
Martin Kojtal 8cbcc55f88
Merge pull request #10121 from kivaisan/improve_at_trace
Cellular: Improve ATHandler AT debug traces
2019-04-03 09:00:30 +02:00
Kimmo Vaisanen aff3815790 Cellular: Improve ATHandler AT traces
Original AT traces had several issue:
- Can be overwritten by other traces (printf/mbed-trace)
- No way to know which direction message was going (TX or RX)
- <cr> and <ln> characters were not visible in trace
etc.

This commit addresses those issues using mbed-trace and showing separately
each filehandle write and read.
2019-04-01 11:40:04 +03:00
Teppo Järvelin c6e5595cec Cellular: retry logic for CellularContext connect
State machine has retry logic until device is attached to network.
After this CellularContext does the context activation e.g. connect.
There was no retry logic for context activation. Added logic to
CellularContext level so it's available for at and (upcoming)ril layers.
2019-03-29 14:12:23 -05:00
Teppo Järvelin b0ee22c96b Cellular: CellularContext must provide access to CellularDevice
When using NetworkInterface::get_default_instance() application gets handle
to CellularInterface which is actually CellularContext derived from CellularInterface.
Application needs also handle to CellularDevice to open other interfaces.
2019-03-26 07:29:11 +02:00
Martin Kojtal 014a5ec487
Merge pull request #10172 from kivaisan/fix_plmn_iar_trace
Cellular: Fix plmn trace for IAR
2019-03-21 10:05:20 +01:00
Kimmo Vaisanen 06caa0ff14 Cellular: Fix plmn trace for IAR
IAR compiler does not seem to like printing null strings.
2019-03-20 14:39:07 +02:00
Teppo Järvelin 174d95709c Cellular: don't allow ATHandler read/write if filehandle not usable
For example after going to ppp mode we must block at write and
read as filehandle is not usable.
2019-03-18 13:37:48 +02:00
Martin Kojtal 6b84b14ab6
Merge pull request #10081 from jarvte/move_call_CGEREP
Cellular: call AT+CGEREP after sim is ready
2019-03-18 11:26:41 +01:00
Martin Kojtal 4cf22b39d6
Merge pull request #10029 from AriParkkila/cellular-device_serial
Cellular: Remove compile dependency of UARTSerial
2019-03-18 08:12:27 +01:00
Teppo Järvelin dba3d42362 Cellular: call AT+CGEREP after sim is ready
Current implementation did call AT+CGEREP before sim was ready
and it was failing in most modems.
2019-03-18 08:10:09 +02:00
Cruz Monrreal 6c4b4a5212
Merge pull request #10084 from mirelachirica/info_resp_issue_8829
Cellular: AT information response to return false on empty prefix
2019-03-16 22:59:24 -05:00
Cruz Monrreal dbb33ef423
Merge pull request #9801 from vmedcy/fix-eventqueue-h
Correctly include EventQueue.h
2019-03-16 22:52:40 -05:00
Martin Kojtal 759627ff12 Merge branch 'plmn_stm_fix2' of https://github.com/jarvte/mbed-os into rollup 2019-03-15 08:45:14 +00:00
Martin Kojtal d5eb98e66a Merge branch 'cellular_BC95_leak_fix' of https://github.com/TeemuKultala/mbed-os into rollup 2019-03-14 11:37:10 +00:00
Martin Kojtal cf76b74aad
Merge pull request #9837 from jarvte/drop_bg96_cgact_support
Cellular: CGACT not supported in coming firmware in BG96
2019-03-14 09:16:39 +01:00
Martin Kojtal 76fe7267e7
Merge pull request #9637 from u-blox/C030_N211_Cellular_Driver
Cellular: UBLOX_C030_N211 Cellular API's
2019-03-14 09:11:06 +01:00
Mirela Chirica d12de2a199 Cellular: AT information response to return false on empty prefix 2019-03-13 15:49:33 +02:00
Ari Parkkila 903a6f2e7e Cellular: Remove compile dependency of UARTSerial 2019-03-12 23:57:43 -07:00
Teemu Kultala 71a1ed9c8e cellular: BC95 memory leak fix 2019-03-07 11:58:20 +02:00
Teppo Järvelin a830dbf47d Cellular: removed manual registering state.
Simplified state machine by removing manual registering state.
This was done as some modems did not have all the needed at commands
for checking the registered network. Some modem run out of memory as when
checking correct network there might be so many networks available.
Manual registration still works but it does not do any checks to which network
it's registered. Moved manual registering at command earlier in state machine so it forces
registering to a correct network. Internal refactor/fix, does not affect applications.
2019-03-05 13:17:25 +02:00
mudassar-ublox 578fb7ae2b updated api and removed Astyle issue 2019-03-04 16:47:15 +05:00
Teppo Järvelin 0905f01438 Cellular: Removed API get_connection_status() from CellularNetwork
This was left accidentally after refactoring.
It wasn't giving correct states after refactoring.
CellularContext::get_connection_status should be used instead.
2019-03-01 14:51:05 +02:00
Teppo Järvelin ec73c8a9c7 Cellular: fix connect-disconnect sequence called many times
Fix syncing back to at mode after ppp disconnect.
Fix AT_CellularContext flags and states to allow new connect after disconnect.
Fix that state machine is not reseted in disconnect is it's running (might be
running because of another context or new connect already started).
2019-03-01 14:47:41 +02:00
Teppo Järvelin 4077898de1 Cellular: fix issue where CGACT not supported in coming firmware in BG96. 2019-02-28 08:36:31 +02:00
mudassar-ublox 6c347eafe5 C030_N211 cellular api refactoring 2019-02-26 17:28:01 +05:00
Cruz Monrreal 50af2c341c
Merge pull request #9752 from mirelachirica/add_comment_fix_warning
Add comment fix warning
2019-02-21 17:30:34 -06:00
Volodymyr Medvid b0a33273ff Correctly include EventQueue.h
There are two EventQueue.h in mbed-os codebase:
events/EventQueue.h
features/FEATURE_BLE/ble/pal/EventQueue.h

By accident, `mbed compile` generates includes.txt with the correct
order of include search paths. This is not the case for the CMake
exporter: targets with FEATURE_BLE enables fail to compile with errors:

mbed-os/features/cellular/framework/AT/ATHandler.h:99:60: error:
'events' has not been declared

Update all places to always include either "events/EventQueue.h"
or "ble/pal/EventQueue.h": to always find the correct header.
2019-02-21 17:59:05 +02:00
mudassar-ublox da797ef946 C030_N211 cellular api 2019-02-21 14:44:20 +05:00
Cruz Monrreal 2234dac127
Merge pull request #9751 from AriParkkila/athandler-set_at_timeout
Cellular: Fix ATHandler set/restore_at_timeout with mutex lock
2019-02-19 15:29:38 -06:00
Cruz Monrreal e3bc37b4de
Merge pull request #9655 from mirelachirica/nonip_doxygen_updates
Cellular: Non-IP doxygen updates
2019-02-19 15:29:14 -06:00
Mirela Chirica 9ddb843cc8 Cellular: Added explanatory comment for AT cellular stack's socket_open routine 2019-02-19 10:18:08 +02:00
Ari Parkkila d48adcce2c Cellular: Fix ATHandler set/restore_at_timeout with mutex lock 2019-02-19 00:16:45 -08:00
Mirela Chirica 57a93bbd0a Cellular: Non-IP doxygen updates 2019-02-18 09:53:59 +02:00
Ari Parkkila 3bcf51385e Cellular: Handling of TCP endpoint closed 2019-02-17 23:51:08 -08:00
Ari Parkkila 5aaf42c418 Cellular: ATHandler debugging relieved 2019-02-17 23:49:01 -08:00
Cruz Monrreal fdd2a9402a
Merge pull request #9728 from AriParkkila/at-handler-clear-sigio
Cellular: Fix sigio to be released in ATHandler destructor
2019-02-15 12:41:44 -06:00
Cruz Monrreal 7f248970ec
Merge pull request #9660 from blind-owl/clean_cellular_trace
Cellular: clean sensitive information from trace
2019-02-15 12:28:25 -06:00
Ari Parkkila 0c697f4421 Cellular: Fix sigio to be released in ATHandler destructor 2019-02-15 05:07:36 -08:00
Cruz Monrreal 67abaf5fa7
Merge pull request #9706 from jarvte/fix_powering_onboard_modems
Cellular: fix onboard modems powering failure.
2019-02-14 20:26:51 -06:00
Teppo Järvelin e4018bd9bb Cellular: fix onboard modems powering failure
Don't call soft power on if device was already powered.
Some modems need to wait before sending anything to modem after soft powering.
2019-02-14 12:39:37 +02:00
Jari Poyhonen b6a0892e86 Cellular: clean sensitive information from trace
Information removed from the cellular subsystem trace log:
* SIM pin
* APN username and password

Added get_debug() to ATHandler.h to get the current trace state in order
to support suspend/resume of trace output.
2019-02-14 09:22:54 +02:00
Neil MacMullen f29c5b22a1 Keep style linter happy 2019-02-12 14:37:07 +00:00
Neil MacMullen a7f4cbcdce Make a few trivial syntactic changes to better support cross-compilation 2019-02-12 12:01:05 +00:00
Mirela Chirica 6af725822b Cellular: Fix socket bind tests for BG96 2019-02-08 13:02:18 +02:00
Nir Sonnenschein 8c2ad14ace
Merge pull request #9568 from ARMmbed/feature-cellular-refactor
Merge feature cellular refactor
2019-02-07 18:17:32 +02:00
Martin Kojtal a0ec77d9a8
Merge pull request #9378 from oscarh/master
Add get_connection_status() override in CellularContext
2019-02-05 10:39:00 +01:00
Martin Kojtal 50b5f57c28
Merge pull request #9457 from blind-owl/fix_valgrind_defects_from_cellular
Fix valgrind defects from cellular
2019-01-31 11:12:00 +01:00
Ari Parkkila 95839662c6 Cellular: Fix cellular specific Greentea tests 2019-01-24 23:34:44 -08:00
Jari Poyhonen 84536bd09e cellular ATHandler update due valgrind run 2019-01-23 09:43:03 +02:00
Ari Parkkila c4de2f2f0e Cellular: Power API updated to match onboard_modem_api 2019-01-22 02:24:45 -08:00
Ari Parkkila 139d506a24 Cellular: Move power on/off to device and remove CellularPower 2019-01-22 02:24:45 -08:00
Mirela Chirica ba3727b4e8 Cellular: Unit tests for Non-IP socket 2019-01-22 02:24:45 -08:00
Mirela Chirica d301e13610 Cellular: Non-IP socket and PDP context for EPS control plane data delivery 2019-01-22 02:24:44 -08:00
Teppo Järvelin 84e5013a2d Cellular: added setting of data carrier support for UART. 2019-01-22 02:23:04 -08:00
Teppo Järvelin fa5d0fc358 Cellular: Added generic cellular modem
Generic cellular module (GENERIC_AT3GPP) can by used as a default
module when porting new cellular module. It's a good starting point
and eases porting of new modules. GENERIC_AT3GPP uses only standard
3GPP AT commands when communicating with the modem.
2019-01-22 02:23:04 -08:00
Teppo Järvelin 0c9130efeb Cellular: change stack_type_supported to get_property
Change usage of AT_CellularContext::stack_type_supported to
AT_CellularBase::get_property. This way we can rid of
targets overriding stack_type_supported and delete
unnecessary classes and simplify new targets.
2019-01-22 02:23:04 -08:00
Teppo Järvelin 7c9f9d47ec Cellular: Remove target files inheriting from AT_CellularNetwork
After AT_CellularNetwork::has_registration was replaced with
CellularProperties and better
AT_CellularNetwork::set_access_technology_impl default
implementation we can delete most of the target specific classes
that inherit AT_CellularNetwork.
2019-01-22 02:23:04 -08:00
Teppo Järvelin 9a72c221d8 Cellular: Change AT_CellularNetwork to use CellularProperties.
This change enables removing function has_registration from
class AT_CellularNetwork and all targets inheriting
AT_CellularNetwork.
2019-01-22 02:23:04 -08:00
Teppo Järvelin b0d37ebec4 Cellular: Removed unnecessary checks after new
After this change we were able to change methods
ATHandler::set_urc_handler and CellularDevice::set_ready_cb to void
and simplify error handling.
2019-01-22 02:23:04 -08:00
Teppo Järvelin 8fcd2e0401 Cellular: changed support features to CellularProperty array. 2019-01-22 02:23:04 -08:00
Ari Parkkila c7486b2a0d Cellular: Added shutdown() 2019-01-22 02:23:04 -08:00
Ari Parkkila bdddb445a6 Cellular: Moved reset from power to device 2019-01-22 02:23:03 -08:00
Ari Parkkila 1bc84404b2 Cellular: Removed set_power_level() 2019-01-22 02:23:03 -08:00
Ari Parkkila 0813b969f7 Cellular: Unify set_at_mode and init_module into init() 2019-01-22 02:23:03 -08:00
Ari Parkkila 2dde5a4376 Cellular: Move ready_cb from power to device 2019-01-22 02:23:03 -08:00
Ari Parkkila 19b24946df Cellular: AT remove_urc_handler changed to set_urc_handler(prefix, 0) 2019-01-22 02:23:03 -08:00
Ari Parkkila e49f90fb0b Cellular: Move device_ready from power to device 2019-01-22 02:23:03 -08:00
Ari Parkkila 38f79a9b65 Cellular: Move PSM setting from power to device 2019-01-22 02:23:03 -08:00
Ari Parkkila 36292a4f14 Cellular: Move eDRX setting from power to network 2019-01-22 02:23:03 -08:00
Teemu Kultala 22a536a78a cellular: eps ciot optimization network support check astyle fix 2019-01-22 02:23:03 -08:00
Teemu Kultala f94117559b cellular: eps ciot optimization network support check
-added an API for checking network eps ciot optimization support
-renamed the API for getting the UE parameters
-the API for setting the UE parameters includes now a callback, which
will be called once network support for eps ciot optimization is known
2019-01-22 02:23:03 -08:00
Teppo Järvelin 22d9105318 Removed CellularSIM interface.
Moved methods to classes CellularDevice and CellularInformation.
SIM interface was removed to simplify cellular usage and
methods better suite new classes.
Updated greentea and unit tests.
2019-01-22 02:23:03 -08:00
Ari Parkkila 235c2bc00d Cellular: Removed get_extended_signal_quality and changed get_signal_quality 2019-01-22 02:23:03 -08:00
Ari Parkkila 397b396291 Cellular: Update cellular documentation 2019-01-21 11:43:49 +02:00
Oscar Hellström 58b176ca04 Add connection status override for CellularContext
Add override for the virtual method get_connection_status() inherited
from NetworkInterface. The method in the base class returns
NSAPI_STATUS_ERROR_UNSUPPORTED. The CellularContext has the member
_connection_status, which means that we could return this.
2019-01-15 09:37:24 +01:00