mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			
		
			
				
	
	
		
			32 lines
		
	
	
		
			906 B
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			906 B
		
	
	
	
		
			C++
		
	
	
/* Copyright (c) 2013 Nordic Semiconductor. All Rights Reserved.
 | 
						|
 *
 | 
						|
 * The information contained herein is property of Nordic Semiconductor ASA.
 | 
						|
 * Terms and conditions of usage are described in detail in NORDIC
 | 
						|
 * SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT.
 | 
						|
 *
 | 
						|
 * Licensees are granted free, non-transferable use of the information. NO
 | 
						|
 * WARRANTY of ANY KIND is provided. This heading must NOT be removed from
 | 
						|
 * the file.
 | 
						|
 *
 | 
						|
 */
 | 
						|
 | 
						|
#include "crc16.h"
 | 
						|
#include <stdio.h>
 | 
						|
 | 
						|
uint16_t crc16_compute(const uint8_t * p_data, uint32_t size, const uint16_t * p_crc)
 | 
						|
{
 | 
						|
    uint32_t i;
 | 
						|
    uint16_t crc = (p_crc == NULL) ? 0xffff : *p_crc;
 | 
						|
 | 
						|
    for (i = 0; i < size; i++)
 | 
						|
    {
 | 
						|
        crc = (unsigned char)(crc >> 8) | (crc << 8);
 | 
						|
        crc ^= p_data[i];
 | 
						|
        crc ^= (unsigned char)(crc & 0xff) >> 4;
 | 
						|
        crc ^= (crc << 8) << 4;
 | 
						|
        crc ^= ((crc & 0xff) << 4) << 1;
 | 
						|
    }
 | 
						|
    
 | 
						|
    return crc;
 | 
						|
}
 |