float decodeCanSignal(CanSignal* signal, uint64_t data) { uint64_t rawValue = getBitField(data, signal->bitPosition, signal->bitSize); if(signal->twosComplement) { return getTwosComplement(rawValue, signal->bitSize) * signal->factor + signal->offset; } return rawValue * signal->factor + signal->offset; }
void ShiftRegister595::refresh() { DigitRenderer::refresh(); unsigned char bitField = getBitField(); shiftOut(dataPin, clockPin, LSBFIRST, bitField); // The last digit in the chain is responsible for latch the output buffers if (lastDigit) { digitalWrite(strobePin, HIGH); digitalWrite(strobePin, LOW); } }