Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: microbit_rubber_ducky microbit_mouse_BLE microbit_mouse_BLE_daybreak_version microbit_presenter
Fork of nRF51822 by
nordic-sdk/components/libraries/crc16/crc16.c@343:6675661fa600, 2015-06-19 (annotated)
- Committer:
- rgrover1
- Date:
- Fri Jun 19 15:55:34 2015 +0100
- Revision:
- 343:6675661fa600
- Parent:
- 103:138bdc859cc9
- Child:
- 345:dfde56236c36
Synchronized with git rev 6d1bf116
Author: Rohit Grover
fix #1: update license headers for all sources obtained from nordic-SDK using a new template obtained from Nordic.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| rgrover1 | 343:6675661fa600 | 1 | /* |
| rgrover1 | 343:6675661fa600 | 2 | * Copyright (c) Nordic Semiconductor ASA |
| rgrover1 | 343:6675661fa600 | 3 | * All rights reserved. |
| rgrover1 | 343:6675661fa600 | 4 | * |
| rgrover1 | 343:6675661fa600 | 5 | * Redistribution and use in source and binary forms, with or without modification, |
| rgrover1 | 343:6675661fa600 | 6 | * are permitted provided that the following conditions are met: |
| rgrover1 | 343:6675661fa600 | 7 | * |
| rgrover1 | 343:6675661fa600 | 8 | * 1. Redistributions of source code must retain the above copyright notice, this |
| rgrover1 | 343:6675661fa600 | 9 | * list of conditions and the following disclaimer. |
| rgrover1 | 343:6675661fa600 | 10 | * |
| rgrover1 | 343:6675661fa600 | 11 | * 2. Redistributions in binary form must reproduce the above copyright notice, this |
| rgrover1 | 343:6675661fa600 | 12 | * list of conditions and the following disclaimer in the documentation and/or |
| rgrover1 | 343:6675661fa600 | 13 | * other materials provided with the distribution. |
| rgrover1 | 343:6675661fa600 | 14 | * |
| rgrover1 | 343:6675661fa600 | 15 | * 3. Neither the name of Nordic Semiconductor ASA nor the names of other |
| rgrover1 | 343:6675661fa600 | 16 | * contributors to this software may be used to endorse or promote products |
| rgrover1 | 343:6675661fa600 | 17 | * derived from this software without specific prior written permission. |
| rgrover1 | 343:6675661fa600 | 18 | * |
| rgrover1 | 343:6675661fa600 | 19 | * |
| rgrover1 | 343:6675661fa600 | 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
| rgrover1 | 343:6675661fa600 | 21 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| rgrover1 | 343:6675661fa600 | 22 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| rgrover1 | 343:6675661fa600 | 23 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR |
| rgrover1 | 343:6675661fa600 | 24 | * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| rgrover1 | 343:6675661fa600 | 25 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| rgrover1 | 343:6675661fa600 | 26 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
| rgrover1 | 343:6675661fa600 | 27 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| rgrover1 | 343:6675661fa600 | 28 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| rgrover1 | 343:6675661fa600 | 29 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| rgrover1 | 343:6675661fa600 | 30 | * |
| rgrover1 | 343:6675661fa600 | 31 | */ |
| rgrover1 | 343:6675661fa600 | 32 | |
| rgrover1 | 343:6675661fa600 | 33 | #include "crc16.h" |
| rgrover1 | 343:6675661fa600 | 34 | #include <stdio.h> |
| rgrover1 | 343:6675661fa600 | 35 | |
| rgrover1 | 343:6675661fa600 | 36 | uint16_t crc16_compute(const uint8_t * p_data, uint32_t size, const uint16_t * p_crc) |
| rgrover1 | 343:6675661fa600 | 37 | { |
| rgrover1 | 343:6675661fa600 | 38 | uint32_t i; |
| rgrover1 | 343:6675661fa600 | 39 | uint16_t crc = (p_crc == NULL) ? 0xffff : *p_crc; |
| rgrover1 | 343:6675661fa600 | 40 | |
| rgrover1 | 343:6675661fa600 | 41 | for (i = 0; i < size; i++) |
| rgrover1 | 343:6675661fa600 | 42 | { |
| rgrover1 | 343:6675661fa600 | 43 | crc = (unsigned char)(crc >> 8) | (crc << 8); |
| rgrover1 | 343:6675661fa600 | 44 | crc ^= p_data[i]; |
| rgrover1 | 343:6675661fa600 | 45 | crc ^= (unsigned char)(crc & 0xff) >> 4; |
| rgrover1 | 343:6675661fa600 | 46 | crc ^= (crc << 8) << 4; |
| rgrover1 | 343:6675661fa600 | 47 | crc ^= ((crc & 0xff) << 4) << 1; |
| rgrover1 | 343:6675661fa600 | 48 | } |
| rgrover1 | 343:6675661fa600 | 49 | |
| rgrover1 | 343:6675661fa600 | 50 | return crc; |
| rgrover1 | 343:6675661fa600 | 51 | } |
