新增 found flag,找不到就返回,原本找不到會提供最後一個值。
void LIN_queuePacket(uint8_t cmd) {
bool found = false;
const lin_rx_cmd_t *tempSchedule =
LIN_rxCommand; // copy table pointer so we can modify it
cmd &= 0x3F; // clear possible parity bits
for (uint8_t i = 0U; i < LIN_rxCommandLength; i++) {
if (cmd == tempSchedule->cmd) {
found = true;
break;
}
tempSchedule++; // go to next entry
}
// 找不到就返回
if (found == false) {
return;
}
LIN_packet.type = tempSchedule->type;
LIN_packet.length = tempSchedule->length;
// Build Packet - User defined data
// add data
memcpy(LIN_packet.data, tempSchedule->data, LIN_packet.length);
// Add Checksum
LIN_packet.checksum =
LIN_getChecksum(LIN_packet.length, LIN_packet.PID, LIN_packet.data);
LIN_sendPacket(LIN_packet.length, LIN_packet.PID, LIN_packet.data);
}
留言
張貼留言