annotate crc_wrapper.cpp @ 5:115cfa4a3239 default tip

Added icon upload function for OSTC 4/5 For the upload the same process as the one for the firmware update is used => CRC functionality has been copied from the ostc_pack SW
author Ideenmodellierer
date Tue, 30 Dec 2025 21:41:02 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
1 #include "crc_wrapper.h"
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
2
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
3 extern "C" {
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
4 #include "crcmodel.h"
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
5 }
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
6
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
7
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
8 CrcWrapper::CrcWrapper(QObject *parent)
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
9 : QObject(parent)
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
10 {}
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
11
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
12
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
13 void CrcWrapper::init(p_cm_t p_cm)
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
14 {
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
15 cm_ini(p_cm);
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
16 }
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
17
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
18 void CrcWrapper::cm_next(p_cm_t p_cm, int ch)
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
19 {
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
20 cm_nxt(p_cm, ch);
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
21 }
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
22
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
23 uint32_t CrcWrapper::CRC_CalcBlockCRC(uint32_t *buffer, uint32_t words)
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
24 {
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
25 cm_t crc_model;
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
26 uint32_t word_to_do;
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
27 uint8_t byte_to_do;
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
28 int i;
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
29
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
30 // Values for the STM32F generator.
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
31
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
32 crc_model.cm_width = 32; // 32-bit CRC
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
33 crc_model.cm_poly = 0x04C11DB7; // CRC-32 polynomial
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
34 crc_model.cm_init = 0xFFFFFFFF; // CRC initialized to 1's
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
35 crc_model.cm_refin = FALSE; // CRC calculated MSB first
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
36 crc_model.cm_refot = FALSE; // Final result is not bit-reversed
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
37 crc_model.cm_xorot = 0x00000000; // Final result XOR'ed with this
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
38
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
39 cm_ini(&crc_model);
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
40
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
41 while (words--)
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
42 {
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
43 // The STM32F10x hardware does 32-bit words at a time!!!
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
44
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
45 word_to_do = *buffer++;
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
46
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
47 // Do all bytes in the 32-bit word.
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
48
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
49 for (i = 0; i < sizeof(word_to_do); i++)
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
50 {
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
51 // We calculate a *byte* at a time. If the CRC is MSB first we
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
52 // do the next MS byte and vica-versa.
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
53
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
54 if (crc_model.cm_refin == FALSE)
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
55 {
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
56 // MSB first. Do the next MS byte.
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
57
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
58 byte_to_do = (uint8_t) ((word_to_do & 0xFF000000) >> 24);
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
59 word_to_do <<= 8;
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
60 }
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
61 else
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
62 {
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
63 // LSB first. Do the next LS byte.
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
64
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
65 byte_to_do = (uint8_t) (word_to_do & 0x000000FF);
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
66 word_to_do >>= 8;
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
67 }
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
68
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
69 cm_nxt(&crc_model, byte_to_do);
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
70 }
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
71 }
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
72
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
73 // Return the final result.
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
74
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
75 return (cm_crc(&crc_model));
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
76 }
115cfa4a3239 Added icon upload function for OSTC 4/5
Ideenmodellierer
parents:
diff changeset
77