- /* Calculate the frame checksum from all fields except the FCS field itself */
- ResponsePacket.FCS = RFCOMM_GetFCSValue(&ResponsePacket, sizeof(ResponsePacket) - sizeof(ResponsePacket.FCS));
-
+ /* Calculate the frame checksum from the appropriate fields */
+ if ((Control & ~FRAME_POLL_FINAL) == RFCOMM_Frame_UIH)
+ ResponsePacket.FCS = RFCOMM_GetFCSValue(&ResponsePacket, sizeof(ResponsePacket.FrameHeader));
+ else
+ ResponsePacket.FCS = RFCOMM_GetFCSValue(&ResponsePacket, sizeof(ResponsePacket.FrameHeader) + sizeof(ResponsePacket.Size));
+