Fix flip-ee DFU build target accidentally erasing the target FLASH memory space.
[pub/USBasp.git] / Demos / Device / LowLevel / Mouse / Mouse.c
index 40ec25a..d6552b6 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2011.
+     Copyright (C) Dean Camera, 2012.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2012  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
 /** Indicates what report mode the host has requested, true for normal HID reporting mode, false for special boot
  *  protocol reporting mode.
  */
 /** Indicates what report mode the host has requested, true for normal HID reporting mode, false for special boot
  *  protocol reporting mode.
  */
-bool UsingReportProtocol = true;
+static bool UsingReportProtocol = true;
 
 /** Current Idle period. This is set by the host via a Set Idle HID class request to silence the device's reports
  *  for either the entire idle duration, or until the report status changes (e.g. the user moves the mouse).
  */
 
 /** Current Idle period. This is set by the host via a Set Idle HID class request to silence the device's reports
  *  for either the entire idle duration, or until the report status changes (e.g. the user moves the mouse).
  */
-uint16_t IdleCount = 0;
+static uint16_t IdleCount = 0;
 
 /** Current Idle period remaining. When the IdleCount value is set, this tracks the remaining number of idle
  *  milliseconds. This is separate to the IdleCount timer and is incremented and compared as the host may request
  *  the current idle period via a Get Idle HID class request, thus its value must be preserved.
  */
 
 /** Current Idle period remaining. When the IdleCount value is set, this tracks the remaining number of idle
  *  milliseconds. This is separate to the IdleCount timer and is incremented and compared as the host may request
  *  the current idle period via a Get Idle HID class request, thus its value must be preserved.
  */
-uint16_t IdleMSRemaining = 0;
+static uint16_t IdleMSRemaining = 0;
 
 
 /** Main program entry point. This routine configures the hardware required by the application, then
 
 
 /** Main program entry point. This routine configures the hardware required by the application, then
@@ -61,7 +61,7 @@ int main(void)
        SetupHardware();
 
        LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
        SetupHardware();
 
        LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
-       sei();
+       GlobalInterruptEnable();
 
        for (;;)
        {
 
        for (;;)
        {
@@ -116,8 +116,7 @@ void EVENT_USB_Device_ConfigurationChanged(void)
        bool ConfigSuccess = true;
 
        /* Setup HID Report Endpoint */
        bool ConfigSuccess = true;
 
        /* Setup HID Report Endpoint */
-       ConfigSuccess &= Endpoint_ConfigureEndpoint(MOUSE_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
-                                                   MOUSE_EPSIZE, ENDPOINT_BANK_SINGLE);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(MOUSE_EPADDR, EP_TYPE_INTERRUPT, MOUSE_EPSIZE, 1);
 
        /* Turn on Start-of-Frame events for tracking HID report period expiry */
        USB_Device_EnableSOFEvents();
 
        /* Turn on Start-of-Frame events for tracking HID report period expiry */
        USB_Device_EnableSOFEvents();
@@ -160,7 +159,7 @@ void EVENT_USB_Device_ControlRequest(void)
                                Endpoint_ClearSETUP();
 
                                /* Write the current protocol flag to the host */
                                Endpoint_ClearSETUP();
 
                                /* Write the current protocol flag to the host */
-                               Endpoint_Write_Byte(UsingReportProtocol);
+                               Endpoint_Write_8(UsingReportProtocol);
 
                                Endpoint_ClearIN();
                                Endpoint_ClearStatusStage();
 
                                Endpoint_ClearIN();
                                Endpoint_ClearStatusStage();
@@ -195,7 +194,7 @@ void EVENT_USB_Device_ControlRequest(void)
                                Endpoint_ClearSETUP();
 
                                /* Write the current idle duration to the host, must be divided by 4 before sent to host */
                                Endpoint_ClearSETUP();
 
                                /* Write the current idle duration to the host, must be divided by 4 before sent to host */
-                               Endpoint_Write_Byte(IdleCount >> 2);
+                               Endpoint_Write_8(IdleCount >> 2);
 
                                Endpoint_ClearIN();
                                Endpoint_ClearStatusStage();
 
                                Endpoint_ClearIN();
                                Endpoint_ClearStatusStage();
@@ -233,10 +232,10 @@ void CreateMouseReport(USB_MouseReport_Data_t* const ReportData)
        if (JoyStatus_LCL & JOY_LEFT)
          ReportData->X = -1;
        else if (JoyStatus_LCL & JOY_RIGHT)
        if (JoyStatus_LCL & JOY_LEFT)
          ReportData->X = -1;
        else if (JoyStatus_LCL & JOY_RIGHT)
-         ReportData->X = 1;
+         ReportData->X =  1;
 
        if (JoyStatus_LCL & JOY_PRESS)
 
        if (JoyStatus_LCL & JOY_PRESS)
-         ReportData->Button  = (1 << 0);
+         ReportData->Button |= (1 << 0);
 
        if (ButtonStatus_LCL & BUTTONS_BUTTON1)
          ReportData->Button |= (1 << 1);
 
        if (ButtonStatus_LCL & BUTTONS_BUTTON1)
          ReportData->Button |= (1 << 1);
@@ -271,7 +270,7 @@ void SendNextReport(void)
        }
 
        /* Select the Mouse Report Endpoint */
        }
 
        /* Select the Mouse Report Endpoint */
-       Endpoint_SelectEndpoint(MOUSE_EPNUM);
+       Endpoint_SelectEndpoint(MOUSE_EPADDR);
 
        /* Check if Mouse Endpoint Ready for Read/Write and if we should send a new report */
        if (Endpoint_IsReadWriteAllowed() && SendReport)
 
        /* Check if Mouse Endpoint Ready for Read/Write and if we should send a new report */
        if (Endpoint_IsReadWriteAllowed() && SendReport)