Skip to content

Commit

Permalink
bug fix ckt
Browse files Browse the repository at this point in the history
  • Loading branch information
unref-ptr authored May 23, 2022
1 parent e12554f commit b0618f2
Showing 1 changed file with 15 additions and 22 deletions.
37 changes: 15 additions & 22 deletions src/lwIOLink.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ using namespace lwIOLink;
static constexpr uint8_t ck8_seed = 0x52;
static constexpr uint8_t status_bit_offset = 0x06;
static constexpr uint8_t eventFlag_bit_offset = 0x07;
static constexpr uint8_t ckt_offset = 0x01;
//Figure A.2
static uint8_t mseq_ckt_mask = 0xC0;
static uint8_t mseq_ckt_mask = 0xC0;
static uint8_t ck6_mask = 0x3F;
//Time encoding constants (Figure B.2)
static constexpr uint8_t timebase_bitoffset = 0x06;
Expand Down Expand Up @@ -59,7 +59,7 @@ uint8_t Device::GetChecksum(const uint8_t *data,
uint8_t length) const
{
uint8_t ck8 = ck8_seed;
for (uint8_t i = 0; i < length i++)
for (uint8_t i = 0; i < length; i++)
{
ck8 ^= *data++;
}
Expand Down Expand Up @@ -210,11 +210,6 @@ uint8_t Device::EncodeCycleTime(uint32_t cycleTime_us) const

Device::Device(uint8_t PDIn, uint8_t PDOut, uint32_t min_cycletime)
{
memset(Pd.Out.Data, 0, sizeof(Pd.Out.Data));
memset(Pd.In.Data, 0, sizeof(Pd.Out.Data));
memset(rxBuffer, 0, sizeof(rxBuffer));
memset(txBuffer, 0, sizeof(txBuffer));
memset(ODBuffer, 0, sizeof(ODBuffer));
EventMemory[EventStatusCodeAddr] = Event::StatusCodeDefault;
Pd.Out.Size = PDOut;
Pd.In.Size = PDIn;
Expand Down Expand Up @@ -442,7 +437,7 @@ uint8_t Device::SetResponse()
{
eventFlag = true;
}
const uint8_t status_encoded = static_cast<uint8_t>(status << status_bit_offset)
const uint8_t status_encoded = static_cast<uint8_t>(status.PDIn << status_bit_offset)
| static_cast<uint8_t>(eventFlag<<eventFlag_bit_offset);
txBuffer[checksum_offset] = status_encoded;
uint8_t ck6 = GetChecksum(txBuffer, tx_size);
Expand Down Expand Up @@ -540,20 +535,18 @@ void Device::SaveMasterFrame(const uint8_t rx_byte)
}
if (++rxCnt == ExpectedRXCnt)
{
const uint8_t checksum_byte = rxCnt-1;
const uint8_t master_checksum = rxBuffer[checksum_byte] & ck6_mask;
rxBuffer[checksum_byte] &= mseq_ckt_mask; //Remove checksum
const uint8_t calculated_checksum = GetChecksum(rxBuffer,rxCnt); //Calculate the checksum
if ( master_checksum == calculated_checksum)
{
NewMasterMsg = true;
}
else
{
rxCnt = 0;
const uint8_t master_checksum = rxBuffer[ckt_offset] & ck6_mask;
rxBuffer[ckt_offset] &= mseq_ckt_mask; //Remove checksum
const uint8_t calculated_checksum = GetChecksum(rxBuffer,rxCnt); //Calculate the checksum
if ( master_checksum == calculated_checksum)
{
NewMasterMsg = true;
}
else
{
rxCnt = 0;
ExpectedRXCnt = 0xFF;
}

}
}
}

Expand Down Expand Up @@ -634,7 +627,7 @@ void Device::run()
{
NewMasterMsg = false;
ProcessMessage();
uint8_t tx_size = SetResponse();
const uint8_t tx_size = SetResponse();
DeviceRsp(txBuffer, tx_size);
if (EventsProcessed == true)
{
Expand Down

0 comments on commit b0618f2

Please sign in to comment.