}
Std_ReturnType Fr_TransmitTxLPdu(uint8_t Fr_CtrlIdx, uint16_t Fr_LPduIdx, const uint8_t* Fr_LSduPtr, uint8_t Fr_LSduLength) {
- uint32_t byte, word, buffer, index, bufferIndex;
+ uint32_t word, buffer, index, bufferIndex;
#ifdef DET_ACTIVATED
if (Fr_CtrlIdx != 0) {
return E_NOT_OK;
if (Fr_BuffersConfigured[bufferIndex] == TRUE && Fr_buffer_slot_map[bufferIndex].buffer_ptr->isTx == TRUE) { // Buffer was configured already and is TX
memset((void *)frayREG->WRDS, 0, sizeof(frayREG->WRDS));
for (word = 0; word < (Fr_LSduLength+3)/4; word++) {
- buffer = 0;
- for (byte = 0; byte < 4; byte++) {
- index = word*4+byte;
- if (index < Fr_LSduLength) {
- buffer |= Fr_LSduPtr[index] << byte*8;
- }
- }
+ index = word*4;
+ buffer = Fr_LSduPtr[index++];
+ buffer |= (index < Fr_LSduLength) ? Fr_LSduPtr[index++] << 8 : 0;
+ buffer |= (index < Fr_LSduLength) ? Fr_LSduPtr[index++] << 16 : 0;
+ buffer |= (index < Fr_LSduLength) ? Fr_LSduPtr[index++] << 24 : 0;
frayREG->WRDS[word] = buffer;
}
Fr_buffer_transmit_data(bufferIndex);