Commit Graph

39 Commits (8a0af607f3c211178b1ac2a80f281662abb1e017)

Author SHA1 Message Date
Kevin Bracey 3939c992d4 Revise MbedCRC template
* Use compile-time detection of hardware CRC capability, so unneeded
  code and tables do not go into the image.
* Add global JSON config option to allow choice between no tables,
  16-entry tables or 256-entry tables for software CRC. Default set
  to 16-entry, reducing ROM size from previous 256-entry.
* Allow manual override in template parameter to force software or
  bitwise CRC for a particular instance.
* Micro-optimisations, particularly use of `RBIT` instruction and
  optimising bitwise computation using inline assembler.

Incompatible changes:

* Remove special-case "POLY_32BIT_REV_ANSI" - users can use standard
  POLY_32BIT_ANSI, which now uses the same 16-entry tables by default,
  or can use hardware acceleration, which was disabled for
  POLY_32BIT_REV_ANSI. MbedCRC<POLY_32BIT_ANSI, 32, CrcMode::TABLE> can
  be used to force software like POLY_32BIT_REV_ANSI.
* The precomputed table for POLY_16BIT_IBM had errors - this has been
  corrected, but software CRC results will be different from the previous
  software calculation.
* < 8-bit CRC results are no longer are shifted up in the output value,
  but placed in the lowest bits, like other sizes. This means that code
  performing the SD command CRC will now need to use `(crc << 1) | 1`,
  rather than `crc | 1`.
2019-11-13 14:31:49 +02:00
Hugues Kamba 5bfb5bf269 Remove `statement is unreachable` warning in MbedCRC.h
The code removed appears unnecessary given that the switch case below
also handles the case where the polynomial is `POLY_32BIT_REV_ANSI`
2019-09-19 10:56:07 +01:00
Hugues Kamba 5933dec3b7 Harmonise Doxygen comments in drivers, events, platform and rtos dirs
When a Doxygen group has been defined (created), all its needed to add
documentation to that group is `\addtogroup`. Since all the information
about the group is preserved, it is not necessary to mention the group
hierarchy again with `\ingroup`. This PR removes unnecessary Doxygen lines
across the `drivers`, `events`, `platform` and `rtos` directories.

It also ensures that new groups are created with `\defgroup` once and
referenced with `\addtogroup` whenever documentation needs to be added to
an existing group.
2019-09-09 10:59:51 +01:00
Hugues Kamba 20f81e19be Change Doxygen groups structure, splitting first by Public/Internal (#11105)
* Change Doxygen groups structure, splitting first by Public/Internal

This commit also does the following:
* groups the documentation of related API
* moves `events/internal/equeue.h` to `events/equeue.h`
* merges `events/source/README.md` to `events/README.md`
2019-08-02 12:23:47 +01:00
Hugues Kamba bfa1b4dd84 Drivers/Events/RTOS Public and internal APIs cleanup (#10955)
Separate drivers, events, and rtos internal APIs from public APIs.

* Move source files to source subdirs
* Move internal headers to internal subdirs
* Add Doxygen comments for documenting internal and public APIs
* Remove source code from header files in order to remove include pre-processor directives
that included header files not directly used by said header files
* Explicitly include header files instead of implicit inclusions via third-party header files.

Release Notes

This will break user code that was using an internal API as the internal header files have been moved.
This will only break if the user was including the header file using a namespace (i.e #include "foo/bar.h" instead of #include "bar.h"
2019-08-02 12:23:47 +01:00
Amanda Butler 13f1217a0a
Edit MbedCRC.h
Review changes, and edit file while I'm at it.
2019-06-17 08:20:55 -05:00
Bartek Szatkowski fda4988c05 Extend MbedCRC class doxygen to add more operational details 2019-06-17 12:14:27 +01:00
Bartek Szatkowski 9e2b516bca Fix doxygen for MbedCRC 2019-06-17 10:21:33 +01:00
George Psimenos f82b7d8229 Improve type cast 2019-05-31 13:59:40 +01:00
George Psimenos 9f66347bd3 Make buffer parameter const 2019-05-28 15:58:19 +01: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
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
Martin Kojtal aec8bb6046 drivers: add spdx license 2018-11-28 10:39:50 +00:00
Deepika a21a4224c5 Docs update in platform folder
1. Remove protected member functions and protected attributes from rendering
   on docs site
2. Update BusInOut doxygen
2018-11-08 17:31:11 -06:00
kegilbert e8e9076662 Fix typos in Drivers doxygen 2018-10-30 15:04:54 -05:00
Mel W fae81b698b
One more missing period. 2018-10-26 10:45:38 +03:00
Mel W 782251a089
Adding periods 2018-10-26 10:45:05 +03:00
Cruz Monrreal II ec9404a32e Merge branch 'fix_doxygen_MBedCRC' of ssh://github.com/maciejbocianski/mbed-os into rollup 2018-10-25 21:49:45 -05:00
Martin Kojtal e9f98906d7 crc: fix crc mode coding style 2018-10-25 09:58:17 +01:00
Maciej Bocianski 394df128fb MbedCRC doxygen fix 2018-10-24 09:33:37 +02:00
Christopher Haster 43651dfcdf
CRC: Removed assertion on NULL buffer
When length is zero, the buffer is not accessed. The CRC functions are used
inside several other layers where a 0-length buffer may have meanings in
different contexts and being able to pass 0-length NULL buffers to CRC as a
noop simplifies the code.
2018-09-03 09:20:47 -05:00
Deepika 4d7fdfc2a9 Use MbedCRC for LittleFS (0xEDB88320)
CRC used in LittleFS is Reversed ANSI, hence new polynomial added.
Reversed polynomials perform shift in reverse direction of standard
polynomial, and we do not have option to notify reverse shift to hardware.
Hence this option is available in software only.
2018-09-02 15:25:40 -05:00
Cruz Monrreal 1e3e69463f
Merge pull request #7781 from deepikabhavnani/crc_safety
Add thread safety to CRC class
2018-08-29 15:42:23 -05:00
deepikabhavnani 986411ccb0 Add thread safety to CRC class
Thread safety is added to serialize the hardware CRC and will not
impact the software CRC.
2018-08-21 15:26:05 -05:00
deepikabhavnani 7885edb671 Template specialization didnt work after addition of default constructor
Template specialization didn't work after addition of default constructor
for unsupported polynomials. Since the argument type and count are same,
compiler always selects the default constructor.
2018-08-14 15:47:44 -05:00
deepikabhavnani f593555cbb Guard hardware related implementation into DEVICE_CRC 2018-08-09 17:28:19 -05:00
deepikabhavnani 531a83ebd2 Add optimized implementation of 32-bit ANSI CRC 2018-08-09 17:27:07 -05:00
Martin Kojtal 700e6df834 drivers: astyle update 2018-06-29 10:36:36 +01:00
deepikabhavnani e19f6ac4dd Suppress warning for IAR compiler as well 2018-06-19 11:36:42 -05:00
Steven Cartmell d53ffb7022 HAL CRC: Fix inverted CRC mode selection 2018-05-24 17:51:49 +01:00
Steven Cartmell 8e14b5977b HAL CRC: Add bit width parameter to crc_config_t 2018-05-24 17:51:49 +01:00
Steven Cartmell e1ca2b32fc Add CRC configuration options to HAL API 2018-05-24 17:51:49 +01:00
Steven Cartmell 5847f0c975 Fix CRC class coding conventions 2018-05-24 17:51:48 +01:00
Steven Cartmell e0d98bfe2c Adapt MbedCRC class to support Hardware CRC
- Move CRC polynomial enum into HAL layer, so it's accessible from platform
  implementations

- Add enum to CRC class to indicate which mode the CRC class should use:
  HARDWARE, TABLE, or BITWISE

- Add calls to HAL Hardware CRC API to each of the compute functions when the
  class is in HARDWARE mode.

- Add missing constructor call to template constructor, and remove const from
  delegating constructor.
2018-05-24 17:50:12 +01:00
Deepika 331620e1d0 Default constructor for template class should be part of header file 2018-03-23 14:55:07 -05:00
deepikabhavnani b60eb1d001 Updated table to be const and small fixes 2018-02-27 09:35:55 -06:00
deepikabhavnani af0982295f Moved specialized functions to CPP file
Template specialized functions are moved to cpp file, to add MbedCRC.h
in mbed.h. Else linker shall multiple definition error.
2018-02-20 08:12:44 -06:00
deepikabhavnani 8e537115c5 Removed init/deinit and added cpp file for tables 2018-02-02 09:43:06 -06:00
deepikabhavnani afe8834bb8 CRC class implementation
CRC class `MbedCRC.h` is templated class created to support hardware/software
CRCs. Default CRC will be hardware CRC when support for HAL is available.

Polynomial tables are available for 8/16 bit CCITT, 7/16 bit for SD card and
32-bit ANSI. Polynomial table implementation will be used if Hardware CRC is
not available.

In case device does not have hardware CRC and polynomial table is not supported,
CRC is still available and is computed runtime bit by bit for all data input.
2018-01-24 13:26:41 -06:00