Skip to content

Commit 7d48bbb

Browse files
author
PX4BuildBot
committed
1 parent aedb911 commit 7d48bbb

File tree

511 files changed

+163711
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

511 files changed

+163711
-1
lines changed

README.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

checksum.h

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
#pragma once
2+
3+
#if defined(MAVLINK_USE_CXX_NAMESPACE)
4+
namespace mavlink {
5+
#elif defined(__cplusplus)
6+
extern "C" {
7+
#endif
8+
9+
// Visual Studio versions before 2010 don't have stdint.h, so we just error out.
10+
#if (defined _MSC_VER) && (_MSC_VER < 1600)
11+
#error "The C-MAVLink implementation requires Visual Studio 2010 or greater"
12+
#endif
13+
14+
#include <stdint.h>
15+
16+
/**
17+
*
18+
* CALCULATE THE CHECKSUM
19+
*
20+
*/
21+
22+
#define X25_INIT_CRC 0xffff
23+
#define X25_VALIDATE_CRC 0xf0b8
24+
25+
#ifndef HAVE_CRC_ACCUMULATE
26+
/**
27+
* @brief Accumulate the CRC16_MCRF4XX checksum by adding one char at a time.
28+
*
29+
* The checksum function adds the hash of one char at a time to the
30+
* 16 bit checksum (uint16_t).
31+
*
32+
* @param data new char to hash
33+
* @param crcAccum the already accumulated checksum
34+
**/
35+
static inline void crc_accumulate(uint8_t data, uint16_t *crcAccum)
36+
{
37+
/*Accumulate one byte of data into the CRC*/
38+
uint8_t tmp;
39+
40+
tmp = data ^ (uint8_t)(*crcAccum &0xff);
41+
tmp ^= (tmp<<4);
42+
*crcAccum = (*crcAccum>>8) ^ (tmp<<8) ^ (tmp <<3) ^ (tmp>>4);
43+
}
44+
#endif
45+
46+
47+
/**
48+
* @brief Initialize the buffer for the MCRF4XX CRC16
49+
*
50+
* @param crcAccum the 16 bit MCRF4XX CRC16
51+
*/
52+
static inline void crc_init(uint16_t* crcAccum)
53+
{
54+
*crcAccum = X25_INIT_CRC;
55+
}
56+
57+
58+
/**
59+
* @brief Calculates the CRC16_MCRF4XX checksum on a byte buffer
60+
*
61+
* @param pBuffer buffer containing the byte array to hash
62+
* @param length length of the byte array
63+
* @return the checksum over the buffer bytes
64+
**/
65+
static inline uint16_t crc_calculate(const uint8_t* pBuffer, uint16_t length)
66+
{
67+
uint16_t crcTmp;
68+
crc_init(&crcTmp);
69+
while (length--) {
70+
crc_accumulate(*pBuffer++, &crcTmp);
71+
}
72+
return crcTmp;
73+
}
74+
75+
76+
/**
77+
* @brief Accumulate the MCRF4XX CRC16 by adding an array of bytes
78+
*
79+
* The checksum function adds the hash of one char at a time to the
80+
* 16 bit checksum (uint16_t).
81+
*
82+
* @param data new bytes to hash
83+
* @param crcAccum the already accumulated checksum
84+
**/
85+
static inline void crc_accumulate_buffer(uint16_t *crcAccum, const char *pBuffer, uint16_t length)
86+
{
87+
const uint8_t *p = (const uint8_t *)pBuffer;
88+
while (length--) {
89+
crc_accumulate(*p++, crcAccum);
90+
}
91+
}
92+
93+
#if defined(MAVLINK_USE_CXX_NAMESPACE) || defined(__cplusplus)
94+
}
95+
#endif

common/common.h

Lines changed: 2468 additions & 0 deletions
Large diffs are not rendered by default.

common/common.hpp

Lines changed: 2317 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)