Thank you for this very useful CAN code generator. However, the signal packing functions use |=
The code to the right of the |= already includes all the signals in the byte (i.e. we are not assembling the byte by several lines ORing into the same byte). I would therefore suggest that = should be used for the signal packing and that the |= is only needed for the checksum.
|= has the appearance of working correctly provided that the cframe->Data elements are zeroed but this is not always necessarily the case.