Commit Graph

1031 Commits (4b3cddff2a66d5b13ad861e8782d1d630c2479c1)

Author SHA1 Message Date
Martin Kojtal 6684570dea
Merge pull request #9580 from kjbracey-arm/sharedptr_reset
Fix SharedPtr::reset
2019-02-04 14:41:34 +01:00
Kevin Bracey 94f5646303 Atomics: make barrier placement uniform 2019-02-04 15:08:53 +02:00
Kevin Bracey 52aac4c756 SharedPtr: use atomic load
Use atomic load to read use count.
2019-02-01 12:31:41 +02:00
Kevin Bracey 0b27c9149e Fix SharedPtr::reset
SharedPtr::reset did not actually set the stored pointer value.
Correct this, with other minor tidies:

* Ensure counter is set to NULL if pointer is reset to NULL
* Be consistent about not clearing pointers in decrement_counter().
2019-02-01 10:34:34 +02:00
Cruz Monrreal 0fb2870cfc
Merge pull request #9530 from kjbracey-arm/atomic_singletonptr
Use atomics for double-checked locks (SingletonPtr + __cxa_guard)
2019-01-31 10:22:39 -06:00
Seppo Takalo 207eddc321 Fix copy constructors of Callback objects
->move() operator was not touching unused data fields, therefore
leaving uninitialised data and failing the comparison.
Fixed by initialising all fields to zero before moving.
2019-01-31 15:04:24 +02:00
Cruz Monrreal cc94690363
Merge pull request #9544 from kjbracey-arm/reboot_limit_fix
Halt to enforce reboot limit once only
2019-01-30 17:32:55 -06:00
Kevin Bracey 3056ba730c mbed_die: Use wait_us not wait_ms
mbed_die was calling wait_ms in a critical section - this is deprecated
behaviour, and caused a fatal error in debug builds, potentially leading
to an infinite reboot loop if this was caused due to a reboot limit
halt.

Switch to using wait_us - this is safe in a critical section. This does
trigger a call to mbed_warning, due to the large parameter, but that is
harmless - it doesn't output anything to the console, and won't
overwrite the error context if it already contains something.
2019-01-30 13:29:13 +02:00
Kevin Bracey d55640340d Halt to enforce reboot limit once only
The pre-main check of error_reboot_count was applied repeatedly on
every boot, meaning that once the reboot limit was hit, every subsequent
reset would halt before main, until something managed to clear
or corrupt the error context.

Set the is_error_processed flag before halting, so that when an external
agent resets us while we're halted, we do not report the error and halt
again.
2019-01-30 12:58:25 +02:00
Kevin Bracey 6e3c492cd8 mbed_retarget.cpp: Combine ARMC5 and ARMC6 tests
A couple of places in mbed_retarget.cpp were testing for either ARMC5 or
ARMC6 in a long-winded fashion. Testing for __ARMCC_VERSION being
defined is sufficient.
2019-01-29 17:49:19 +02:00
Kevin Bracey c55329157a Use atomics in __cxa_guard functions
Similar to SingletonPtr, use atomic accesses when loading the guard word
outside the lock, and when storing, to ensure no races for threads that
don't take the lock.

Lack of atomics unlikely to be a problem in current builds, but code
could conceivably be subject to reordering if link-time optimisation was
enabled.
2019-01-29 17:49:18 +02:00
Kevin Bracey 6e41d6cdb7 Make SingletonPtr safe using atomics
SingletonPtr's implementation wasn't totally safe - see "C++ and the
Perils of Double-Checked Locking"by Meyers and Alexandrescu. No problems
observed in practice, but it was potentially susceptible to compiler
optimisation (or maybe even SMP issues).

Now that we have atomic loads and stores, the function can be made safe,
avoiding any potential races for threads that don't take the lock:
ensure that the unlocked load is atomic, and that the pointer store is
atomic.

See https://preshing.com/20130930/double-checked-locking-is-fixed-in-cpp11/
for more discussion.
2019-01-29 16:01:33 +02:00
Kevin Bracey f60bb8f3a7 Second barrier for core_util_atomic_flag_clear
As barriers were added in #9247, review comments pointed out that atomic
stores needed a second barrier, and they got one. But atomic_flag_clear
was missed.
2019-01-29 10:45:20 +02:00
Senthil Ramakrishnan d0b95031c5 Print crash report reboot messages only for non-release builds 2019-01-23 17:40:05 -06:00
Senthil Ramakrishnan cc5969b1ec Remove printf completely and fix the optimization check 2019-01-22 16:04:47 -06:00
Martin Kojtal 4019efb21d
Merge pull request #9399 from paul-szczepanek-arm/fix-null-check
BLE: fix missing null checks on Gap event handler
2019-01-21 13:43:16 +01:00
paul-szczepanek-arm 42e4290160 error when there is no handler 2019-01-18 14:55:38 +00:00
Kevin Bracey 703e44031c Add atomic loads and stores and barriers
Add atomic load and store functions, and add barriers to the existing atomic
functions.

File currently has no explicit barriers - we don't support SMP, so don't
need CPU barriers.

But we do need to worry about compiler barriers - particularly if link time
optimisation is activated so that the compiler can see inside these
functions. The assembler or intrinsics that access PRIMASK for
enter/exit critical act as barriers, but LDREX, STREX and simple
volatile pointer loads and stores do not.
2019-01-18 09:32:04 +02:00
Martin Kojtal 53bb9868ed
Merge pull request #9405 from cmonr/fix-doxy
Travis: Fix doxy-spellcheck job
2019-01-17 17:21:14 +01:00
Martin Kojtal a1daecb200
Merge pull request #9280 from deepikabhavnani/refactor_a
Sleep manager implements all the API's in platform file
2019-01-17 12:40:03 +01:00
Cruz Monrreal II 26696c2f5b Fixed rtc doxygen spelling errors 2019-01-16 23:30:03 -06:00
Cruz Monrreal 5dbb4b9de9
Merge pull request #8497 from kegilbert/gettimeofday_patch
Add get/settimeofday retargets
2019-01-16 22:07:35 -06:00
Deepika a1a90518ed Update the header files
File was moved from hal -> platform folder, hence includes should be
changed accordingly.
2019-01-15 11:47:51 -06:00
deepikabhavnani e2a7b89a90 Sleep manager implements all the API's in platform/mbed_sleep_manager.changes
Not sure why mbed_sleep_manager.c was in hal, moving it to platform
2019-01-15 11:47:51 -06:00
kegilbert dafb01c755 Add get/settimeofday retargets 2019-01-11 14:30:44 -06:00
kegilbert 70b9b753db Add doxygen spellcheck jobs to Travis
Currently tests
    - drivers
    - platform
    - rtos
    - events
    - features/netsocket
2019-01-11 10:22:15 -06:00
Cruz Monrreal f8d7c31a9b
Merge pull request #9188 from SenRamakri/sen_ErrorUrlEnhance
Add more information to error url to enhance error analytics
2019-01-10 00:12:46 -06:00
Martin Kojtal 965f15da82
Merge pull request #9231 from kjbracey-arm/critical_volatile
critical sections: remove unnecessary volatile
2019-01-07 16:26:38 +00:00
Senthil Ramakrishnan f10ed4b286 Add more information to error url to enhance error analytics 2019-01-04 09:24:31 -06:00
bcostm f3b304d3af NUCLEO_H743ZI: enable crash capture 2019-01-04 10:03:36 +01:00
Kevin Bracey 70af016348 critical sections: remove unnecessary volatile
Critical section count/state variables are synchronised by IRQ disabling and
critical section calls themselves, so do not need to be volatile.

This eliminates a couple of unnecessary reads of the counter variable.
2019-01-03 11:06:44 +02:00
Senthil Ramakrishnan daa8b0e5c1 Disable printf in crash reporting for release builds 2018-12-20 13:47:35 -06:00
Alastair D'Silva 2617c5d55b Don't use define checks on DEVICE_FOO macros (mbed code)
The DEVICE_FOO macros are always defined (either 0 or 1).

This patch replaces any instances of a define check on a DEVICE_FOO
macro with value test instead.

Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
2018-12-20 10:16:42 +11:00
Cruz Monrreal 6f576009c7
Merge pull request #9061 from kjbracey-arm/more_mpu_work
More MPU work
2018-12-19 12:32:54 -06:00
Cruz Monrreal 80c6f5f8ee
Merge pull request #8972 from kjbracey-arm/merge_file_truncate
Merge feature-posix branch (FileHandle::truncate)
2018-12-17 14:49:56 -06:00
Kevin Bracey ae17f6ebba Add FileHandle::truncate and ftruncate
Add support for file truncation (or extension) to the abstract API.

No hooks to actual implementations in this commit.
2018-12-14 19:29:28 +02:00
Kevin Bracey bd413f1d82 Disable write buffer in debug builds (M3/M4)
As part of work to improve the debugging of exceptions, have
Mbed OS make an effort to make exceptions more precise in debug builds
at the cost of performance.

Related pyOCD work:

   https://github.com/mbedmicro/pyOCD/pull/430
2018-12-13 16:32:38 +02:00
Russ Butler cdc61c5954 Use MPU platform deinit rather than hal free
Use the MPU through the platform layer rather than through the HAL.
2018-12-11 18:59:58 +02:00
Kevin Bracey 770baa22ea Rework MPU use option
Make the option positively named, and as it is a platform config
option make sure it only affects platform code.

HAL functions still remain available even if platform is told not
to use them.
2018-12-11 13:03:59 +02:00
Russ Butler 2af6642f68 Add a platform config to disable the MPU
Add the platform config DISABLE_MPU to allow the MPU to be disabled
from an application.
2018-12-11 13:03:58 +02:00
Cruz Monrreal 89527604ae
Merge pull request #9033 from fkjagodzinski/fix-stream
Fix Stream for IAR toolchain
2018-12-10 19:20:06 -06:00
Russ Butler 390ef301a8 Add header to fix compile failures
Add the header platform/mbed_assert.h to fix build errors with
platform/mbed_mpu_mgmt.c.
2018-12-10 12:54:17 -06:00
Kevin Bracey 1289406f9f Use MBED_ASSERT in MPU manager
MPU lock under- or overflow is not a likely random runtime failure - it
will be a mismatched lock/unlock programming error, so should be
detected during development.  Make the checks asserts so they can be
left out from release builds.  MBED_ASSERT is also a bit smaller than
MBED_ERROR in develop builds.
2018-12-10 15:53:35 +02:00
Filip Jagodzinski 89a475bc4e Fix: Stream: Replace fflush() with fseek()
This is a follow-up to PR #8331; fixing the Stream methods not covered
there.
2018-12-10 14:31:30 +01:00
Kevin Bracey e2f6025b17 Exclude MPU manager code if MPU disabled
Save around 400 bytes from images using FlashIAP by omitting MPU manager
reference counting if DEVICE_MPU is 0.
2018-12-10 14:44:03 +02:00
Martin Kojtal 8230fd7784
Merge pull request #8888 from kegilbert/sys-struct-whitespace-patch
Align comment block in sys stats struct
2018-12-03 13:40:36 +01:00
Martin Kojtal bf36ff77c1
Merge pull request #8855 from michalpasztamobica/warnings_fix
Fix compilation warnings (apart from nanostack)
2018-12-03 13:31:55 +01:00
Martin Kojtal 226219f3f2 rtos: fix style in rtos wait
Found during editing copyright message
2018-11-29 10:51:18 +00:00
Martin Kojtal ad759b7749 platform: add spdx license 2018-11-28 10:39:52 +00:00
Martin Kojtal 52822cb8af
Merge pull request #8871 from c1728p9/mpu
MPU API (Reopened)
2018-11-28 10:28:32 +01:00
Martin Kojtal 4758ddd2c6
Merge pull request #8738 from pan-/ble-extended-advertising
Ble extended advertising
2018-11-28 09:39:13 +01:00
kegilbert 31bbbff08a Align comment block in sys stats struct 2018-11-27 18:06:26 -06:00
Russ Butler caa7b93921 Rename lock functions and classes
Invert the name of the lock functions and classes so you are not
locking a negative.
2018-11-27 09:29:32 +00:00
Russ Butler 1821d37621 Overhaul MPU for new requirements
Make the following changes:
-Allow a vector specific ARM MPU driver by defining MBED_MPU_CUSTOM
-Allow ROM address to be configured for ARMv7-M devices by
    setting the define MBED_MPU_ROM_END
-Add ROM write protection
    -Add new functions and lock
    -enable at boot
    -disable during flash programming
2018-11-27 09:29:32 +00:00
Russ Butler d27566c955 Rename MpuXnLock
Rename MpuXnLock  to ScopedMpuXnLock so it has the same naming
convention as ScopedMutexLock. Also make this class inherit from
NonCopyable to prevent misuse.
2018-11-27 09:29:32 +00:00
Russ Butler ab18442988 Add an RAII class for MPU execute never
Add the class MpuXnLock which uses RAII  to allow execution from RAM
in a block of code.
2018-11-27 09:29:31 +00:00
Russ Butler ecd0414494 Integrate MPU with mbed
Enable the MPU as part of the boot sequence and disable it before
starting a new application. Also add reference counted MPU lock and
unlock functions to allow code to execute from ram when necessary.
2018-11-27 09:29:31 +00:00
Martin Kojtal 29b64e15bf
Merge pull request #8761 from kegilbert/add-all-stats-config-opt
Add MBED_ALL_STATS_ENABLED to config system
2018-11-27 09:12:17 +01:00
Martin Kojtal 436644b7bd
Merge pull request #7760 from ARMmbed/feature_namespace
Give an option to remove 'using namespace'
2018-11-27 09:04:58 +01:00
kegilbert 2a9c930f9b Add MBED_ALL_STATS_ENABLED to config system 2018-11-26 16:59:33 -06:00
deepikabhavnani da69da972f Add BlockDevice and Filesystem classes inside mbed namespace.
Adding new modules inside the namespace could be breaking change for existing code base
hence add `using namespace::class` for classes newly added to mbed namespace to maintian
backwards compatibility.

MBED_NO_GLOBAL_USING_DIRECTIVE is added to remove auto-addition of namespace
Macro guard `MBED_NO_GLOBAL_USING_DIRECTIVE` is added around namespace, to avoid
polluting users namespace.
2018-11-26 13:35:40 -06:00
deepikabhavnani 2df0289ae9 Resolve build issue for unittest
Error Resolved here is:
SingletonPtr.h:93:13: error: ‘NULL’ was not declared in this scope
2018-11-26 09:53:19 -06:00
Deepika f6c1a40b29 Add config options for socket statistics
1. MBED_CONF_NSAPI_SOCKET_STATS_ENABLE to enable the statistics
2. MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT max sockets statistics cached
2018-11-26 09:42:45 -06:00
Deepika 09b4bc07ce This is the initial version of stats implementation in network layer.
SocketStats Class is added to collect and provide the statistics information.
In this phase only socket information is collected and max sockets that can
be recorded at any time are configurable through 'MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT'

Network statistics can be enabled through a macro MBED_NW_STATS_ENABLED

More information on design is captured in #8743
2018-11-26 09:42:39 -06:00
Michal Paszta e101943cce Fix compilation warnings (apart from nanostack) 2018-11-26 14:27:48 +01:00
Vincent Coubard 1a14453da1 BLE: Add mechanism to track use of non compatible scan API. 2018-11-26 10:24:30 +00:00
Vincent Coubard 732b4255ce revert toolchain changes 2018-11-26 10:21:32 +00:00
Vincent Coubard 0c1e01952b Compilation fixes 2018-11-26 10:21:32 +00:00
Nir Sonnenschein 0283bb84e4
Merge pull request #8667 from davidsaada/kvstore_integration
KVStore & derived classes: design docs, implementation & configuration
2018-11-25 07:30:53 +02:00
David Saada e9c25e23a5 KVStore & derived classes: design docs, implementation & configuration
Implement the following:
KVStore base class
TDBStore class
FileSystemStore class
SecureStore class
Global APIs
Configuration framework
Design documentation
2018-11-24 17:43:35 +02:00
Martin Kojtal 52aea31655
Merge pull request #8702 from SenRamakri/sen_CrashReportingImpl
Crash Reporting implementation
2018-11-23 20:24:53 +01:00
Martin Kojtal 70dfbbfee4
Merge pull request #8189 from deepikabhavnani/wait_updated
Wait API updated to remove deepsleep lock
2018-11-22 11:01:27 +01:00
Martin Kojtal 5b42e2886f
Merge pull request #8607 from aashishc1988/ram_rom_fetch
Fetch ram/rom start/size
2018-11-22 10:49:50 +01:00
Senthil Ramakrishnan f59b99d889 Removing support for printing error-report after reboot and other minor fixes 2018-11-18 22:42:37 -06:00
Senthil Ramakrishnan 423b52e1c3 Fix crc calculation error, code-style issues and other fixes 2018-11-16 17:24:52 -06:00
Senthil Ramakrishnan a07a373c9f Change the reboot-max value semantics and code style and other fixes 2018-11-16 14:00:00 -06:00
Senthil Ramakrishnan 254062fc5a Add thread safety across reboot error info operations 2018-11-16 14:00:00 -06:00
Senthil Ramakrishnan 9ac31dbaef Enable crash capture feature for platforms with linkerscript changes 2018-11-16 13:59:59 -06:00
Senthil Ramakrishnan 6181394e37 Error and fault handling changes for crash reporting 2018-11-16 13:59:59 -06:00
Cruz Monrreal II 5c1c7bf71f Merge branch 'fix_astyle_error' of ssh://github.com/0xc0170/mbed-os into rollup-b.1 2018-11-15 18:26:09 -06:00
Aashish chaddha 0c594a42dc The check for managed bootloader support should be in regions and we need a try/catch when we call it.
Moved "bootloader_not_supported" check to where it was and handle that exception at only one place.

Removed ram/rom size info for realtek from targets.json. THe info we have is not correct.

was Not handling config exceptions from regions and ram_regions property

adding rom-ram info for REALTEK_RTL8195AM
2018-11-15 15:28:14 -06:00
Martin Kojtal 2422949398 Merge branch 'platform-lib-whitespace-patch' of https://github.com/kegilbert/mbed-os into dev_rollup 2018-11-15 13:59:30 +00:00
Martin Kojtal 3d859575d2 platform: fix coding style 2018-11-15 07:20:11 +00:00
Martin Kojtal 43615baf0e CThunkbase: fix coding style 2018-11-15 07:20:09 +00:00
Deepika ad736e9894 Add RAM/ROM memory statistics to system stats structure
Internal RAM / ROM memory size and start address of target can be
fetched using `mbed_stats_sys_get()` API.
2018-11-14 09:51:33 -06:00
kegilbert 44d3e62835 Patch whitespace inconsistencies in platform lib file 2018-11-13 19:08:44 -06:00
shileiyu 627064297e New target UNO_91H from RDA Microelectronics. 2018-11-10 18:15:26 +08:00
Cruz Monrreal e635613b28
Merge pull request #7849 from TacoGrandeTX/fix_rtc_settime
Low power timer needs to be reset when setting time
2018-11-08 10:50:04 -06:00
Cruz Monrreal 0fe6369950
Merge pull request #8488 from c1728p9/cthunk_overhaul
Rewrite CThunk so it does not execute from ram
2018-11-07 19:15:14 -06:00
Russ Butler 5a8727623b Rewrite CThunk so it does not execute from ram
Modify the implementation of CThunk so it does not execute from ram.
Instead is uses an array of functions in flash which can be allocated
as a thunk. The number of CThunks that can be used by an application
can be configured with MBED_CONF_PLATFORM_CTHUNK_COUNT_MAX.
2018-11-06 09:49:56 -06:00
Martin Kojtal 2ae9981bea Merge branch 'platform-doxy-typo-fix' of https://github.com/kegilbert/mbed-os into dev_rollup 2018-11-06 12:10:26 +00:00
RFulchiero d82990cd25 Low power timer needs to be reset when setting time.
Reset _rtc_lp_timer only if DEVICE_LPTICKER is defined.
2018-11-01 17:11:45 -05:00
Cruz Monrreal 430fb3e7ba
Merge pull request #8601 from kjbracey-arm/error_fmtcheck
Add format checking to printf-type APIs
2018-11-01 16:09:05 -05:00
kegilbert 766359c7c5 Typo fixes in Doxygen for Platform 2018-11-01 12:10:08 -05:00
Cruz Monrreal 3d09f3bd98
Merge pull request #8598 from VeijoPesonen/fix_atcmdparser_oob_handling
ATCmdParser: Fix OOB handling performance-wise
2018-10-31 18:52:21 -05:00
Cruz Monrreal b35799dd8c
Merge pull request #8329 from paul-szczepanek-arm/fix-namespace
Platform: fix missing namespace for SharedPtr
2018-10-31 12:35:25 -05:00
Amanda Butler c58c80e042
Make minor copy edits to mbed_wait_api.h
Make minor edits to existing text.
2018-10-31 11:12:35 -05:00
Martin Kojtal 56293af0e7
Merge pull request #8584 from kjbracey-arm/noreturn
system_reset is MBED_NORETURN
2018-10-31 14:46:46 +01:00
Kevin Bracey 638e071820 mbed_error.c: Fix format specifiers 2018-10-31 14:49:22 +02:00
Kevin Bracey 814d631c55 Add format checking to Stream methods 2018-10-31 14:26:35 +02:00
Kevin Bracey 51df320614 Add format check to debug() 2018-10-31 14:26:33 +02:00
Kevin Bracey 1f56fbe397 Add format checking to mbed_error_printf 2018-10-31 14:26:29 +02:00
Kevin Bracey 644022890c Fixes ATCmdParser OOB handling performance-wise
The issue is that the process_oob check would only return immediately
if no data at all on entry, or when receiving a known OOB. Any other
line noise or unknown OOBs could lead to a timeout delay - read the
noise or unknown OOB then timeout waiting for another line of input.

This revised version modifies the parser to recheck readable after each
line end when only looking for OOBs, so it can immediate exit.
2018-10-31 11:28:17 +02:00
Deepika Bhavnani 5a87f04872
Update doc for wait_ms 2018-10-30 13:07:59 -05:00
Amanda Butler f5e28fe729
Edit mbed_wait_api.h
Standardize unit of time measurements, and change passive to active voice.
2018-10-30 10:06:30 -05:00
Kevin Bracey e9ccabcadc system_reset is MBED_NORETURN 2018-10-30 12:39:03 +02:00
Martin Kojtal 27c0affef7
Merge pull request #8578 from cmonr/rollup
Rollup PR: Samll docs changes
2018-10-30 10:03:01 +01:00
Cruz Monrreal 5ed07c2dd4
Merge pull request #8328 from kjbracey-arm/noreturn
Error path tightening: use MBED_NORETURN; add+use core_util_atomic_flag
2018-10-29 20:49:54 -05:00
Cruz Monrreal II 8b58ed75b0 Merge branch 'kegilbert-patch-6' of ssh://github.com/ARMmbed/mbed-os into rollup 2018-10-29 19:13:29 -05:00
Cruz Monrreal c9eaddd7e0
Merge pull request #8487 from kegilbert/mbed_mem_trace_config_patch2
Update mbed_mem_tracing config option
2018-10-29 18:53:25 -05:00
Amanda Butler 9ab13df3bd
Make changes from comments to FileHandle.h
Address comments.
2018-10-29 14:09:16 -05:00
Kevin Bracey ea16a6ba1d Add MBED_NORETURN attributes
Save some ROM space by putting MBED_NORETURN attributes on error
functions and failed asserts.

mbed_error was documented as returning an error code. It never
actually could return, so documentation updated, but return type
kept.
2018-10-29 13:58:06 +02:00
Kevin Bracey 57748bd46e Adjust error paths locking and returning
Various fixes in preparation for making sure error calls do not return.

* Clear out handle_error's use of error_in_progress as a sort of spin
  lock; this is most likely to deadlock if ever activated, and conflicts
  with error's use of error_in_progress. Use a normal critical section lock.

* Make error use same mbed_halt_system helper as mbed_error.

* Make error's recursion check avoid print and proceed to halt, rather
  than returning.

* Make mbed_error use error_in_progress to avoid recursion in same way
  as error() does.

* Give mbed_halt_system its own recursion check in case of error in
  mbed_die - give it a simple fallback.

* Make the in_progress things properly atomic, just in case.
2018-10-29 13:58:06 +02:00
Kevin Bracey c32984c3a8 Add atomic_flag utility
An atomic flag primitive is sometimes wanted, and it is cumbersome to
create it from the compare-and-swap operation - cumbersome enough that
people often don't bother.

Put in a core_util_atomic_flag that follows the C11/C++11 atomic_flag
API, such that it could be mapped to it with #define later.
2018-10-29 13:58:05 +02:00
Kevin Bracey 0b27736536 Remove sleep manager tests that trigger mbed_error
Intercepting mbed_error will be too hard after mbed_error becomes
[[noreturn]], so remove tests that do this.
2018-10-29 13:58:05 +02:00
Cruz Monrreal d23d7855fc
Merge pull request #8552 from cmonr/rollup
Rollup PR: UK Docathon pt2
2018-10-27 08:27:02 -05:00
kegilbert a2ac895c37 This reverts commit 9b53d1256fb358407acbaf81c70b71d937b1f7cd.i
Move the memory tracing enabled macro to a config option but
revert the !defined -> #if changes to no longer cause breaking
changes.
2018-10-26 17:35:33 -05:00
Cruz Monrreal II 99e198aa4f Merge branch 'non-copyable-doc' of ssh://github.com/pan-/mbed into rollup 2018-10-26 11:43:04 -05:00
Cruz Monrreal c25f15615b
Merge pull request #8526 from michalpasztamobica/windows_unittest_compilation_fix
Fix for unit test build on Windows machines
2018-10-26 11:38:59 -05:00
Mel W 47adbd258c
Minor streamlining of long sentences 2018-10-26 15:28:38 +03:00
paul-szczepanek-arm e4f3768c6c protect using with macro 2018-10-26 08:41:58 +01:00
Cruz Monrreal II 5da4fe7e20 Merge branch 'docs_update-platformmutex' of ssh://github.com/fkjagodzinski/mbed-os into rollup 2018-10-25 21:49:39 -05:00
Deepika 957f240450 Remove deep sleep lock from wait_ms
API's updated as:
1. wait(float) calls wait_ms for >=0.01s and not in interrupt, else wait_us.

2. wait_ms() is just the thread sleep and doesn't lock hardware sleep.
In order to have backward compatibility, if used in ISR `wait_us` is
called if MBED_TRAP_ERRORS_ENABLED is false

3. wait_us() is a ticker-based wait, always spinning.
2018-10-25 14:15:08 -05:00
Cruz Monrreal de6ba91644
Merge pull request #8365 from 0xc0170/fix_astyle_common2
Fix astyle for tests folders
2018-10-25 10:41:13 -05:00
Cruz Monrreal 9c59d9acc3
Merge pull request #7864 from deepikabhavnani/remove_mbed_h
Add required header file and namespace element instead add all.
2018-10-25 09:26:24 -05:00
Martin Kojtal ca444a7f01 platform: fix astyle 2018-10-25 09:58:18 +01:00
Michal Paszta 0b3593f576 Fix for unit test build on Windows machines
In case MINGW is detected - define MBED_WEAK to be empty, as Windows
executables cannot handle the weak attribute.
2018-10-25 08:27:52 +03:00
Amanda Butler 1131d844c9
Edit PlatformMutex.h
Change passive to active voice.
2018-10-24 16:39:45 -05:00
Filip Jagodzinski e095c78c66 PlatformMutex docs update 2018-10-24 18:07:46 +02:00
Vincent Coubard abeab68729
NonCopyable: Fix edit. 2018-10-24 08:35:10 +01:00
Cruz Monrreal II fe1d6b0565 Merge branch 'mbed_rtc_time_example_fix' of ssh://github.com/mprse/mbed-os into rollup 2018-10-23 22:38:42 -05:00
Cruz Monrreal II 408051ad40 Merge branch 'span-doc' of ssh://github.com/pan-/mbed into rollup 2018-10-23 22:38:35 -05:00
Amanda Butler acaf96834e
Copy edit NonCopyable.h
Make minor copy edits, mostly to existing text before this PR.
2018-10-23 14:50:37 -05:00
Vincent Coubard 0d2a8e0417 NonCopyable: Add into platform doc group. 2018-10-23 14:41:38 +01:00
Vincent Coubard 3fe42b6c0d NonCopyable: Rewrite of class documentation. 2018-10-23 14:34:43 +01:00
Vincent Coubard 1e30ed599e Span: define doc groups. 2018-10-23 12:15:47 +01:00
Vincent Coubard 29f7d9d508 NonCopyable: Prevent doc generation for protected member function. 2018-10-23 12:11:02 +01:00
Vincent Coubard c956a93252 Span: Improve subspan return type.
This clarifies code and documentation generated.
2018-10-23 11:39:27 +01:00
Vincent Coubard 03d308d114 Span: Add related non member function to class documentation. 2018-10-23 11:38:37 +01:00
Vincent Coubard a0786adbc4 Span: Improve documentation
Makes doxygen reference to SPAN_DYNAMIC_EXTENT by name instead of the macro expansion -1.
Add reference to the macro in the class documentation.
2018-10-23 11:38:01 +01:00
Przemyslaw Stekiel 0a1e3a0c52 mbed_rtc_time.h - documentation fix
Make example code consistent with:
https://os.mbed.com/teams/mbed_example/code/time_HelloWorld/file/0c6401d671c6/main.cpp/
2018-10-23 12:18:45 +02:00
Kevin Bracey 500e37f3a2 mbed_error: Always print full filename if passed
Don't extract filename from the stored error - print it directly.

Use "mbed_error_puts" for both error message and filename to avoid
buffer length limits.

Switch to puts also fixes the potential problem of an error message
containing a '%' upsetting the formatter - it should have been
mbed_printf_error("%s", error_msg) in the first place.
2018-10-22 09:53:21 +03:00
Kevin Bracey 10fe32277d mbed_error: Print thread names
As part of this, don't show empty current thread info in non-RTOS
build.
2018-10-22 09:53:21 +03:00
Kevin Bracey c3d0e2c2ef mbed_error: Correct full thread info print
Casts were covering up a type mismatch.

Print the "ready" list, and remove the explicit print of the idle thread
(it should be in the ready list).
2018-10-22 09:53:21 +03:00
Kevin Bracey 25d0fbaaeb mbed_error: remove redundant memset
If we want zero-fill, strncpy does it anyway.
2018-10-22 09:53:20 +03:00
Kevin Bracey c2076b5ec4 mbed_error: Simplify read of stack pointer 2018-10-22 09:53:20 +03:00
Kevin Bracey e20edbdb46 Add mbed_error_puts
This is potentially useful for printing long strings such as filenames
from assert messages, avoiding the buffer limit inherent in
mbed_error_printf.
2018-10-22 09:53:20 +03:00
Cruz Monrreal II 1c1432e8e7 Merge branch 'kegilbert-patch-6-1' of ssh://github.com/ARMmbed/mbed-os into rollup 2018-10-18 20:01:36 -05:00
Amanda Butler 1f9ef36483
Edit DirHandle.h
Edit for active voice.
2018-10-18 11:11:03 -05:00
Cruz Monrreal e698f0b29f
Merge pull request #8076 from kjbracey-arm/error_stderr
Error output improvements
2018-10-18 08:39:17 -05:00
Cruz Monrreal ad6ada014a
Merge pull request #7948 from kegilbert/mbed_mem_trace_log_toggle
Add enable/disable cb function in mem_trace
2018-10-18 08:38:26 -05:00
Amanda Butler 7d604fedf8 Fix typo in DirHandle.md
Add "s" for agreement.
2018-10-17 22:42:28 -05:00
Kevin Gilbert 6b3bf28d0d Move inline code snippets to code blocks 2018-10-17 22:42:19 -05:00
Cruz Monrreal II 2a68339867 Merge branch 'typo-patch-underlying-1' of ssh://github.com/ARMmbed/mbed-os into rollup 2018-10-17 21:38:45 -05:00
Cruz Monrreal II 9000821b4d Merge branch 'kegilbert-patch-2' of ssh://github.com/ARMmbed/mbed-os into rollup 2018-10-17 21:38:44 -05:00
Cruz Monrreal II 3d753290c7 Merge branch 'cb_doxytypo_patch' of ssh://github.com/ARMmbed/mbed-os into rollup 2018-10-17 21:38:42 -05:00
Cruz Monrreal II ecd109e0be Merge branch 'kegilbert-patch-3' of ssh://github.com/ARMmbed/mbed-os into rollup 2018-10-17 21:38:41 -05:00
Cruz Monrreal II f8997fa1a4 Merge branch 'kegilbert-patch-4' of ssh://github.com/ARMmbed/mbed-os into rollup 2018-10-17 21:38:40 -05:00
Cruz Monrreal II ae28c74690 Merge branch 'kegilbert-patch-5' of ssh://github.com/ARMmbed/mbed-os into rollup 2018-10-17 21:38:38 -05:00
Cruz Monrreal 1a6d2f6513
Merge pull request #8451 from korjaa/fix_possible_filebase_deadlock
Added missing _mutex->unlock() to FileBase::lookup().
2018-10-17 17:40:29 -05:00
Amanda Butler 3a8919b22d
Copy edit FileHandle.h
Copy edit file.
2018-10-17 17:26:27 -05:00
Kevin Gilbert 7709b24b29
api->API
Minor doxygen update, uppercase acronym
2018-10-17 17:20:10 -05:00
kegilbert 2d910cd8e7 Infered->Inferred
Signiture->Signature
2018-10-17 17:13:36 -05:00
Amanda Butler 048614638e
Copy edit mbed_rtc_time.h
Copy edit existing text.
2018-10-17 17:07:05 -05:00
Kevin Gilbert 3794fe5b6c
funtion->function
Minor doxygen typo patch
2018-10-17 17:01:48 -05:00
Kevin Gilbert 69e763e254
Minor mbed_assert doxy typos patch 2018-10-17 16:59:07 -05:00
Kevin Gilbert 3a04e6ae78
locable->lockable
Minor doxygen comment typo patch
2018-10-17 16:54:32 -05:00
Kevin Gilbert d24f10e50e
Remove extra e in deepsleep 2018-10-17 16:44:15 -05:00
Kevin Gilbert 435f4724e0
underlyng->underlying 2018-10-17 12:23:35 -05:00
Cruz Monrreal 7085d16661
Merge pull request #8354 from kjbracey-arm/singletonptr_align
SingletonPtr: const and alignment
2018-10-17 08:35:12 -05:00
Jaakko Korhonen 4efec08127 Added missing _mutex->unlock() to FileBase::lookup(). 2018-10-17 14:07:09 +03:00
Kevin Bracey 2df322c43d Don't overrun in error prints
vsprintf returns the amount it would have written if the buffer had been
big enough, but we used that value directly when outputting, thus
overrunning memory and dumping stack contents.

Indicate truncation by inserting an ellipsis and newline. Slightly
increase the buffer size, so that we don't slightly decrease the maximum
printable characters because of the ellipsis insertion.

Partially addresses https://github.com/ARMmbed/mbed-os/issues/6850 by
forcing a newline when truncation happens - often truncation will drop a
newline and prevent a flush.
2018-10-17 12:55:20 +03:00
Kevin Bracey c989845d5a mbed_error_vfprintf -> mbed_error_vprintf
Name vfprintf doesn't make sense - if we have mbed_error_printf, this is
vprintf.
2018-10-17 12:55:20 +03:00
Kevin Bracey d05c60ee3f Sync output devices on exit
Mbed retarget does an `fflush` on stdout and stderr on exit - this
flushes the C library buffers (if it is buffering), but doesn't
flush any device buffers (eg UARTSerial's TX buffer). Add
sync() calls to the output device to do this.
2018-10-17 12:55:20 +03:00
Kevin Bracey 78f4b4bc82 Make mbed_error not serial-specific
Use write() on current output device instead - this works on the
assumption that write() is safe to call from critical section.

UARTSerial has previously been upgraded to support this, and this also
improves the behaviour when buffered serial is in use - the current
buffered output will be fully flushed before outputting the error
message.
2018-10-17 12:55:20 +03:00
Cruz Monrreal ce7e61e37e
Merge pull request #8255 from MateuszMaz/refactoring_mbed_assert
Change behaviour of mbed_asert to use mbed_error instead of mbed_die
2018-10-16 11:06:18 -05:00
Kevin Bracey e7815c64ad Align SingletonPtr data to 8 bytes, or use C++11
Be more cautious about alignment - align the data within a SingletonPtr
to 8 bytes rather than 4. This could increase padding overhead by up
to 8 bytes, sadly, but we may need this alignment for correct operation.

Conditional check added for C++11 - if in use we can get correct minimal
alignment by using alignas(T).
2018-10-16 13:32:52 +03:00
Deepika 1d23843833 Platform: Add required header file and namespace element instead add all 2018-10-15 10:39:41 -05:00
deepikabhavnani f55b929de9 ATCmdParser: Added namespace std for va_list 2018-10-15 10:39:41 -05:00
Cruz Monrreal ec03df4823
Merge pull request #7980 from kjbracey-arm/thread_deprecations
Clean up rtos::Thread deprecation warnings
2018-10-15 10:09:55 -05:00
Cruz Monrreal e0e915f5db
Merge pull request #8423 from cmonr/rollup2
Rollup PR: Additional doc PRs + lingering need:CI PRs
2018-10-15 10:04:04 -05:00
Cruz Monrreal II a51b0a3562 Merge branch 'atcmd_docs' of ssh://github.com/deepikabhavnani/mbed-os into deepikabhavnani-atcmd_docs 2018-10-12 21:46:59 -05:00
Cruz Monrreal II d0aec14124 Merge branch 'typo-fix-1-1' of ssh://github.com/ARMmbed/mbed-os into ARMmbed-typo-fix-1-1 2018-10-12 21:46:51 -05:00
Cruz Monrreal II 2f6aa3331f Merge branch 'heap_fix_7912' of ssh://github.com/deepikabhavnani/mbed-os into deepikabhavnani-heap_fix_7912 2018-10-12 21:46:27 -05:00
Amanda Butler 5b22304300
Edit ATCmdParser.md
Make minor grammar and spelling edits.
2018-10-12 17:16:09 -05:00
deepikabhavnani 92108858f5 Doc changes and rephrasing 2018-10-12 17:09:31 -05:00
Amanda Butler 00186e6f14
Copy edit mbed_rtc_time.h
Copy edit existing text for U.S. spelling and consistent capitalization.
2018-10-12 14:50:52 -05:00
Kevin Gilbert a9dbd728f6
wich->which 2018-10-12 13:52:23 -05:00
Cruz Monrreal II 8bb21afbf0 Merge branch 'sen_ErrorDoxyUpdate' of ssh://github.com/SenRamakri/mbed-os into SenRamakri-sen_ErrorDoxyUpdate 2018-10-12 12:07:28 -05:00
Cruz Monrreal II b7ef70dea4 Merge branch 'update_stats_docs' of ssh://github.com/bridadan/mbed into bridadan-update_stats_docs 2018-10-12 12:07:23 -05:00
Cruz Monrreal II 828b6f506a Merge branch 'sen_MemTraceDoxyUpdate' of ssh://github.com/SenRamakri/mbed-os into SenRamakri-sen_MemTraceDoxyUpdate 2018-10-12 12:07:21 -05:00
Cruz Monrreal II 98a9bb880b Merge branch 'fhtidy_doc' of ssh://github.com/kjbracey-arm/mbed-os into kjbracey-arm-fhtidy_doc 2018-10-12 12:07:07 -05:00
Senthil Ramakrishnan e547e3d88d Fix doxygen comments and spelling errors 2018-10-12 11:49:58 -05:00
Amanda Butler 9eab32e365
Copy edit changes to mbed_mem_trace.h
Delete extra spaces.
2018-10-12 11:13:31 -05:00
Amanda Butler 82c4ce607d
Edit mbed_stats.h
Capitalize ID for consistency.
2018-10-12 11:08:01 -05:00
Cruz Monrreal 6d7b655b87
Merge pull request #8331 from deepikabhavnani/getc_fix
Stream: add necessary flushes, removing unneeded IAR workaround
2018-10-12 08:59:16 -05:00
Kevin Bracey 1ef213ec89 Clean up Thread deprecation warnings
Static Thread methods and signal methods have been deprecated. Remove
all references in the main code, and most of the tests. Some tests of
the deprecated APIs themselves remain.
2018-10-12 14:57:13 +03:00
Brian Daniels ddedc155d4 Updating stats doc comments 2018-10-11 19:11:17 -05:00
Senthil Ramakrishnan 026c978515 Adding doxygen comments for mem trace enum 2018-10-11 16:58:47 -05:00
MateuszMaz e6ae3d2c51 Remove stray error_value 2018-10-09 18:49:47 +02:00
Filip Jagodzinski 9dce8b3ab5 HAL: SleepManager: Update header file
Move sleep manager API into its own doxygen group.
Add defined behavior section and links to tests.
2018-10-09 17:52:42 +02:00
Kevin Bracey 199d1667ff Make SingletonPtr methods const
Make get() and operators * and -> of SingletonPtr const - they are
logically const and thread-safe, despite the construction on first call.
This construction is "invisible" to the caller of those methods.
2018-10-09 18:08:05 +03:00
kegilbert eeada14721 Add enable/disable cb function in mem_trace 2018-10-08 11:50:10 -05:00
MateuszMaz cf43e1cb5c Fix message string 2018-10-08 18:41:50 +02:00
Cruz Monrreal f529dc799e
Merge pull request #8001 from kjbracey-arm/singletonptr_star
Add * operator to SingletonPtr
2018-10-08 10:25:46 -05:00
deepikabhavnani 0e758796f6 Signature to track memory allocations by wrapper functions.
Compilers allocate some section of memory without using wrapper function,
which is later freed when wrappers were initialized. Since the allocated
memory didn;t contain wrapper header the pointer got corrupt when calling to free.

This implementation of signature addition during malloc and signature check during
free helps in freeing the memory allocated by wrapper functions properly and
also the internal memory allocated by compilers (without malloc wrappers).
2018-10-08 07:45:01 -05:00
Deepika 6646323867 Alignment of 8 is not required for additional header
malloc guarantees aligned memory. If we add an alignment here, we are adding
additonal unused 4 bytes. Each allocator has its own 4/8 byte header
(GGC / ARM have 4 bytes).

So if user request for 8 bytes of memory stats will add 8 + allocator 8.
However if we remove the alignment in stats header, allocator will consider
add 4 bytes to 12 byte request and zero padding.

It will be beneficial to leave the padding to allocator.
2018-10-08 07:37:54 -05:00
Martin Kojtal 4fbd39c74e
Merge pull request #8108 from c1728p9/systick_rename
Rename device option STCLK_OFF_DURING_SLEEP
2018-10-06 07:46:49 +02:00
Deepika f79a354311 Replace fflush to fseek before writes
You are allowed in POSIX / ANSI C to read and write on the same stream, but you
have to do an fseek in between read and write call (getc->fseek->putc)

Thanks @Alex-EEE for sharing the fix: https://github.com/ARMmbed/mbed-os/pull/7749

Added test case for verification of the behavior
2018-10-05 14:29:15 -05:00
MateuszMaz 63d3a32894 Remove empty line 2018-10-05 21:25:28 +02:00
MateuszMaz 845655b621 Add case MBED_ERROR_CODE_ASSERTION_FAILED, fix names, pass expr to mbed_error 2018-10-05 21:15:03 +02:00
MateuszMaz a2f3c59768 Add ASSERTATION_FAILED error code 2018-10-04 20:47:16 +02:00
paul-szczepanek-arm 05a4337490 make it backwards compatible 2018-10-04 16:12:26 +01:00
paul-szczepanek-arm 3a408eb85a fix missing namespace mbed 2018-10-04 15:51:01 +01:00
deepikabhavnani 5f5882830f Add `overhead_size` element to get the overhead of stats
Heap statistics are used for analysing heap stats, but it doesn't tell anything
about real heap usage or malloc overheads. Adding `overhead_size` element
will help users to get the real heap usage.
2018-10-03 16:41:24 -05:00
Cruz Monrreal 4403a561b3
Merge pull request #7890 from deepikabhavnani/cb_issue_7701
Circular buffer should use conditional statement instead of modulo
2018-09-27 10:20:05 -05:00
MateuszM c3e7ddbb10 Changed behaviour of mbed_asert to use mbed_error instead of mbed_die. 2018-09-26 11:08:54 +02:00
Martin Kojtal ac6ca73dd8
Merge pull request #8165 from mprse/issue_8155_fix
Fix for issue #8155 (NRF52832: time stops after 35 minutes)
2018-09-24 12:59:22 +02:00
Martin Kojtal 9506f50112
Merge pull request #8036 from TeroJaasko/fix_mbed_error_c_memsets
platform: error: fix bogus usage of memset()
2018-09-24 08:23:02 +02:00
Cruz Monrreal 1a638c7870
Merge pull request #8106 from c1728p9/macros_to_config
Replace macros with config options
2018-09-22 16:40:53 -05:00
Martin Kojtal 3d94fb889b
Merge pull request #7903 from tkem/fix/cleanup-include-paths
Clean up include paths.
2018-09-19 12:16:09 +02:00
Kevin Bracey 1492829f82 poll: Un-doxygen internal comment 2018-09-18 12:40:03 +03:00
Przemyslaw Stekiel 814940cabe Fix for issue #8155 (NRF52832: time stops after 35 minutes)
Low power Timer is used as RTC for platforms that don't have HW RTC capabilities (like NRF52832).
`_rtc_lpticker_read(void)` function currently uses `Timer::read()` function to trace elapsed time.
`Timer::read()` returns seconds represented as `float` value, but this value is calculated from `int` since `Timer::read_us()` returns `int`.
This limits time tracing to ~35 min.
To fix this problem we will use `timer::read_high_resolution_us()` (which returns unsigned 64 bit value) instead of `Timer::read()`.
2018-09-18 09:48:53 +02:00
Cruz Monrreal 3da606e586
Merge pull request #8017 from TTornblom/master
IAR: Fix for #7662, only massage the error decode URL for the IAR .xcl
2018-09-17 19:46:12 -05:00
Russ Butler ab50681c33 Rename device option STCLK_OFF_DURING_SLEEP
Rename STCLK_OFF_DURING_SLEEP to SYSTICK_CLK_OFF_DURING_SLEEP to avoid
confusion with the STmicroelectronics.
2018-09-12 14:40:25 -05:00
Russ Butler b9b4b8ada6 Replace macros with config options
Add a config option for the following values:
MBED_SYS_STATS_ENABLED
MBED_STACK_STATS_ENABLED
MBED_CPU_STATS_ENABLED
MBED_HEAP_STATS_ENABLED
MBED_THREAD_STATS_ENABLED
MBED_CONF_APP_MAIN_STACK_SIZE
MBED_CONF_APP_TIMER_THREAD_STACK_SIZE
MBED_CONF_APP_IDLE_THREAD_STACK_SIZE
MBED_CONF_APP_THREAD_STACK_SIZE

To maintain backwards compatibility inside the RTOS both
APP and RTOS config values can be used.
2018-09-12 13:59:46 -05:00
Kevin Bracey eaddf0a160 FileBase: Fix unsetting of default when destroyed
Code that should unset a FileBase from being the default when it is
destroyed was broken by a `==` instead of `=` typo.
2018-09-10 11:20:36 +03:00
Tero Jääskö 321548cadc platform: error: fix bogus usage of memset()
Code had mixed up order of 'c' and 'n' arguments to memset().
Fix this.

Spotted-by: kjbracey-arm & a GCC profile without "-fno-builtin"

Related GCC warnings:
---8<---8<----
[Warning] mbed_error.c@123,5: 'memset' used with constant zero length parameter; this could be due to transposed parameters [-Wmemset-transposed-args]
[Warning] mbed_error.c@282,5: 'memset' used with constant zero length parameter; this could be due to transposed parameters [-Wmemset-transposed-args]
2018-09-07 15:40:44 +03:00
TTornblom 0d97803ad8 IAR: Fix for #7662, only massage the error decode URL for the IAR .xcl
file.
2018-09-06 12:16:15 +02:00
Kevin Bracey 390f6e7a7b Add * operator to SingletonPtr
Sometimes you want don't want to directly call a method on your
SingletonPtr-wrapped object, but you want to pass it to something
else.

For example

    SingletonPtr<PlatformMutex> mutex;
    mutex->lock();

is fine, but what about

    SingletonPtr<PlatformMutex> mutex;
    ScopedLock<PlatformMutex> lock(*mutex.get());

Add an overload for operator* to make this more elegant:

    SingletonPtr<PlatformMutex> mutex;
    ScopedLock<PlatformMutex> lock(*mutex);

This addition is consistent with standard C++ classes such as
`unique_ptr` and `shared_ptr`, which likewise have
get, operator-> and operator*.
2018-09-05 18:15:47 +03:00
Kevin Bracey a67f09851b Add special handling for "/default" filesystem
Allow a FileBase (normally a FileSystemLike) to be set as the default,
so it can be looked up as "/default" as well as its actual name.
2018-09-05 13:28:42 +03:00
Cruz Monrreal 83e0e65a42
Merge pull request #7726 from SenRamakri/sen_BLE_ErrorUpdate
Update BLE error calls to use new error codes and mbed_error
2018-09-02 20:47:40 -05:00
Cruz Monrreal f82feecc51
Merge pull request #7822 from donatieng/nfc-impl
Add initial NFC support to Mbed OS
2018-08-31 19:01:25 -05:00
Cruz Monrreal a849fa46df
Merge pull request #7662 from SenRamakri/sen_ErrorUrl
Add Error Decoding URL to error report
2018-08-31 18:27:30 -05:00
Cruz Monrreal 88eb8aab23
Merge pull request #7794 from c1728p9/boot_overhaul
Update Mbed 5 boot sequence
2018-08-30 10:22:15 -05:00
Senthil Ramakrishnan e84e56bc8d Add Error Decoding URL in error report 2018-08-30 12:19:59 +01:00
Vincent Coubard 913f219fc1 Span: Fix type used in is_convertible traits. 2018-08-29 19:42:46 +01:00
Thomas Kemmer a16c374725 Clean up include paths. 2018-08-27 20:47:19 +02:00
Cruz Monrreal 1b051c7687
Merge pull request #7402 from kegilbert/mem-tracing-config-patch
Replace mbed_mem_tracing_enabled macro with config option
2018-08-27 10:34:24 -05:00
Cruz Monrreal c12c69fef0
Merge pull request #7828 from pan-/span
Platform: Add C++ Span class.
2018-08-27 10:28:59 -05:00
Deepika 4e263b17b9 Refactor circular buffer test to platform folder 2018-08-27 09:33:07 -05:00
Russ Butler ec19bf1de4 Allow early use of singleton lock
Allow singleton_lock and singleton_unlock to be called before the
RTOS has been started by checking for a valid mutex before locking
and unlocking it.
2018-08-26 12:59:57 -05:00
Cruz Monrreal 2f8e679183
Merge pull request #7592 from orenc17/remove_uvisor
Remove uVisor from mbed-os
2018-08-25 19:52:24 -05:00
Deepika 546743aeb0 Replace modulo op with compare/reset op 2018-08-24 16:51:32 -05:00
Vincent Coubard 9d1fd9983c Span: Fix documentation. 2018-08-24 17:51:58 +01:00
Amanda Butler bf08651d3a
Copy edit Span.h
Copy edit file, mostly for consistent capitalization, punctuation and tense.
2018-08-24 09:31:10 -05:00
Vincent Coubard af69e1fb8b Span: use static assert to kill copy construction from an incompatible span type.
Copy construction between Span of compatible type is allowed to fulfil the use
case Span<T> -> Span<const T>. This is achieved by a templated copy constructor
like constructor.

In p0122, the overload is discarded from the constructor set if the ElementType
of the Span in input is not convertible into the ElementType of the Span being
constructed.

To discard function overload, SFINAE has to be used which polutes the documentation
and make the code harder to read and maintain.

Unlike p0122, our Span class doesn't exposes (yet) functions with default argument
or functions that convert container in input into span the only overload with the
a single parameter that we exposes are:
- template<size_t N> Span(ElementType (&element)[N])
- Span(const Span& other): <- generated by the compiler.

For both of this functions we expect exact match and their resolution should not
interfere with the constructor that converts from another type of Span.

As a result it is possible to rely solely on C++ default resolution rules as we
won't hit cases were constructors convert from another type (std::array, std
container, span) and raise an error with a static assert if the element type
can't be converted.

If another copy - conversion - constructor is added then SFINAE has to be
reintroduced.
2018-08-24 11:10:17 +01:00
Martin Kojtal 871d7e7361
Merge pull request #7730 from davidsaada/david_stack_stats_fail_fix
When stack stats enabled, prevent exceptions if memory allocations fail
2018-08-24 11:31:24 +02:00
Vincent Coubard d5051a8ca7 Span: Allow copy construction from convertible span.
Addition of these overloads help when Span<const T> is constructed from Span<T>.
2018-08-23 18:41:53 +01:00
Cruz Monrreal deb905da1d
Merge pull request #7815 from donatieng/shared_ptr
Re-add Shared Pointer Class into platform features
2018-08-23 10:09:02 -05:00
Vincent Coubard b7f074ef68 Span: Fix opening brace position. 2018-08-23 14:02:26 +01:00
Vincent Coubard 2a6c6d5985 Span: Use mbed way of writing types in documentation example. 2018-08-23 12:41:04 +01:00
Vincent Coubard 33ca10192d Span: Fix documentation. 2018-08-23 11:38:32 +01:00
Vincent Coubard 6b08320573 Span: Fix doxygen tags. 2018-08-23 09:02:28 +01:00
Vincent Coubard 4e7fa91b94 Span: amend documentation 2018-08-22 15:11:27 +01:00
Oren Cohen 787317b7eb Remove uVisor from mbed-os 2018-08-22 16:36:59 +03:00
Vincent Coubard 95fc284a83 Span: add boundary check in subscript operator for debug profile 2018-08-22 13:32:54 +01:00
Vincent Coubard f6dd5eaa31 Span: Fix static assert message in default constructor. 2018-08-22 13:31:26 +01:00
Vincent Coubard 26b546bab3 Span: Improve readability of precondition checks 2018-08-22 09:40:51 +01:00
Vincent Coubard 938d802ea0 Span: Fix subspan return type 2018-08-22 09:40:50 +01:00
Vincent Coubard 54e2d92c95 Span: Improve consistency with standard.
This commit aims to make Span implementation more in line with what is present in N4762:
- use appropiate index types where applicable.
- use typedefed type inside the class (index_type, reference, pointer, element_type)
- assertion where applicable
- restrict default construction to Span with extent == 0 or extent == dynamic.
- construct span from a range of pointer
- remove non const overload of the subscript operator
- remove non const overload of the data function
- implement subspan function
- implement missing first and last function of dynamic span
2018-08-21 18:20:58 +01:00
Donatien Garnier 298f847821 Fix use_count() in SharedPtr 2018-08-21 12:59:54 +01:00
Amanda Butler 7086d69a83
Copy edit SharedPtr.h
Copy edit for consistent capitalization and minor grammar nits.
2018-08-20 13:55:21 -05:00
Donatien Garnier d9c1748c14 Update formatting for SharedPtr.h 2018-08-20 12:04:53 +01:00
Vincent Coubard 3985fb8d62 Span: Fix documentation error. 2018-08-20 12:00:20 +01:00
Vincent Coubard 1f00336c7e Span: replace reference to Size with Extent. 2018-08-20 11:58:48 +01:00
Vincent Coubard 6fcf1e8284 Span: Make type pointer and reference declaration consistent with guideline. 2018-08-20 10:47:41 +01:00
Vincent Coubard 9b9d33a7b4 Span: Fix typo. 2018-08-20 10:41:47 +01:00
Vincent Coubard 3fb3173876 Span: Fix odd condition in Span::empty. 2018-08-20 10:30:35 +01:00
Vincent Coubard 43170d21bf Span: Make name of dynamic span tag consistent with C++ standard. 2018-08-20 10:29:43 +01:00
Vincent Coubard eba1dc6dd6 Span: Improve comparison operator to array by using fixed size Span. 2018-08-20 09:13:31 +01:00
Vincent Coubard 7f195b8ec1 Span: Cleanup usage of ptrdiff_t and size_t 2018-08-20 09:13:17 +01:00
Vincent Coubard d8c788a413 Platform: Add C++ Span class.
The Span class allows the creation of views over contiguous memory. The view
do not own memory, is typed and has a length. It can be used as a replacement of
the traditional pair of pointer and size in parameters or class fields.

Main operations:
- size(): return the lenght of the memory viewed
- empty(): return if the memory viewed is empty
- [index]: access elements viewed
- data(): return a pointer to the memory viewed.
- first(count): Create a subview from the first count elements.
- last(count): Create a subview from the last count elements.
- == and !=: compare two views or a view to array and return if they are equal or
not.

The Span class came in two flavors:
- Static size: The size is encoded in the Span type and it is as lightweitgh as
a single pointer,
- Dynamic size: The object can store arbitrary views and it costs one pointer
and the size of the view.
2018-08-19 20:20:05 +01:00
Senthil Ramakrishnan 529af2b0f4 Changes to error code names 2018-08-17 23:13:59 -05:00
Senthil Ramakrishnan 7803a40fbd Update BLE error calls to use new error codes and mbed_error 2018-08-17 22:52:50 -05:00
Donatien Garnier 6f3c07f6eb Optimize SharedPtr code 2018-08-17 20:11:00 +01:00
Donatien Garnier ac79b007d0 Cleanup description 2018-08-17 19:05:19 +01:00
Donatien Garnier 2608478e87 Cleanup shared pointer implementation and add reset() methods 2018-08-17 18:45:01 +01:00
Donatien Garnier f45642cec0 Make shared pointer thread safe and clean-up class and doc 2018-08-17 18:25:28 +01:00
Russ Butler 472ababfef Update deep sleep lock check in tests
When the define LPTICKER_DELAY_TICKS is set deep sleep can be randomly
disallowed when using the low power ticker. This is because a Timer
object, which locks deep sleep, is used to protect from back-to-back
writes to lp tickers which can't support that. This causes tests which
assert that deep sleep is allowed to intermittently fail.

To fix this intermittent failure this patch adds the function
sleep_manager_can_deep_sleep_test_check() which checks if deep sleep
is allowed over a duration. It updates all the tests to use
sleep_manager_can_deep_sleep_test_check() rather
than sleep_manager_can_deep_sleep() so the tests work even if deep
sleep is spuriously blocked.
2018-08-17 09:29:41 -05:00
Donatien Garnier 9ebfbc0cdd Re-introduce a shared pointer class in mbed OS 2018-08-17 12:30:51 +01:00
David Saada cfe7df28c9 When stack stats enabled, prevent exceptions if memory allocations fail 2018-08-08 16:18:29 +03:00
Martin Kojtal 7a44185c1c CircularBuffer: volatile specifier removal
Volatile specifier in this case it not required as we currently have all accesses
to the buffer protected by critical section. This shall optimize accesses in
some cases to the buffer.

Fixes #7702
2018-08-08 10:11:59 +01:00
kegilbert 9b53d1256f Replace mbed_mem_tracing_enabled macro with config option 2018-08-06 13:44:12 -05:00
Cruz Monrreal 8292affb53
Merge pull request #7609 from bremoran/patch-2
Make location meaningful in print_error_report
2018-07-26 22:07:22 -05:00
Cruz Monrreal cc506eed14
Merge pull request #7603 from OpenNuvoton/nuvoton_override_gcc_sbrk
Nuvoton: Replace __wrap__sbrk with overriding _sbrk
2018-07-26 12:54:45 -05:00
Brendan Moran 96fbd02f8c
Make location meaningful in print_error_report
`handle_error` calls `MBED_CALLER_ADDR()`, but this is always a location from within platform/mbed_error.c. This is because `handle_error` is declared static. This does not cause the function to be inlined however. Instead, it is called by each function within mbed_error.c. For example, mbed_error yields this code:

```
000625c8 <mbed_error>:
   625c8:       b510            push    {r4, lr}
   625ca:       460c            mov     r4, r1
   625cc:       4611            mov     r1, r2
   625ce:       461a            mov     r2, r3
   625d0:       9b02            ldr     r3, [sp, #8]
   625d2:       f7ff feff       bl      623d4 <handle_error>
   625d6:       b968            cbnz    r0, 625f4 <mbed_error+0x2c>
   625d8:       4620            mov     r0, r4
   625da:       f7ff ff67       bl      624ac <print_error_report.constprop.0>
   625de:       f7ff fea8       bl      62332 <core_util_is_isr_active>
   625e2:       b910            cbnz    r0, 625ea <mbed_error+0x22>
   625e4:       f7ff fe9f       bl      62326 <core_util_are_interrupts_enabled>
   625e8:       b908            cbnz    r0, 625ee <mbed_error+0x26>
   625ea:       bf30            wfi
   625ec:       e7fd            b.n     625ea <mbed_error+0x22>
   625ee:       2001            movs    r0, #1
   625f0:       f000 f948       bl      62884 <__wrap_exit>
   625f4:       4800            ldr     r0, [pc, #0]    ; (625f8 <mbed_error+0x30>)
   625f6:       bd10            pop     {r4, pc}
   625f8:       80ff010f        .word   0x80ff010f
```

Note that at `625d2` there is a bl to handle error. That replaces the LR, which means that ALL calls to mbed_error will report a location of 0x625d6 or 0x625d7 (user vs. supervisor). I do not expect that this was the intention of the code. The simplest fix is to change line 99:

```C
static inline mbed_error_status_t handle_error(mbed_error_status_t error_status, unsigned int error_value, const char *filename, int line_number)
```

Since `handle_error()` will be inlined, the link register will be kept the same, so `MBED_CALLER_ADDR()` will yield the expected result. However, there is no guarantee that the compiler will respect the `inline` keyword in all circumstances.

The result is that each function that wishes to report its caller must extract its caller. This code cannot be centralised.

I have modified `mbed_error.c` to report the caller of each error reporting function, rather than the error reporting function itself.
2018-07-26 16:21:17 +01:00
ccli8 313f322cf7 [Nuvoton] Replace __wrap__sbrk with overriding _sbrk
With _sbrk being weak, we can override it directly rather than #if to support heap with
two-region model.
2018-07-26 15:47:25 +08:00
Senthil Ramakrishnan 7cedccc488 Improved logic in wait_us to avoid division operation in sub-millisec case 2018-07-25 15:04:06 -05:00
Deepika b05d105493 Update stats to fetch Mbed OS version info 2018-07-13 11:58:49 -05:00
Cruz Monrreal 6fcb77ee34
Merge pull request #7434 from deepikabhavnani/version_header
Separate version header file in Mbed OS
2018-07-13 11:43:15 -05:00
Deepika 05d8c74aee Separate version header file to get version updates in Mbed OS 2018-07-11 09:41:30 -05:00
Senthil Ramakrishnan b6179d281d Remove error reporting for release builds 2018-07-06 10:15:07 -05:00
Senthil Ramakrishnan a29eee4e73 Don't print error reports in release builds 2018-07-06 09:56:34 -05:00
Senthil Ramakrishnan a443e9bb47 Fix wrong config binding 2018-07-03 14:00:46 -05:00
Cruz Monrreal 7e0f75e831
Merge pull request #7331 from TomoYamanaka/improve_bootloader
Improve the process for Cortex-A9 in mbed_application
2018-07-03 07:37:19 -05:00
Martin Kojtal ffcb6ecfb5 platform: astyle update 2018-06-29 10:38:44 +01:00
Senthil Ramakrishnan 0e25447b78 Fix error history related comments 2018-06-27 15:32:38 -05:00
TomoYamanaka 9c99d7eb17 Improve the process for Cortex-A9 in mbed_application
I added the powerdown func by GIC in mbed_application because Cortex-A9 use GIC instead of NVIC.
This process prevent unexpected interrupt when updating software by using bootloader.
2018-06-26 19:17:59 +09:00
Cruz Monrreal ea47342f81
Merge pull request #7214 from SenRamakri/sen_ErrorOptimAndConfig
Error handling configuration updates and Optimization for exception handling
2018-06-25 10:10:49 -05:00
TomoYamanaka 5c036cb1ba Add the process for Cortex-A in mbed_applicaion
I added the process for Cortex-A in mbed_application.c because this process was for only Cortex-M.
Also I enabled the macro of MBED_APPLICATION_SUPPORT for Cortex-A.
2018-06-22 10:47:23 +09:00
Senthil Ramakrishnan baa44eb3f2 Limit error filename capture to 64 chars, wrapping tests with right configs and astyle fixes. 2018-06-20 11:56:32 -05:00
Senthil Ramakrishnan cbb12e326d Updates to configuration flags used in error handling implementation.
The new configuration make Error history tracking switched off by default and enabled by using the config flag MBED_CONF_PLATFORM_ERROR_HIST_ENABLED.
Config flag MBED_CONF_PLATFORM_ERROR_ALL_THREADS_INFO enables printing info of all threads. This will be turned off by default.
2018-06-20 11:56:31 -05:00
Cruz Monrreal dabb112ebd
Merge pull request #7117 from OpenNuvoton/nuvoton_fix_armc6_memtrace2
Fix compile error with MBED_MEM_TRACING_ENABLED and ARMC6
2018-06-14 10:14:46 -05:00
Cruz Monrreal 38f9519ccc
Merge pull request #6949 from OpenNuvoton/nuvoton_m23_bootloader
Support mbed_start_application for Cortex-M23
2018-06-07 10:10:46 -05:00
Martin Kojtal 4f90f4c735 error: fix undeclared memcpy
Some targets do not get string header file in, results in the warning:
implicit declaration of function 'memcpy'
2018-06-06 09:00:27 +01:00
ccli8 0597998d91 Fix compile error with MBED_MEM_TRACING_ENABLED and ARMC6 2018-06-05 17:34:28 +08:00
Cruz Monrreal 50cd664628
Merge pull request #7050 from SenRamakri/sen_ErrorHandlingFilenameFix
Fix for filename capture not working
2018-06-04 10:43:56 -05:00
Senthil Ramakrishnan 576bd61d96 Do not capture filename for release builds 2018-05-31 11:30:33 -05:00
Senthil Ramakrishnan 68e59a11b9 Fix for error report not printing when calling error API 2018-05-31 11:27:20 -05:00
Senthil Ramakrishnan 07a6ab0864 Fix for filename capture not working 2018-05-31 10:39:58 -05:00
deepikabhavnani d764a7c627 OS version is not available in code, need a fix for this in next patch release 2018-05-30 08:57:47 -05:00
ccli8 23dcd82fab Remove superfluous MOVT in mbed_start_application/start_new_application 2018-05-30 09:39:07 +08:00
ccli8 3c14cb6332 Fix mbed_start_application on Cortex-M23
1. M23 doesn't support ICTR and supports up to 240 external interrupts.
2. Fix reset of SHPR
3. Fix inline assembly compile error with ARMC6
2018-05-28 11:43:27 +08:00
Bartek Szatkowski efd307fa79 Rename new occurrences of LOWPOWERTIMER to LPTICKER 2018-05-25 12:33:43 -05:00
Senthil Ramakrishnan 92e0cbfaef Doxygen fixes 2018-05-23 13:27:57 -05:00
Senthil Ramakrishnan 5ef6728c08 Splitting MBED_ERROR macros to support ones with/without error value argument 2018-05-23 12:21:28 -05:00
Senthil Ramakrishnan 693a6c40bb Refactor error reporting 2018-05-23 12:21:11 -05:00
Senthil Ramakrishnan d4fe75731d Adding mbed prefixes to all macros and functions to avoid namespace conflicts 2018-05-23 12:21:10 -05:00
Senthil Ramakrishnan 147d9cac4e Test application/cases optimization for some low memory targets, macro changes and test fixes 2018-05-23 12:21:10 -05:00
Senthil Ramakrishnan f9c25612ae Fix test failures when trap errors are enabled and other fixes 2018-05-23 12:21:10 -05:00
Senthil Ramakrishnan cbfc06577b Fixes to align with naming conventions 2018-05-23 12:21:09 -05:00
Senthil Ramakrishnan 92df68b1ea Changed variable names for registers to avoid namespace conflicts, build fixes, macros and other fixes 2018-05-23 12:21:09 -05:00
Senthil Ramakrishnan 530e9d323f Changed variable names for registers to avoid namespace conflicts and rtos disabled build fixes 2018-05-23 12:21:09 -05:00
Senthil Ramakrishnan 2e28dd95e1 Change set_error/set_error_fatal to warning/error, add itm support and other changes 2018-05-23 12:21:08 -05:00
Senthil Ramakrishnan 7c6c718f75 Fixed entity reporting and comments 2018-05-23 12:21:08 -05:00
Senthil Ramakrishnan 839fef0ad1 Added more tests for error log and error reporting, updated doxygen comments 2018-05-23 12:21:07 -05:00
Senthil Ramakrishnan 9041b475c6 Error handling/logging implementation and tests 2018-05-23 12:21:07 -05:00
Martin Kojtal 23d8085174
Merge pull request #6878 from bulislaw/rtc_lp_ticker
Add low power timer fallback for platforms without RTC
2018-05-22 14:35:18 +02:00
Martin Kojtal 5d027f4e27
Merge pull request #6857 from deepikabhavnani/cpu_stats
CPU Statistics
2018-05-22 14:30:21 +02:00
Martin Kojtal 02af950f62
Merge pull request #6336 from geky/fat-errors
fatfs: Update error code mapping
2018-05-22 14:27:01 +02:00
Cruz Monrreal a301db5d43
Merge pull request #6791 from kjbracey-arm/fcntl
Add POSIX fcntl flag support
2018-05-21 17:17:02 -05:00
ccli8 646f61400a Fix start_new_application compile error on Cortex-M23
With "mov r2, #0", compile OK with GCC_ARM, but failed with ARMC6.
With "ldr r2, =0", compile OK with ARMC6, but failed with GCC_ARM.
Finally, with "movw r2, #0"/"movt r2, #0", compile OK with both ARMC6 and GCC_ARM.
2018-05-21 17:39:09 +08:00
ccli8 b3f17a9e01 Support mbed_start_application for Cortex-M23 2018-05-18 17:33:05 +08:00
Christopher Haster effdc6571b retarget: Added workaround for conflicting definitions of error_t
The errno.h header file defines the type error_t, unfortunately this
is a common type name that may be defined in user code. For at least GCC
we can work around this by telling errno that the error_t is already
defined.
2018-05-17 10:26:33 -05:00
Christopher Haster 78992a4c26 retarget: Added include errno.h
Unfortunately, some toolchains don't define the same errno codes that
are used fairly consistently on Linux based platforms, which means they
also don't match the errno codes used in the retarget layer.

If a user includes errno.h after mbed.h, the errno codes can be
redefined incorrectly.

Adding an include of errno.h in mbed.h forces the order to be fixed.
2018-05-17 10:26:33 -05:00
Deepika 029237b683 Addressed review comments
1. LP ticker limiation note
2. Use read_us in mbed_uptime function
3. Doxygen recommendations
4. Use us_timestamp_t instead uint64_t
5. Astyle changes
2018-05-15 11:36:08 -05:00
deepikabhavnani 3420ff7f9c CPU statistics addition
API to get CPU stats like sleep/deepsleep time, uptime and idle time.
These can be used by application to know the CPU Usage runtime.
2018-05-15 11:20:52 -05:00
Deepika 1961428c1b OS version added + CPUID for cortex-M only
CPUID base register is available for Cortex-M processors only.
Cortex-A devices have Main ID Register, which can be used in future to
get processor info.
2018-05-15 10:22:13 -05:00
deepikabhavnani c08b3e3d3d System Info API addition
API added to get the system information like CPU ID, compiler ID and
compiler version.
2018-05-15 10:17:40 -05:00
Bartek Szatkowski ac9276499f Add low power timer fallback for platforms without RTC
Low power timer will be used as RTC for platforms that don't have HW RTC
capabilities.
2018-05-14 12:07:59 +01:00
deepikabhavnani 97c88188d0 Cleanup
1. Enable watermark to get stack space information
2. Restructured code
3. Throw error if MBED_THREAD_STATS_ENABLED is not set
4. Astyle changes
2018-05-11 10:06:44 -05:00
deepikabhavnani f43b16ffd9 Cleaup and review comments addressed
1. Removed prefix thread_ from all elements of mbed_stats_thread_t
2. #if conditions aligned to rest of the file
2018-05-11 10:05:35 -05:00
deepikabhavnani 1dad73949c Thread statistics addition.
API to get all system threads information and states.
2018-05-11 10:05:32 -05:00
Cruz Monrreal ab7a856657
Merge pull request #6784 from deepikabhavnani/mbed_stats_fix
Add common define MBED_ALL_STATS_ENABLED to enable all statistics
2018-05-10 23:25:23 -05:00
Cruz Monrreal a2370d57fa
Merge pull request #6809 from deepikabhavnani/add_assert
Mbed Stats: Assert if NULL pointer passed as arg
2018-05-09 10:50:10 -05:00
Cruz Monrreal 68ad00ffb8
Merge pull request #6645 from woodsking2/master
mbed_wait_api: add comments to warn the func will lock deep sleep
2018-05-08 10:54:48 -05:00
Cruz Monrreal 39fd120064
Merge pull request #6797 from OpenNuvoton/nuvoton_fix_noserial
Fix compile error with DirectSerial in serial-less build
2018-05-07 10:27:27 -05:00
deepikabhavnani 0f0a4c0a50 Check for NULL pointer before access 2018-05-03 11:23:12 -05:00
Kevin Bracey cf91b1c6d7 Add POSIX fcntl to control blocking
Add the POSIX fcntl call, but only implementing F_SETFL and F_GETFL
for O_NONBLOCK, so users can control the blocking flag of streams
with only the integer file descriptor.

Necessary to portably control the blockingness of the console:

    int flags = fcntl(STDOUT_FILENO, F_GETFL);
    fcntl(STDOUT_FILENO, F_SETFL, flags | O_NONBLOCK);
2018-05-03 15:40:26 +03:00
Kevin Bracey a8ab233a1a retarget: distinguish FileHandle and descriptor
Avoid using `fh` for the integer descriptor numbers, reserving
that for the `FileHandle` objects - use `fildes` or `fd`,
matching POSIX.
2018-05-03 15:40:26 +03:00
Kevin Bracey 59f49e2b96 Add `is_blocking()` method to FileHandle
There was no way to check current blocking state, so no way to modify
and restore status.

Also have default FileHandle::set_blocking() used by real files return a
correct error code when asked for non-blocking, and success when asked
for blocking.

These were minor omissions that are required to implement POSIX fcntl
properly.

fixup! Add `is_blocking()` method to FileHandle
2018-05-03 15:38:33 +03:00
ccli8 bfe9ee7777 Fix compile error with DirectSerial in serial-less build 2018-05-03 10:52:09 +08:00
James Wang c9b2640f70 mbed_wait_api: wait_ms() wait() wait_us() add "If the RTOS is present" comments 2018-05-03 10:22:32 +08:00
deepikabhavnani a228fd0f3b Add common define to enable all statistics
As part of Device Health requirement, all mbed OS statistics should be
enabled with single macro `MBED_ALL_STATS_ENABLED`
2018-05-02 14:14:07 -05:00
ccli8 89622378d8 Fix compile error with MBED_MEM_TRACING_ENABLED and ARMC6 2018-04-27 14:19:12 +08:00
Kevin Bracey 39fa676993 Make poll() use RTOS tick count
RTOS maintains a tick count - use it, avoiding issues with sleep and low
power timers.
2018-04-23 14:42:59 +03:00
Martin Kojtal c6b6bab2f9
Merge pull request #6630 from OpenNuvoton/nuvoton_add_nonsecure_flash
Support secure/non-secure flash IAP for Cortex-M23/M33
2018-04-19 17:24:27 +02:00
James Wang 27ce443a70 accept Amanda Butler's review. change to "This function always spins to get the exact number of microseconds, which potentially affects power (such as preventing deep sleep) and multithread performance. You can avoid it by using Thread::wait()." 2018-04-18 10:22:50 +08:00
Cruz Monrreal d680ceeba6
Merge pull request #6603 from marcuschangarm/fix-flowcontrol
Optional hardware flow control for STDOUT
2018-04-17 13:15:31 -05:00
Cruz Monrreal 7dabd247ab
Merge pull request #6510 from yossi2le/add-deprecated-doxygen-remarks
Adding missing @deprecated to function inline documentation
2018-04-17 10:53:54 -05:00
James Wang 04627992db Accept Kevin Bracey's review, "wait_ms() and wait(float) always spin to get an exact number of microseconds, potentially impacting power and multi-thread performance. Again, avoided by Thread::wait()". 2018-04-17 18:11:59 +08:00
James Wang efc228ff06 accept Cruz Monrreal's review 2018-04-17 15:23:15 +08:00
James Wang 4c69419e2e mbed_wait_api: add comments to warn the func will lock deep sleep 2018-04-16 18:13:15 +08:00
Marcus Chang 7e6538ffed Optional hardware flow control for STDOUT
Some platforms have interface chips with hardware flow control
enabled by default. This commit adds configurable flow control to
STDOUT.

Usage:

* Define pin names STDIO_UART_RTS for Rx-flow-control and
  STDIO_UART_CTS for Tx-flow-control.
* Set target.console-uart-flow-control. Valid options are:
  null, RTS, CTS, and RTSCTS.
2018-04-15 20:12:14 -07:00
ccli8 1b7b94e0ad Add MBED_NONSECURE_ENTRY for all-toolchain secure gateway functions 2018-04-16 09:38:39 +08:00
Cruz Monrreal 339283b3b8
Merge pull request #6418 from amq/poll-lowpowertimer
Add an option to use LowPowerTimer for poll
2018-04-12 18:37:22 -05:00
Senthil Ramakrishnan 194b89cce6 Fix doxygen comments to reflect the deprecated functions 2018-04-03 14:10:39 -05:00
Yossi Levy 8684a63732 Fix Travis CI docs issues 2018-04-02 13:01:21 +03:00
Yossi Levy 57b4653a98 Adding @deprecated functions to the inline documentation of deprecated functions 2018-03-29 12:05:26 +03:00
amq fc412bba5f
Include LowPowerTimer.h 2018-03-28 21:53:35 +02:00
Cruz Monrreal ddf70f1dc9
Merge pull request #6377 from scartmell-arm/feature-deep-sleep-tracing-filename-fix
Replace runtime strip_path function with compiler intrinsic equivalents
2018-03-23 10:28:25 -05:00
Cruz Monrreal 9932b4c983
Merge pull request #6309 from deepikabhavnani/peek_api
Peek API to view data of buffer without popping
2018-03-22 11:28:15 -05:00
Cruz Monrreal 3ddca11395
Merge pull request #6368 from kjbracey-arm/atomic_volatile
Sort out volatiles in the atomic functions
2018-03-21 17:03:27 -05:00
amq 2e9ff4755c Add an option to use LowPowerTimer for poll 2018-03-21 05:05:58 +00:00
Steven Cartmell ab2abcb29d Fix issues with __FILENAME__ macro
- Move macro definition to mbed_toolchain.h
- Remove double underscores from macro which are reserved.
- Fix macro for IAR until compiler flags to disable path are added again.
2018-03-20 14:29:34 +00:00
Steven Cartmell 1e3050a1df Remove superfluous compiler check in macro 2018-03-16 14:41:56 +00:00
Cruz Monrreal 9cac3b2f6b
Merge pull request #6149 from bmcdonnell-ionx/typos
Fix typos in the files
2018-03-15 10:53:03 -05:00
Steven Cartmell bd63f93984 Replace runtime strip_path function with compiler intrinsic equivalents
Sleep manager tracing strips the path from filenames and uses the result as an
identifier to track drivers that unlock/lock sleep tracing. Replace the function
that strips the path from the string, replace this function with a new macro,
__FILENAME__ which performs the same action in a compiler specific manner.

- GCC_ARM, use __builtin_strrchr which is optimized out at compile time.
- ARM, use __MODULE__ which returns the filename without path.
- IAR, specifiy the --no_path_in_file_macros compiler flag.
2018-03-15 15:49:42 +00:00
Kevin Bracey a8f75e324d Add volatile qualifiers to atomic functions
The atomic functions preserve volatile semantics - they only perform the
accesses specified. Add the volatile qualifier to the value pointer to
reflect this. This does not change existing caller code - it's
equivalent to adding a const qualifier to indicate we don't write to
a pointer - it means people can pass us qualified pointers without
casts, letting the compile check const- or volatile-correctness.

This is consistent with C11 <stdatomic.h>, which volatile-qualifies its
equivalent functions.

Note that this useage of volatile has nothing to do with the atomicity -
objects accessed via the atomic functions do not need to be volatile.
But it does permit these calls to be used on objects which have been
declared volatile.
2018-03-15 11:06:27 +02:00
Kevin Bracey f62b93926a Remove unnecessary casts
The volatile qualifier on the __LDREX/__STREX prototypes only means that
it's safe to use them on volatile objects. Doesn't mean you actually
have to pass them volatile pointers.

Adding the volatile is a bit like doing strlen((const char *) ptr)
because you've got a non-const pointer.
2018-03-15 11:06:27 +02:00
Deepika 9fa660ebde Peek API to view data of buffer without popping 2018-03-08 14:47:21 -06:00
Wolfgang Betz 3057aa71f9 Align `ATCmdParser::process_oob()` to `ATCmdParser::vrecv()`'s newline handling 2018-03-08 14:06:30 +01:00
Bartek Szatkowski d6f57bc3e8 Fix review comments and merge issues 2018-03-02 00:29:14 +00:00
Steven Cartmell 206cc299e0 Fix merge conflict mishap 2018-03-01 17:33:21 +00:00
Steven Cartmell bd23625d23 Rename SLEEP_STATS_ENABLED to SLEEP_TRACING_ENABLED 2018-03-01 17:25:33 +00:00
Steven Cartmell 74bdf1c3a3 Rename SLEEP_PROFILING_ENABLED to MBED_SLEEP_STATS_ENABLED 2018-03-01 17:25:15 +00:00
Steven Cartmell 0f6b73ae0f Add optional tracing to sleep manager lock/unlock
Add tracing output to console to track when drivers lock and unlock deep
sleep. Tracing output is enabled by configuring the
'SLEEP_PROFILING_ENABLED' at compile time.

- Wrapped sleep_manager_lock/sleep_manager_unlock in a macro to
conditionally call tracing functions when 'SLEEP_PROFILING_ENABLED' is
set.
- Define a global structure to track driver names and how many locks
they hold in the sleep manager.
2018-03-01 17:24:53 +00:00
Bartek Szatkowski 4cb47df40a Add system_reset() function to Mbed OS 2018-02-28 16:42:34 +00:00
Anna Bridge dce5a2febe
Merge pull request #6209 from pan-/improve-sleep-header
Platform: Improve mbed_sleep.h
2018-02-28 14:12:54 +00:00
Cruz Monrreal 153fa05bea
Merge pull request #6172 from adustm/l4_linkergcc
Use SRAM2 32Kbytes on STM32L475 / L476 and L486 devices
2018-02-27 13:46:26 -06:00
Vincent Coubard 56bc7fb391
Platform: Improve mbed_sleep.h
* Qualify inclusion of sleep_api.h
* use standard `inline` qualification instead of the non standard `__INLINE`
2018-02-26 11:33:17 +00:00
adustm 0efc876bb4 Call to specific _wrap_sbrk to support 2 region model for heap and stack 2018-02-22 17:36:20 +01:00
Christopher Haster 72b0a07ffe retarget: Fix path behaviour without leading slash
Current behaviour ends up undefined when the constructor leaves early.
Now FilePath just discards leading slashes and otherwise asserts if the
path is bad.
2018-02-21 14:43:53 -06:00
Brendan McDonnell c4f10aafee typos 2018-02-20 20:11:19 -05:00
Martin Kojtal e8efe11c0e
Merge pull request #6031 from OpenNuvoton/nuvoton_m2351_cthunk
M23: Fix CThunk error on Cortex-M23
2018-02-08 15:21:24 +00:00
Jimmy Brisson 7b5d48df38
Merge pull request #5571 from kjbracey-arm/retarget_fh
Complete mbed_retarget FileHandle rework
2018-02-07 17:21:09 -06:00
ccli8 e9e9b8ed5c [M23] Fix CThunk error on Cortex-M23
Cortex-M23 doesn't support ARMv8-M Main Extension and so doesn't support:
ldm  r0, {r0, r1, r2, pc}

Fix it by going Cortex-M0/M0+ way:
ldm  r0, {r0, r1, r2, r3}
bx   r3
2018-02-07 15:45:54 +08:00
Cruz Monrreal 07fce417ca
Merge pull request #5852 from maciejbocianski/scoped_lock
ScopedLock implementation
2018-02-06 12:51:21 -06:00
Kevin Bracey f79bfddcad Make stdin/stdout/stderr be FileHandles
Rework so that everything is a FileHandle, including
stdin/stdout/stderr.

Provide legacy functionality of calling serial_getc and serial_putc as
an internal "DirectSerial" FileHandle.

Add a JSON option to use UARTSerial instead.

Add hooks for target and application to provide custom FileHandles.

Allow for CRLF conversion to work on any FileHandle that isatty(),
as stdin/stdout or any other FILE. Optimise the conversion so it
doesn't force all write calls to be 1 byte. Limit the conversion
to the stdio layer, so that read() and write() work the same as
the FileHandle methods - this seems less confusing.
2018-02-06 11:07:23 +02:00