Commit Graph

15 Commits (d338e672de5e419dc080ddecde48eb8288c796af)

Author SHA1 Message Date
Kevin Bracey 123c182033 Use SingletonPtr in Nanostack HAL
Avoid static data/code overhead when Nanostack HAL isn't in use.
Preparation for removal of FEATURE_COMMON_PAL.
2018-04-18 10:40:56 +03:00
Tero Jääskö a23b7cffea nanostack-hal: eventloop: silence compiler warning for unused variable
Compiler reminded that a variable declaration was left behind when
the code using it was put behind #ifdef. Add the missing #ifdef.

Warning being fixed:
---8<---8<----
[Warning] ns_event_loop.c@44,0:  #177-D: variable "event_thread_id"
was declared but never referenced
2018-04-13 13:49:22 +03:00
Tero Jääskö b710f08b3a nanostack-hal: timer: conditionalize the use of high pri event thread
nanostack-hal.critical-section-usable-from-interrupt -tunable was
previously added to optionally make critical section code interrupt safe.
The IRQ safe critical section is a prequisite for interrupt safe timer
callbacks.

The same flag can be used to enable calling of the timer callbacks
directly from the timer interrupt context, without bouncing them via
event thread. This removes the code and RAM consumed by EventQueue
and the thread serving the high priority events.

If the system does not have any dependencies on mbed_shared_queues,
by setting this flag the static RAM usage is now further reduced
by ~1600 bytes and code size by 4KB.

Note: the default behavior is not changed, one needs to override the
"nanostack-hal.critical-section-usable-from-interrupt" to have "true".
2018-04-13 13:49:15 +03:00
Tero Jääskö f0cc00ef3b nanostack-hal: add alternative critical section implementation
The nanostack hal's critical section uses a mutex for mutual exclusion,
which is nice for many use cases. But when one needs to use the critical
section from interrupts, the RTX will have a assertion failure and panic.

Add a configurable for mbed_lib, which can be used to enable a alternative
version of critical section, which uses the underlying OS primitives, which
disables the interrupts.

Note: the default behavior is not changed, one needs to override the
"nanostack-hal.critical-section-usable-from-interrupt" to have "true".

Reason for this change is that there is a need for sending events using
nanostack event queue from interrupt context, eg. from a socket callback.
2018-02-27 17:12:55 +02:00
Tero Jääskö 09b8245cba nanostack-hal: remove connection from event loop init and dispatch thread
The thread flag signaling mechanism is problematic if a separate event
loop thread is not used. The problem is, that one needs to know the
thread id of the loop dispathcer, and that knowledge can be derived
only from the caller thread of the initialization function.

Remove the magic connection from caller thread to dispatcher thread
by using event flags instead of thread flags on signaling. As the
event flags require the massive amount 20 bytes of RAM whereas
thread flags requires none, keep the code behind flag.
2018-02-23 15:37:33 +02:00
Tero Jääskö aed2a0cd9f nanostack-hal: modify eventloop to allow running it in a main thread
The separate eventloop thread may not be necessary on all uses, as one
can use the existing main thread for event dispatching. Add a
conditional nanostack-hal.event-loop-dispatch-from-application, which
disables the thread creation.

Note: the ns_hal_init must be ran from the same thread which will be
used to execute the event loop later.
2018-02-23 15:37:32 +02:00
Kevin Bracey b55af5c620 Use shared event queue for timer
Don't create our own timer thread - use the shared event queue.
2017-09-01 13:26:09 +03:00
Seppo Takalo 2f5b03e876 Fix typo that used 16kB for stack.
Intend is to use 2kB for stack, not 16kB, but the divide operand
has been forgotten here.
2017-06-07 15:36:09 +03:00
Russ Butler 96bd943ea2 RTX5: Enable priority inheritance and robust mode
Add the attribute flash to enable priority inheritance and robust mode.
The robust flag allows mutexes held by terminated threads to be
properly released.
2017-06-02 23:50:36 -05:00
Bartek Szatkowski b01f13d1a0 Make sure all system threads and mutexes have clear names 2017-05-30 18:55:55 +01:00
Bartek Szatkowski b793a3fb89 Update codebase for CMSIS5/RTX5
Update all of mbed-os to use RTX5.
2017-05-30 18:55:52 +01:00
Sam Grove c940d0e20a Merge pull request #2551 from ARMmbed/runtime_configuration
Remove IPv6 link time dependency on an RF phy
2016-09-16 17:17:51 -05:00
Arto Kinnunen 1b46d2bbf9 Avoid type collision by renaming callback variable
Build jobs are failing due build error "arm_hal_timer.cpp:50:5:
error: reference to 'callback' is ambiguous".

Fix the build error by renaming callback to arm_hal_callback to
avoid collision with callback defined in ./mbed-os/hal/api/Callback.h
2016-09-13 15:02:43 +03:00
Russ Butler 126c8be053 Remove IPv6 link time dependency on an RF phy
Create a Nanostack rf phy class to wrap various rf physical interfaces.
Allow this phy to be set at runtime rather than compile time.
2016-08-31 15:24:51 -05:00
Russ Butler cef844f6bf Break apart client and nanostack dependencies
Move the library files used by both nanostack and client into a common
location.  This allows both client and nanostack to be built stand-alone.

The patch moves the following libraries into a common location:
-mbed-client-c
-mbed-client-randlib
-mbed-trace
-nanostack-hal-mbed-cmsis-rtos
-nanostack-libservice
-sal-stack-nanostack-eventloop

And moves the library 'coap-service' from client into nanostack.
2016-07-26 00:00:20 -05:00