Renamed Projects/Unfinished to Projects/Incomplete for consistancy.
[pub/USBasp.git] / Projects / Magstripe / Magstripe.h
index fbf68e5..aabf6ac 100644 (file)
        /* Includes: */\r
                #include <avr/io.h>\r
                #include <avr/wdt.h>\r
-               #include <avr/interrupt.h>\r
                #include <avr/power.h>\r
-               #include <stdbool.h>\r
-               #include <string.h>\r
 \r
                #include "Descriptors.h"\r
-               #include "MagstripeHW.h"\r
-               #include "CircularBitBuffer.h"\r
+               #include "Lib/MagstripeHW.h"\r
+               #include "Lib/CircularBitBuffer.h"\r
 \r
-               #include <LUFA/Version.h>                    // Library Version Information\r
-               #include <LUFA/Common/ButtLoadTag.h>         // PROGMEM tags readable by the ButtLoad project\r
-               #include <LUFA/Drivers/USB/USB.h>            // USB Functionality\r
-               #include <LUFA/Scheduler/Scheduler.h>        // Simple scheduler for task management\r
-\r
-               \r
-       /* Task Definitions: */\r
-               /** Task definition for the keyboard and magnetic card reading task. */\r
-               TASK(USB_Keyboard_Report);\r
-               \r
-               TASK(Magstripe_Read);\r
+               #include <LUFA/Version.h>\r
+               #include <LUFA/Drivers/USB/USB.h>\r
+               #include <LUFA/Drivers/USB/Class/HID.h>\r
 \r
        /* Macros: */\r
-               /** HID Class Specific Request to get the current HID report from the device. */\r
-               #define REQ_GetReport      0x01\r
-\r
-               /** HID Class Specific Request to get the current device idle count. */\r
-               #define REQ_GetIdle        0x02\r
-\r
-               /** HID Class Specific Request to set the current HID report to the device. */\r
-               #define REQ_SetReport      0x09\r
-\r
-               /** HID Class Specific Request to set the device's idle count. */\r
-               #define REQ_SetIdle        0x0A\r
-\r
-               /** HID Class Specific Request to get the current HID report protocol mode. */\r
-               #define REQ_GetProtocol    0x03\r
-\r
-               /** HID Class Specific Request to set the current HID report protocol mode. */\r
-               #define REQ_SetProtocol    0x0B\r
-               \r
+               /** Total number of tracks which can be read from the card, between 1 and 3. */\r
+               #define TOTAL_TRACKS       3\r
+       \r
+               /** HID keyboard keycode to indicate that no is currently pressed. */\r
+               #define KEY_NONE           0\r
+       \r
                /** HID keyboard keycode to indicate that the "1" key is currently pressed. */\r
                #define KEY_1              30\r
 \r
                        uint8_t Reserved; /**< Reserved for OEM use, always set to 0 */\r
                        uint8_t KeyCode; /**< Key code array for pressed keys - up to six can be given simultaneously */\r
                } USB_KeyboardReport_Data_t;\r
-\r
-       /* Event Handlers: */\r
-               /** Indicates that this module will catch the USB_Connect event when thrown by the library. */\r
-               HANDLES_EVENT(USB_Connect);\r
-\r
-               /** Indicates that this module will catch the USB_Disconnect event when thrown by the library. */\r
-               HANDLES_EVENT(USB_Disconnect);\r
-\r
-               /** Indicates that this module will catch the USB_ConfigurationChanged event when thrown by the library. */\r
-               HANDLES_EVENT(USB_ConfigurationChanged);\r
-\r
-               /** Indicates that this module will catch the USB_UnhandledControlPacket event when thrown by the library. */\r
-               HANDLES_EVENT(USB_UnhandledControlPacket);\r
-               \r
+       \r
        /* Function Prototypes: */\r
-               bool GetNextReport(USB_KeyboardReport_Data_t* ReportData);\r
-               void SendKey(USB_KeyboardReport_Data_t* KeyboardReportData, uint8_t Key);\r
-               void Send(USB_KeyboardReport_Data_t* KeyboardReportData, bool SendReport);\r
+               void SetupHardware(void);\r
+               void ReadMagstripeData(void);\r
                \r
+               void EVENT_USB_Device_ConfigurationChanged(void);\r
+               void EVENT_USB_Device_UnhandledControlRequest(void);\r
+               void EVENT_USB_Device_StartOfFrame(void);\r
+\r
+               bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
+                                                 void* ReportData, uint16_t* ReportSize);\r
+               void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, \r
+                                                         const void* ReportData, const uint16_t ReportSize);\r
+                                                                                                                 \r
 #endif\r