X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/c619e21fa74d7ea225292ecf5d514d0b253ad0a8..d6543dee0d2723ee9f09137116264f123433b1a3:/Projects/Magstripe/Magstripe.c?ds=inline diff --git a/Projects/Magstripe/Magstripe.c b/Projects/Magstripe/Magstripe.c index 95c81f342..1151735bd 100644 --- a/Projects/Magstripe/Magstripe.c +++ b/Projects/Magstripe/Magstripe.c @@ -130,6 +130,7 @@ void ReadMagstripeData(void) bool ClockPinLevel = ((Magstripe_LCL & TrackInfo[Track].ClockMask) != 0); bool ClockLevelChanged = (((Magstripe_LCL ^ Magstripe_Prev) & TrackInfo[Track].ClockMask) != 0); + /* Sample on rising clock edges */ if (ClockPinLevel && ClockLevelChanged) BitBuffer_StoreNextBit(&TrackDataBuffers[Track], DataPinLevel); } @@ -171,15 +172,15 @@ uint16_t CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const H static bool IsKeyReleaseReport; static bool IsNewlineReport; - BitBuffer_t* Buffer = NULL; USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData; + BitBuffer_t* Buffer = NULL; - /* Key reports must be interleaved with 0 Key Code reports to release the keys, or repeated keys will be ignored */ + /* Key reports must be interleaved with key release reports, or repeated keys will be ignored */ IsKeyReleaseReport = !IsKeyReleaseReport; if (IsKeyReleaseReport) { - KeyboardReport->KeyCode = 0; + KeyboardReport->KeyCode = KEY_NONE; } else if (IsNewlineReport) { @@ -188,6 +189,7 @@ uint16_t CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const H } else { + /* Read out tracks in ascending order - when each track buffer is empty, progress to next buffer */ if (TrackDataBuffers[0].Elements) Buffer = &TrackDataBuffers[0]; else if (TrackDataBuffers[1].Elements) @@ -199,7 +201,7 @@ uint16_t CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const H KeyboardReport->KeyCode = BitBuffer_GetNextBit(Buffer) ? KEY_1 : KEY_0; - /* If buffer now empty, next report must be a newline to seperate track data */ + /* If current track buffer now empty, next report must be a newline to seperate track data */ if (!(Buffer->Elements)) IsNewlineReport = true; }