Commit Graph

239 Commits (feature-hal-spec-sai)

Author SHA1 Message Date
TomoYamanaka 9cbd678049 Modify the TYPO of debug info when using LWIP in RZ/A1 related
I modified the debug message when using LWIP in RZ/A1 related mbed boards.
In eth_arch_enetif_init(), sys_thread_new() was called and task name is appeared as debug information, but task name for debug was a mistake.
2018-01-09 18:30:07 +09:00
TomoYamanaka 285c259472 Performance improvement of LWIP communication in RZ_A1 related
For LWIP communication speedup in RZ_A1 related, I changed the below macro value and added the definition processing in RZ/A1 related header file(lwipopts_conf.h). For this reason, those macros are overrode by RZ/A1 related values, not default values.
2018-01-09 18:28:39 +09:00
TomoYamanaka 2e7d6df775 Commonize RZ_A1 related folders placed in "FEATURE_LWIP" directory
In the below "features/FEATURE_LWIP" folders, same as Cortex-M targets, I changed the folder structure to combine files that can be shared as RZ/A1 related. And I renamed the folder name to "TARGET_RZ_A1XX" in order to make commonality explicit.
- "features/FEATURE_LWIP" folder
  <before>
  \features\FEATURE_LWIP\lwip-interface\lwip-eth\arch\TARGET_RZ_A1H
  \features\FEATURE_LWIP\lwip-interface\lwip-eth\arch\TARGET_VK_RZ_A1H
  <after>
  \features\FEATURE_LWIP\lwip-interface\lwip-eth\arch\TARGET_RZ_A1XX
2018-01-09 16:48:39 +09:00
Jimmy Brisson cef1cc26d8
Merge pull request #5651 from gorazdko/ff_lpc546xx-add-ethernet
ff_lpc546xx: add enet, change led1 and led3 pins
2018-01-08 10:35:56 -06:00
Jimmy Brisson af9e07357a
Merge pull request #5740 from ashok-rao/master
Adding MTB ublox ODIN W2 as a new target.
2018-01-04 10:05:02 -06:00
gorazd f6283f5b03 ff_lpc546xx: add enet
fsl_phy.c/.h move to ../drivers to reuse it
lwip: add hardware_init.c
2018-01-01 15:55:24 +01:00
Cruz Monrreal II 5a19f6dcf5
Merge pull request #5684 from juhaylinen/lwip-socket-fix
lwip: fix socket behaviour
2017-12-28 20:40:14 +00:00
Ashok Rao c849db2dab Adding license info 2017-12-22 13:54:22 +00:00
Juha Ylinen 32e64e7171 Fix build for IPv4+IPv6 config 2017-12-22 13:22:00 +02:00
Juha Ylinen 52353d2ede Add function to check if address is local
Update the code to check all addresses for all interfaces. Move
the code from mbed_lwip_socket_bind() to a new function called
mbed_lwip_is_local_addr()
2017-12-22 13:21:59 +02:00
Juha Ylinen 6d3e417eaa lwip: fix socket behaviour
Return NSAPI_ERROR_PARAMETER when:
Binding to a non-local address
Socket listen() is called without calling bind() first
Socket accept() is called without calling listen() first
2017-12-22 13:21:59 +02:00
Ashok Rao 9556736411 Add new line to EOF 2017-12-21 16:14:00 +00:00
Kevin Bracey 9daf450eb3 K64F Ethernet: avoid using NULL thread during init
The K64F Ethernet driver installs an interrupt handler that sets thread
flags, and this could be called before the thread was initialised, so it
would use a NULL thread ID.

This triggers an RTX error-checking trap in debug builds, and could also
lead to other problems with received packets not being processed.

Adjusted so the RX interrupt handler does nothing if the thread isn't
initialised yet, and manually trigger a RX event flag after initialising
the thread in case any interrupts were ignored.

An alternative would have been to implement eth_arch_enable_interrupts,
but this mechanism is not present in the EMAC world - drivers will have
to start returning interrupts in their power up.

Fixes #5680
2017-12-21 11:14:08 +02:00
Ashok Rao dc3c7fc11e Adding MTB ublox ODIN W2 2017-12-20 18:52:04 +00:00
Mika Leppänen 7f6a6323cd Fixed lwip k64f ethernet driver ipv6 multicast groups
Work around for problem in:
https://github.com/ARMmbed/mbed-os/issues/4372
2017-12-14 11:05:05 +02:00
Mahadevan Mahesh f2d2ed44cd LPC546XX: Add ENET support
Signed-off-by: Mahadevan Mahesh <Mahesh.Mahadevan@nxp.com>
2017-11-28 16:18:36 +00:00
Jimmy Brisson 41dcd255c3
Merge pull request #5196 from kegilbert/multicast-ipv6-2
Add IPv4 and IPv6 multicast implementation for UDPSocket
2017-11-20 10:51:07 -06:00
Martin Kojtal 47bae16a5c
Merge pull request #5305 from andcor02/master
New Target: Mbed Connect Cloud board
2017-11-10 08:43:29 +00:00
Martin Kojtal 8acf00a370
Merge pull request #5319 from kegilbert/fix-build-warnings
Remove build warnings in LWIP
2017-11-09 16:51:55 +00:00
Martin Kojtal c67d91a4fc
Merge pull request #5322 from chrissnow/LPC1768_LWIP
LPC1768: Fix ETHMEM_SECTION placement for ARM
2017-11-09 16:51:13 +00:00
Laurent MEUNIER 1f3dfd8875 STM32: Extend Ethernet RMII workaround
to all applicable devices part of F77x/F76x series.
2017-11-06 10:23:30 +01:00
Laurent MEUNIER 96b4c36f0f STM32: Ethernet: Workaround for STM32_F767 revA
On STM32 F767 rev A devices ,Ethernet peripheral had problems on RMII
interface, on MII this was not the case.

This commits implements a tentative workaround for the issue rerfered to
as Ethernet erroneous data received in RMII configuration in the Errata
sheet below:
http://www.st.com/content/ccc/resource/technical/document/errata_sheet/group0/23/a6/11/0b/30/24/46/a5/DM00257543/files/DM00257543.pdf/jcr:content/translations/en.DM00257543.pdf

Note that the issue has been fixed in 'Z' revision. of STM32 F767 MCUs.
2017-11-02 10:38:12 +01:00
Kevin Gilbert 54980546ce Remove build warnings in LWIP 2017-11-01 08:47:58 -05:00
Andrea Corrado 53c476acf2 introduced mbed Connect Cloud board based on ODIN-W2 Module rety commit, added ublox changes
Corrected error

Corrected error in targets json

Reworked JSON

Added lwip-eth to Connect ODIN removes ARM CC error

Fixed formating issues

Correct formating error in  .json

Indentation errors
2017-10-31 11:24:28 +00:00
Chris Snow 1e53aacd9f Fix ETHMEM_SECTION placement for ARM on LPC1768 2017-10-26 15:18:20 +01:00
Anna Bridge 97e2d4a8c5 Merge pull request #5025 from grygorek/master
LPC1769 port
2017-10-26 11:35:35 +01:00
bcostm 8477422086 STM32: Remove lwip compilation warnings 2017-10-19 08:58:40 +02:00
Jimmy Brisson 926ed139f5 Merge pull request #5250 from kjbracey-arm/pbuf16
lwIP: Add memory configs to JSON
2017-10-13 09:24:46 -05:00
Kevin Gilbert b56ced249a Add multicast implementation for UDPSocket. IPv4 and IPv6 both supported. 2017-10-10 18:21:18 -05:00
Kevin Bracey cd06ebb3c7 lwIP: Add memory configs to JSON
We currently set the lwIP pbuf pool size small - to 5 x 576-byte
buffers.

This is insufficient to hold a single DTLS handshake flight, so can
cause cloud client connections to fail. STM-based platforms are failing
handshake because of this. (K64F works because it doesn't use the pbuf
pool for reception, but lwIP does recommend drivers use the pbuf pool).

Not changing the default memory sizes here, as intended for a patch
release, but adding mbed configuration options to allow the numbers to
be adjusted for memory tuning in an application.

In a future minor revision, I would recommend increasing the default
PBUF_POOL_SIZE - we are well below lwIP's out-of-the-box default - and
offsetting by a reduction in MEM_SIZE for the drivers that don't use
PBUF_RAM.
2017-10-10 11:34:21 +03:00
Jimmy Brisson d6136b9790 Merge pull request #5157 from OpenNuvoton/nuvoton
NUC472/M453/M487/NANO130: Add updates for Nuvoton targets
2017-10-09 11:12:43 -05:00
Piotr Grygorczuk 728a3a4a76 mbed LPC1768 & Xpresso LPC1769 unified
Target of LPC1769 links to mbed LPC1768.
The PinNames.h has conditional compile for the pin names.
LWIP lpc17xx emac driver modified to allow LPC1769 target
2017-10-02 11:05:39 +01:00
Jimmy Brisson c3dc45bd0c Merge pull request #5033 from mikaleppanen/lwip_buf_err_map
Mapped lwip buffer error to nsapi no memory error
2017-09-29 10:09:11 -05:00
Mahadevan Mahesh 593fb3a6fb K66F: Update to SDK 2.2
Signed-off-by: Mahadevan Mahesh <Mahesh.Mahadevan@nxp.com>
2017-09-24 08:14:52 -05:00
cyliangtw b363d00537 [M487/NUC472] Fixed ethernet multi-function pin 2017-09-20 16:56:30 +08:00
Anna Bridge 003dd7c47f Merge pull request #5044 from Archcady/Profile_debug
Realtek_RTL8195AM fix for debug profile
2017-09-19 10:43:25 +01:00
Jimmy Brisson 922bf1b619 Update mbed OS to handle ARMC6 requirements 2017-09-11 13:20:32 -05:00
Yuguo Zou 22269ad12c Increase tcpip thread stacksize for REALTEK_RTL8195AM
The default stack size is not enough for debug profile (low compiler
optimization)
2017-09-07 11:07:13 +08:00
Mika Leppänen 140f2b803c Mapped lwip buffer error to nsapi no memory error 2017-09-06 10:20:24 +03:00
Jimmy Brisson 84a28adc09 Merge pull request #4997 from kjbracey-arm/lwip_debug
Correct LWIP_DEBUG definition
2017-09-05 11:19:13 -05:00
Jimmy Brisson 857819f5d2 Merge pull request #4996 from kjbracey-arm/k64f_emac_1thread
Reduce K64F Ethernet driver to 1 thread
2017-09-05 11:18:44 -05:00
Kevin Bracey 65639e80fc Reduce K64F Ethernet driver to 1 thread
Save 1K of RAM by using only 1 thread for RX and TX, and
running the PHY check in lwIP's context.
2017-08-31 13:05:28 +03:00
Kevin Bracey 5a7405e1a3 Correct LWIP_DEBUG definition
Commit f602c936 incorrectly started defining LWIP_DEBUG as either 0 or
1.

lwipopts.h locally was changed to use #if, but all existing users
continued to use #ifdef. Therefore defining it to 0 was accidentally
enabling it for quite a few users.

This would have pulled in some unwanted lwIP code, and affected some
drivers, eg k64f_emac.c allocating an extra 2K of stack.

Correct lwipopts.h to either define it as 1 or leave it undefined, and
change the #if tests back to #ifdef, so all are consistent.
2017-08-31 11:51:10 +03:00
Mika Leppänen 32131b61a8 Improved manual DNS address addition for dual stack case
If DHCP or PPP does not provide DNS addresses, for dual stack, adds both ipv4
and ipv6 DNS addresses to DNS list.
2017-08-23 16:47:17 +03:00
Mika Leppänen 0d5ac6e78d Relocated lwip memory pool on memory restricted platforms 2017-08-23 16:47:16 +03:00
Mika Leppänen 942aec5e4b Corrected lwip to enable disabling of ipcp and ipv6cp protocols 2017-08-22 13:14:41 +03:00
Mika Leppänen dd346ec5a8 Either ipv4 or ipv4v6 PPP and IP stacks are enabled based on 3GPP context 2017-08-22 13:14:41 +03:00
Mika Leppänen 457f940a7c Added Ipv4/Ipv6 stack stack support to lwip DNS queries
If both IPv4 and IPv6 are available, and DNS query fails for first system,
second system is tried.
2017-08-22 13:14:40 +03:00
Mika Leppänen b1d41f9afd Corrected lwip not to send NS probes when link layer address is not available 2017-08-22 13:14:40 +03:00
Mika Leppänen 2adbf721d2 Added dual Ipv4/Ipv6 stack support to lwip address configuration
Added new configuration option "both-addr-timeout" that defines
how long to wait that addresses from both systems become available.
2017-08-22 13:14:40 +03:00
Mika Leppänen 41c647b1c9 Added hex dump tracing to ipv6, ipv4 and ppp modules 2017-08-22 10:17:21 +03:00
Mika Leppänen 23f8ac903e Removed random and tcp_isn modules header dependencies to lwip conf 2017-08-22 10:17:20 +03:00
Mika Leppänen 5fdd7239d9 Corrections to lwip ipv6 neighbor discovery
Merged lwip 2.0.2 stable path 1 from https://github.com/ARMmbed/lwip

Patch allows lwip to do autonomous address configuration for prefixes
that are not on-link.

ad7cf16 Add David's IPv6 improvements to CHANGELOG
af9d783 Fix (bogus) MSVC 2010 warning about uninitialized variable usage in ip6.c It's wrong because the variables are initialized during first loop iteration due to best_addr == NULL
68358d7 nd6: cull destination cache on router removal
7323fa1 nd6: some work on basic RFC 4861 compliance
10eb2ca ip6: improve source address selection
6c06ecd ip6/nd6: route using on-link prefixes, not addresses
9f1714d nd6: improve router selection
2486b41 netif: more ip6 state changes invoke status callback
519d809 nd6: fix Duplicate Address Detection
9f3c6dd nd6: check link status before sending packets
8c761a2 nd6: improve address autoconfiguration support
2017-08-22 10:17:20 +03:00
Jimmy Brisson 0150f58e12 Merge pull request #4608 from OpenNuvoton/nuvoton_m487
Support Nuvoton's new target NUMAKER_PFM_M487
2017-08-14 11:35:33 -05:00
Mika Leppänen 02069f1a09 Added contributing document. 2017-08-03 11:49:44 +03:00
ccli8 afb5aba8d9 [M487] Fix compile warnings with IAR toolchain 2017-08-03 13:33:17 +08:00
ccli8 99d12b1eb8 [M487] Fix compile warnings with GCC_ARM toolchain 2017-08-03 11:10:15 +08:00
cyliangtw 8f67774fd9 [M487] Revise EMAC to fulfill real-chip 2017-08-01 10:31:26 +08:00
cyliangtw dae0a4c30c [M487] support unique locally administered MAC address 2017-08-01 10:19:53 +08:00
cyliangtw 1b0b82a142 [M487] Support ethernet after enlarge PHY RXD driving 2017-08-01 10:19:28 +08:00
cyliangtw b91f064be7 [M487] Add CAN, AES and Eth 2017-08-01 10:18:54 +08:00
Mika Leppänen 844e400aa2 Merged lwip 2.0.2 stable
* commit '7bbc850309fed8bf63017821f18aff03bca9233b':
  Squashed 'features/FEATURE_LWIP/lwip-interface/lwip/' changes from 10f93f4..7648b58
2017-07-24 13:17:40 +03:00
Martin Kojtal 7d1e87a5b3 Merge pull request #4677 from u-blox/ppp_stack_increase
Increase default PPP stack size from 512 bytes to 768 bytes.
2017-07-13 16:44:30 +02:00
Anna Bridge 4890261c98 Merge pull request #4548 from deepikabhavnani/os_warn
Resolve Warnings for mbed-os-examples
2017-07-07 12:43:27 +01:00
Rob Meades 921d1fa6fa Increase PPP stack size from 512 bytes to 768 bytes.
PPP is running close to the edge of its default thread stack size of 512 bytes. When it experiences an FCS error on the incoming data (for example. caused by character loss when the incoming serial rate is too high for it to process in time) it performs some additional work which overruns the thread's stack, hitting the OS "stack underflow" check. Increasing the PPP stack size to 768 bytes resolves this problem.
2017-07-03 09:46:23 +01:00
Anna Bridge b30481d266 Merge pull request #4523 from hasnainvirk/eth_flag_lwip
Check Ethernet before including lwipopts_conf.h
2017-06-20 11:40:23 +01:00
Jimmy Brisson c08864b588 Merge pull request #4444 from Archcady/lwip_issue
resolve lwip init twice issue
2017-06-19 18:28:49 -05:00
Deepika 7e9ea9c665 Resolved format warnings: format '%d' expects argument of type 'int', but argument 3 has type 'u32_t[-Wformat=] 2017-06-15 15:20:26 -05:00
Sam Grove 109269da9c Merge pull request #4414 from tkaman/master
Enable CM3DS_MPS2 target
2017-06-15 11:20:09 -05:00
Yuguo Zou b1ca77b6b8 A better approach to flip "netif_inited" 2017-06-13 18:04:00 +08:00
Russ Butler 9620b0fc7f STM32 - fix bug were sockets stop receiving data
The function _eth_arch_low_level_input() is meant to pass data into
LWIP and to prepare the ethernet buffers to receive more data.
If the LWIP heap is empty and the call to pbuf_alloc() in
_eth_arch_low_level_input returns null, the ethernet receive buffers
are not updated to receive data. Because of this the ethernet RX
interrupt will not fire. Since the RX interrupt is the only thing that
triggers a call to _eth_arch_low_level_input(), the receive buffers
will never get cleared, and the device stops receiving data.

To prevent this from happening, this patch ensures that the function
_eth_arch_low_level_input() clears the receive buffers even if a new
pbuf for the data couldn't be allocated.

This issue can be reproduce by running the test
"features-feature_lwip-tests-mbedmicro-net-udp_echo_parallel"
and on the same machine running the below python script to flood the
device with UDP broadcast packets:

MY_IP = #ADD your local IP here
from socket import *
s = socket(AF_INET, SOCK_DGRAM)
s.bind((MY_IP, 1234))
s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
for _ in range(1000):
    s.sendto("test data", ('255.255.255.255', 1234))
print("Message sent")
2017-06-12 22:18:04 -05:00
Hasnain Virk d29e05896f Check Ethernet before including lwipopts_conf.h
lwipopts_conf.h is used by target dependent Ethernet drivers for
configuring various parameters.
By default, Ethernet is enabled and in this case lwipopts_conf.h
will be included.
In case of PPP  being enabled, it is desirable to not pull in any Ethernet
related code.
2017-06-12 09:57:16 +03:00
Martin Kojtal d0d7c6f4f6 lwip: fix stm32f4 eth conf file
This file is moved to targets that support eth. It can't be common for any F4, as
not all targets from this family support eth.
2017-06-10 15:20:30 +01:00
Christopher Haster f11f2b35e0 lwip: Increased DHCP timeout to 60 seconds
This matches the timeout used in linux:
https://linux.die.net/man/5/dhclient.conf

This resolves several issues noticed during testing when we
have a very large number of devices that try to get an IP address
around the same time.
2017-06-10 15:14:28 +01:00
gabker01 fb6a2c075c Implement low-level Ethernet interface for lwIP
Based on lwip_ethernetif.c skeleton file,
use init, receive and transfer
functionality of SMSC9220 Ethernet driver
for the lightweight IP stack.

Receive mechanism is interrupt driven.

HW buffer sizes:
Tx = 4608 bytes (MTU)
Rx = 10560 bytes

lwIP fine tuning:
mbed-os/features/FEATURE_LWIP/lwip-interface/lwip/src/include/lwip/opt.h

Change-Id: I0ea95650c65fb32cafb5c2d3dde11420c61dba66
Signed-off-by: Gabor Kertesz <gabor.kertesz@arm.com>
2017-06-09 14:58:31 +01:00
Mika Leppänen ee30df993a Disabled lwip ethernet ipv6 multicast filter for STM boards 2017-06-09 11:57:24 +03:00
Sam Grove 1afb23bdd8 Merge pull request #4441 from tung7970/fix-mbedos
lwip - fix typo and cleanup coding style
2017-06-08 16:30:16 -05:00
Yuguo Zou a812696c1d replace tab with space 2017-06-07 12:04:36 +08:00
Yuguo Zou ef1ddae694 resolve lwip init twice issue
resolve wifi example test fail before lwip is init
2017-06-07 12:04:36 +08:00
Russ Butler e57869039e Fix semaphore usage on lpc1768 emac
The semaphore xTXDCountSem had the count to match the number of
resources available, but was being used as a binary semaphore in a
loop to listen for events. This patch updates the logic to make use of
the resource count.

With RTX5 the OS traps with an error if the a semaphore is released
more times than its count with an error similar to
"Semaphore 10000e6c error -17". Because xTXDCountSem is being used
as a binary semaphore it triggered this trap. With this patch the
semaphore is no longer used as a binary semaphore and no longer traps.
2017-06-05 11:37:06 -05:00
Tony Wu af3d6a52d1 lwip - fix typo and cleanup coding style
Signed-off-by: Tony Wu <tung7970@gmail.com>
2017-06-05 16:26:30 +08:00
Yuguo Zou f000eb3401 Restore TCPIP_THREAD_STACKSIZE and thread_stack_main
move some TCPIP stack data to heap;
switch off GDMA for SPI (only for SPI);
TCPIP_THREAD_STACKSIZE and thread_stack_main are identical to ARMmbed
2017-06-03 20:15:01 +01:00
Yuguo Zou 15d58690e9 fold static variables in RTWInterface.cpp to .h, modify lwipopts.h TCPIP_THREAD_STACKSIZE 2017-06-03 20:14:59 +01:00
Archcady 6a47d01c4a Rename Lwipopts_conf.h to lwipopts_conf.h 2017-06-03 20:14:51 +01:00
Archcady d0488c1076 Rename features/FEATURE_LWIP/lwip-interface/lwip-eth/arch/target_realtek/Lwipopts_conf.h to features/FEATURE_LWIP/lwip-interface/lwip-eth/arch/TARGET_Realtek/Lwipopts_conf.h 2017-06-03 20:14:50 +01:00
Archcady 3d59643061 Add lwipopts_conf.h 2017-06-03 20:14:45 +01:00
Martin Kojtal 533e6f0feb Merge pull request #4431 from kjbracey-arm/mbed_lwip_api_compat
Restore mbed OS 5.4 mbed_lwip_ function prototypes
2017-06-03 08:28:52 +02:00
Sam Grove 5f138810a9 Merge pull request #4294 from ARMmbed/feature_cmsis5
Update CMSIS-Core and RTX to version 5
2017-06-02 23:44:32 -05:00
Kevin Bracey 284843fdb3 Restore mbed OS 5.4 mbed_lwip_ function prototypes
External EMAC drivers are currently directly attaching to lwip_stack.c
via mbed_lwip_bringup et al. Restore the original prototypes to avoid
compatibility breakage.
2017-06-02 14:30:25 +03:00
Kevin Bracey 42cd1e1fac Make lwip_stack.c include its header
Fix some type mismatches that this revealed.
2017-06-02 14:29:34 +03:00
Hasnain Virk 24de27c989 Major Refactoring & extensions
For keep supporting external APIs with the same name (supposedly there are a larger
number of users of those APIs), BufferedSerial and ATParser are being renamed.
BufferedSerial becomes UARTSerial, will complement a  future USBSerial etc.
ATParser becomes ATCmdParser.

* UARTSerial moves to /drivers

* APN_db.h is moved from platform to cellular/util/.

* Original CellularInterface is restored for backward compatability (again, supposedly there
  are users of that).

* A new file, CellularBase is added which will now servce as the base class for all
  upcoming drivers.

* Special restructuring for the driver has been undertaken. This makes a clear cut distinction
  between an on-board or an off-board implementation.
  	- PPPCellularInterface is a generic network interface that works with a generic FileHandle
          and PPP. A derived class is needed to pass that FileHandle.
        - PPPCellularInterface provides some base functionality like network registration, AT setup,
          PPP connection etc. Lower level job is delegated to the derived classes and various modem
          specific APIs are provided which are supposed to be overridden.
        - UARTCellularInterface is derived from PPPCellularInterface. It constructs a FileHandle and
          passes it back to PPPCellularInterface as well as provides modem hangupf functionality.
          In future we could proive a USBInterface that would derive from PPPCellularInterface and could
          pass the FileHandle back.
	- OnboardCellularInterface is derived from UARTCellularInterfae and provides hooks to
          the target provided implementation of onbard_modem_api.h. An off-board modem, i.e, a modem on
          a shield has to override the modem_init(), modem_power_up() etc as it cannot use
          onboard_modem_api.h.
2017-05-31 15:02:11 +03:00
Hasnain Virk b51fbe817b mbedtls md5 or lwip internal crypt Fudge
Some targets define MBEDTLS_md5_C in targets.json in order to force the system to use
external mbedtls instead of lwip internal crypt, i.e.,  polarssl.
LWIP's internal md5 mechanism is tied to PPP  for some reason. In a previosly merged commit
an attempt was made to steal md5 functions by faking that PPP was turned on. However
that solution was broken in case of really turning on PPP  functionality.

This commit fixes the breakage and also corrects the logic in case a target decides to use
external md5 implementation from mbedtls or otherwise (i.e, wants to stick to the internal
implementation).
2017-05-31 15:02:11 +03:00
Hasnain Virk 658ddf7c30 ARMCC link errors fixed, nsapi_ppp glue layer changed
GCC have not been capable enough to catch some linker errors which arose when
ethernet support for LWIP was disabled. Checks have been added to make sure that
unrefrenced code is not linked in.

nsapi_ppp glue layer is made more transparent to public cellular API. Storage of IP
addresses is removed. PPP layer already stores the addresses, so we pass the pointer back
to the upper layers.

If PPP is not used, we provide dummy functions.
2017-05-31 15:02:11 +03:00
Hasnain Virk 01088647b9 Finalizing the public API for Cellular
* state machine corrections
* adding various standard API methods
* Addition/revision/enhancement of the nsapi_ppp glue layer
* Turning off debug by default
2017-05-31 15:02:11 +03:00
Hasnain Virk f602c936ff Redirecting LWIP debug trace to mbed-trace
This piece of code redirects LWIP debug trace to mbed-trace if configured.
This enables us to have universal traces.
2017-05-31 15:02:11 +03:00
Hasnain Virk 3b44f4758d Adding support for APN lookup
Mainly reutilizing code from ublox C027 support lib.
As we are using external PDP context, i.e., an external IP stack,
we will pass username and password to underlying stack running PPP.
We only support CHAP as the authentication protocol.
2017-05-31 15:02:11 +03:00
Hasnain Virk 93f436ebe0 Using DCD line to invoke poll() HUP
POSIX poll() provides a mechanism to attach a POLL_HUP event
if the modem or device hangs up on you. POLL_HUP and POLL_OUT are
mutually exclusive. We poll in the PPP_input() routine if the modem
hung up. If it did we stop the data consumption, close PPP and go back
to the driver for reserruction of AT parser and subsequent retries or
application specific actions.
This is achieved by attaching an interrupt to the DCD line of the modem.
When DCD line goes high (off), we have lost the carrier. So we record an
POLLHUP event using _poll_change().
2017-05-31 15:02:11 +03:00
Hasnain Virk 87a4580e5f Bug fixes & state machine corrections
In case of carrier lost, we would like to inform PPP data pump.
That involved setting up link status flag down semaphores.
mbed_lwip_bringup() and mbed_lwip_bringdown() had been Ethernet specific only.
We extend these routines to support PPP as well. Currently we support only one interface
at a time. However, future enhancement to multi interface support should be trivial.
2017-05-31 15:02:11 +03:00
Kevin Bracey 7e3c529d21 Unify LWIP Ethernet and PPP initialisation 2017-05-31 15:02:11 +03:00
Hasnain Virk 2abb078f27 Adding PPP link status callback
mbed_ppp_init() is extended to take a function ptr.
ppp_lwip will call this callback upon a change in ppp link status.
in the beginning, the Ublox driver waits until the PPP link is established properly.
2017-05-31 15:02:11 +03:00