Commit Graph

7085 Commits (80f296202cb0da751598c5a9024b29adef87ab19)

Author SHA1 Message Date
Russ Butler 8f33c0fc4f Add synchronization to the network socket API
Add mutexes to protect the network socket API.  Also use semaphores to
wait for read/write events.  Also fix a typo in the comments for
timeout.
2016-07-21 18:19:21 -05:00
Christopher Haster 3d310c2463 Small bug fixes
mirrored from:
https://developer.mbed.org/teams/NetworkSocketAPI/code/NetworkSocketAPI/

- Fix bug with SocketAddress init per @c1728p9
- Fix issue with not passing interface through accept call
- Fix port issue in SocketAddress constructor
2016-07-21 18:19:21 -05:00
Christopher Haster 710fab5b8b Add NSAPI_ERROR_PARAMETER
per @c1728p9
2016-07-21 18:19:21 -05:00
Christopher Haster 943dd711a9 Added WFI to save power in temporary polling implementation 2016-07-21 18:19:21 -05:00
Christopher Haster f2715b7e77 Consolidate set_timeout/set_blocking behaviour
- Avoids ambiguity when both are used
- Matches Python behaviour
2016-07-21 18:19:21 -05:00
Christopher Haster bd5e913ca1 Separate Stack/Interface concept into two distinct classes 2016-07-21 18:19:21 -05:00
Christopher Haster a4f1071996 Add standardized stack options 2016-07-21 18:19:21 -05:00
Christopher Haster abd25f9bb3 Added workaround for bug in newlib sscanf
https://bugs.launchpad.net/gcc-arm-embedded/+bug/1399224
2016-07-21 18:19:21 -05:00
Christopher Haster cd4a521e22 Fix race condition in socket close 2016-07-21 18:19:21 -05:00
Christopher Haster fc71badb69 Rename Interface -> Stack
NetworkInterface  -> NetworkStack
EthernetInterface -> EthernetStack
WiFiInterface     -> WiFiStack
CellularInterface -> CellularStack
MeshInterface     -> MeshStack
2016-07-21 18:19:21 -05:00
Christopher Haster d36a0b6b88 Revised documentation for Interface classes 2016-07-21 18:19:21 -05:00
Christopher Haster aa2357a836 Revisited documentation for Socket API 2016-07-21 18:19:21 -05:00
Christopher Haster 0ae11b49e8 Removed is_connected function
- Not supported by TCP/UDP protocols
- Uncommon and less useful with proper error handling
2016-07-21 18:19:21 -05:00
Christopher Haster b9d9842846 Revisited documentation for NetworkInterface specific methods 2016-07-21 18:19:21 -05:00
Christopher Haster d84f4be6ed Added support for shortened form ipv6 addresses
supported:
    1.2.3.4
    1:2:3:4:5:6:7:8
    1:2::7:8
    ::

currently not supported:
    1:2:3:4:5:6:1.2.3.4
2016-07-21 18:19:21 -05:00
Christopher Haster 3fa1bb6469 Revised stack specific configurations
Adds the following functions for direct configuration of interface
- (set|get)stackopt
- (set|get)sockopt
2016-07-21 18:19:21 -05:00
Christopher Haster 63725d653c Move bind to Socket
Bind can operate on any IP socket and is not specific to a protocol
2016-07-21 18:19:21 -05:00
Russ Butler aea45c88ce Fix ipv6 addr in SocketAddress
Correctly set and return the ipv6 address.
2016-07-21 18:19:21 -05:00
Christopher Haster 56e11d6709 Added better support for SocketAddress/string addresses/ports 2016-07-21 18:19:21 -05:00
Christopher Haster bd8cbf0fcb Move to SocketAddress in gethostbyname 2016-07-21 18:19:21 -05:00
Christopher Haster 3f08f3957c Added support for storing bytes directly in SocketAddress
Bytes are stored by default, however enough space is allocated in
a SocketAddress to generate the string representation if necessary.

Currently there is no support for shortened addresses
2016-07-21 18:19:20 -05:00
Christopher Haster 1b368cf525 Renamed NetworkInterface create/destroy methods to match Socket methods
- socket_create -> socket_open
- socket_destroy -> socket_close
2016-07-21 18:19:20 -05:00
Christopher Haster dfc1ca4cef Move to single state-change interrupt
Pros
- Easier to implement
- More similar to SIGIO in BDS sockets

Cons
- Less information, but this information had a high risk of being
  faulty/spurious
2016-07-21 18:19:20 -05:00
Christopher Haster a7e6c105b3 Remove shutdown parameter from close call
Pros
- Simplifies interface
- Easier base implementation

Cons
- May need shutdown functionality, in this case shutdown
  can be added as another function in the future
2016-07-21 18:19:20 -05:00
Christopher Haster d38ccb70a6 Add open call as alternative to passing NetworkInterface at construction
Pros
- Allows memory to be statically allocated
- Avoids issues with Thread creation before entering main
- Matches existing APIs such as FunctionPointer and Ticker

Cons
- Does not enforce passing a NetworkInterface
2016-07-21 18:19:20 -05:00
Christopher Haster 4c7992cb24 Matched changes NetworkSocketAPI
Responded to feedback from mbed-client implementation
to introduce a full feature set that should support most
of the use cases for the API.
2016-07-21 18:19:10 -05:00
Vincent Coubard 07d7165f98 Remove LF clock initialization from os_init_clock.
The LF clock initialization is already handled by the SystemInit function.
This code was causing troubles when run on targets with an alternate LF
clock.
2016-07-21 19:36:58 +01:00
Vincent Coubard e0a5ca1d67 Bring new ble implementation from mbed-os/workshop-nordic.
Commit ID: e3c7c2dd3ea4f00e27667e79155413033cd80060
2016-07-21 15:03:23 +01:00
Vincent Coubard a9a0657c53 Reintegration of TARGET_MCU_NRF51822 from master.
It was deleted in the mbed-nordic branch.
2016-07-21 15:02:26 +01:00
Vincent Coubard f10cf7fe16 Merge remote-tracking branch 'mbed-nordic/epr_integration' into nrf52_nrf51_unified_integration 2016-07-21 14:50:37 +01:00
Vincent Coubard 6399ad17d6 Merge pull request #26 from pan-/nrf51_compatibility
Makes room for old NRF51 implementation.
2016-07-21 14:24:25 +01:00
Martin Kojtal db60d6a7f7 Merge pull request #2200 from pan-/ble_integration_from_mbed_os
Move ARMmbed/feature/FEATURE_BLE into mbedmicro/mbed.
2016-07-21 14:00:00 +01:00
Vincent Coubard 478a7fd4cd Remove files from unused targets. 2016-07-21 13:39:53 +01:00
svastm 44da533625 [STM32XX] Fix default build 2016-07-21 13:09:26 +02:00
Martin Kojtal dd010097ba Merge pull request #2159 from jeromecoutant/PR_dev_NUCLEO_F207ZG
New STM32 board : NUCLEO_F207ZG
2016-07-21 11:13:33 +01:00
Martin Kojtal 89d5583bde Merge pull request #2190 from geky/callback-const
[api] Fix handling of const objects in Callback class
2016-07-21 11:07:03 +01:00
Martin Kojtal c9d8690fa9 Merge pull request #2194 from zgoda/BLUEPILL_fix_int_handler
[BLUEPILL_F103C8] Fix interrupt handler
2016-07-21 10:56:21 +01:00
Vincenzo Frascino 4f5b191e74 [BEETLE] Fix US_Ticker read
MBED OS requires an us_ticker_read function that returns a 32bit
value in microseconds. This can not be represented directly on
the Beetle Timer Load register.

max_us_on_reg = (0xFFFFFFFF ticks)/DIVIDER_US

This patch introduces an intermediate layer that counts the timer wraps
around and returns the correct value of us to the MBED library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
2016-07-21 10:38:20 +01:00
Vincenzo Frascino 1b364a1e52 [BEETLE] Fix Lp_Ticker read
MBED OS requires an lp_ticker_read function that returns a 32bit
value in microseconds. This can not be represented directly on
the Beetle Dual Timer Load register.

max_us_on_reg = (0xFFFFFFFF ticks)/DIVIDER_US

This patch introduces an intermediate layer that counts the timer wraps
around and returns the correct value of us to the MBED library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
2016-07-21 10:38:20 +01:00
0xc0170 3f5c794b6c Export - define ProGenDef outside of the loop
This saves ~329 calls.
2016-07-21 09:41:38 +01:00
Christopher Haster 8e60fdd919 Added tests for cv-qualifier c-objects in Callback class 2016-07-20 19:27:38 -05:00
Christopher Haster e806b89df6 Fixed handling of const objects in Callback class
Before, the following results in a compilation error:

    const struct Object *obj;
    void obj_doit(const Object *obj);

    Callback<void()> cb(obj, obj_doit);

This is especially noticable when migrating from the old Thread
constructor, which previously _required_ const.

Short term fix for all cv qualifiers through a C cast:
void *_obj = (void*)obj;
2016-07-20 19:20:32 -05:00
Vincent Coubard a81b8b13dd Set correct compiler support for NRF51 and NRF52 based targets. 2016-07-21 00:10:52 +01:00
Vincent Coubard 406ac8f5f4 Makes room for old NRF51 implementation.
the unified target for NRF51 has been renamed MCU_NRF51_UNIFIED and
hal implementation has been moved from TARGET_MCU_NRF51822 to
TARGET_MCU_NRF51822_UNIFIED.

In the process, the only real taget kept for NRF51 based targets is
NRF51_DK.

It is too risky at this stage to switch NRF51822 (16K target) to the new
softdevice. The overhead of the RTOS is already too huge.
2016-07-21 00:02:44 +01:00
Neil Thiessen 2133dadb63 [RTOS] Fixed missing include in RtosTimer.h
Added missing include for the MBED_DEPRECATED macro.
2016-07-20 16:14:20 -06:00
Neil Thiessen 4d4089e7bc [RTOS] Added deprecated RtosTimer constructor
Reintroduced the original RtosTimer constructor as an additional deprecated constructor for backwards compatibility.
2016-07-20 16:07:12 -06:00
Vincent Coubard 2259e0d539 Move ARMmbed/feature/FEATURE_BLE into mbedmicro/mbed.
In the process, the path has been shortened and the unecessary ble
directory between FEATURE_BLE and the actual implementation has been
removed.

commit id of ARMmbed : 17728a824c7273e16b6b74fae871e2997c88ecd1
2016-07-20 22:10:36 +01:00
Sam Grove 48c1d2eb7a Merge pull request #2197 from bridadan/tests-and-frameworks
Adding test frameworks and test sources
2016-07-20 13:19:58 -05:00
Brian Daniels a9eb39dee4 Adding test frameworks and test sources
This commit adds the following test frameworks:

- `greentea-client` (https://github.com/ARMmbed/greentea-client)
  - This framework provides a key-value api for communicating with the
    greentea test tool (https://github.com/ARMmbed/greentea)
- `unity` (https://github.com/ARMmbed/unity)
  - This framework provides test assert macros that can be used when
    writing test cases
- `utest` (https://github.com/ARMmbed/utest)
  - This framework allows you to execute a series of test cases with
    reporting that works with the greentea test tool
    (https://github.com/ARMmbed/greentea)

The following changes were made when bringing these frameworks into the
tree:

- References to `mbed_drivers/mbed.h` within utest's tests were migrated
  to `mbed.h`
- The yotta file `module.json` was removed from `greentea-client` and
  `unity`
  - `coverage.json` was also removed from `greentea-client`
- `.gitignore` and `.gitattributes` were removed from `greentea-client`
- Apache 2.0 license files were removed from `greentea-client`

This also brings in a number of tests that have been newly written or ported from various sources:

- `TESTS/integration` - Very basic tests, used to check if testing frameworks are working correctly
- `TESTS/mbed_drivers` (Thanks @PrzemekWirkus!) - TESTS ported from mbed OS 3.0 (https://github.com/ARMmbed/mbed-drivers)
- `TESTS/mbedmicro-mbed` (Thanks @PrzemekWirkus!) - Tests that weren't covered by `TESTS/mbed_drivers` that currently live in `libraries/tests/mbed`
- `TESTS/mbedmicro-rtos-mbed` (Thanks @PrzemekWirkus!) - Ported tests that currently live in `libraries/tests/rtos/mbed`
- `TESTS/storage_abstraction` (Thanks @rgrover!) - Tests for the storage_abstraction hal
2016-07-20 12:41:26 -05:00
neilt6 511117acdf [RTOS] Updated RtosTimer to use Callback
Updated the RtosTimer class to use Callback in order to be consistent
with the updated Thread class.
2016-07-20 10:51:45 -06:00