This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

HOW TO INTERFACE GAME CONTROL OF XP USING KEIL MCB2140 HID EXAMPLE WITHOUT RTOS

I WANT TO INTERFACE MY KIT WITH TWO SWITCHES AND 2 VARIABLE RESISTANCE TO TO DISPLAY DATA ON X AN Y AXIS OF GAME CONTROL AND SWITCH TO ENABLE DIGITAL INPUT 1 AND 2 RESPECTIVELY.

Tsuneo Chinzei
I HAD LEARNED YOUR GENERIC PROGRAM TO SEND THE ARRAY FOR INPUT AND OUTPUT REPORT AND IMPLIMENT IT AND CHANGE THE CONFIGURATION TO GET GRAPHICAL INTERFACE ALSO BUT i DONT UNDERSTAND THE REPORT SECTION AND THEIR PROPER USE HOW TO CHANGE IT ACCORDING TO OUR REQUIREMENT.

EAGERLY WAITING FOR ANY HELP

Parents
  • MY MOUSE DEVICE DESCRIPTOR

    
    const BYTE HID_ReportDescriptor[] = {
                    HID_UsagePage(HID_USAGE_PAGE_GENERIC),
                    HID_Usage(HID_USAGE_GENERIC_MOUSE ),
                    HID_Collection (HID_Application),
                                    HID_Usage(HID_USAGE_GENERIC_POINTER),
                                    HID_Collection (HID_Physical),
                                    HID_UsagePage(HID_USAGE_PAGE_BUTTON),
                                    HID_UsageMin(1),
                                    HID_UsageMax(3),
                                    HID_LogicalMin(0),
                                    HID_LogicalMax(1),
                                    HID_ReportCount(3),
                                    HID_ReportSize(1),
                                    HID_Input(HID_Data | HID_Variable | HID_Absolute),
                                    HID_ReportCount(1),
                                    HID_ReportSize(5),
                                    HID_Input(HID_Constant|HID_Variable|HID_Variable),
                                    HID_UsagePage(HID_USAGE_PAGE_GENERIC),
                                    HID_Usage(HID_USAGE_GENERIC_X),
                                    HID_Usage(HID_USAGE_GENERIC_Y),
                                    HID_LogicalMin(0X81),
                                    HID_LogicalMax(127),
                                    HID_ReportSize(8),
                                    HID_ReportCount(2),
                                    HID_Input(HID_Data|HID_Variable|HID_Relative),
                     HID_EndCollection,
                    HID_EndCollection,
    };
    const WORD HID_ReportDescSize = sizeof(HID_ReportDescriptor);
    
    

    MY DEVICE INREPORT AND OUT FOR MOUSE

    
    
    BYTE InReport[HID_INPUT_REPORT_BYTES];                           /* Edited HID Input Report */
                                                /*   Bit0:    Button */
                                                /*   Bit1..7: Reserved */
    
    BYTE OutReport[HID_OUTPUT_REPORT_BYTES];                             /* Edited HID Out Report */
                                                /*   Bit0..7: LEDs */
    
    
    /*
     *  Get HID Input Report -> InReport
     */
    
    void GetInReport (void) {
    /*USE ONLY ONE SWITCH TO SEE THE OUTPUT OF LEFT AND RIGHT CLICK SO SENT HEX CODE RELATIVE TO THEIR REPORT */
      if ((IOPIN0 & PBINT) == 0)
            {              /* Check if PBINT is pressed */
       /*Edited*/
    
                    InReport[0] = 0X01;  //RIGHT CLICK
                    InReport[1] = 0X7F;  //X AXIS
                    InReport[2] = 0X7F;  //Y AXIS
      }
            if ((IOPIN0 & PBINT) == 1)
            {              /* Check if PBINT is RELEALED */
       /*Edited*/
    
                    InReport[0] = 0X04;  //LEFT CLICK
                    InReport[1] = 0XFF;  //X AXIS
                    InReport[2] = 0XFF;  //Y AXIS
    
    
      }
    
            /*Edited*/
    }
    
    
    /*
     *  Set HID Output Report <- OutReport
     */
    
    void SetOutReport (void) {
            unsigned int i;
    for(i=0;i<8;i++)
                    {
        IOPIN1 = ((OutReport[0])<<16);   //Edited
                    }
    
    }
    
    
    

    MY EDITED SECTION OF USBCONFIG.H

    /*
    // <h> USB Endpoint size
    //   <o0> HID_INPUT_REPORT_BYTES  <1-256>
    //
    //   <o1> HID_OUTPUT_REPORT_BYTES <1-256>
    //
    //   <o2>HID_FEATURE_REPORT_BYTES <1-256>
    //
    //   <o3>VENDOR_ID <0X0000-0XFFFF>
    //
    //   <o4>PRODUCT_ID <0X0000-0XFFFF>
    // </h>
    */
    /*Edited*/
    #define HID_INPUT_REPORT_BYTES       3              /* size of report in Bytes */
    #define HID_OUTPUT_REPORT_BYTES      3              /* size of report in Bytes */
    #define HID_FEATURE_REPORT_BYTES     3             /* size of report in Bytes */
    #define VENDOR_ID   0xC251
    #define PRODUCT_ID  0x1301
    /*Edited*/
    

Reply
  • MY MOUSE DEVICE DESCRIPTOR

    
    const BYTE HID_ReportDescriptor[] = {
                    HID_UsagePage(HID_USAGE_PAGE_GENERIC),
                    HID_Usage(HID_USAGE_GENERIC_MOUSE ),
                    HID_Collection (HID_Application),
                                    HID_Usage(HID_USAGE_GENERIC_POINTER),
                                    HID_Collection (HID_Physical),
                                    HID_UsagePage(HID_USAGE_PAGE_BUTTON),
                                    HID_UsageMin(1),
                                    HID_UsageMax(3),
                                    HID_LogicalMin(0),
                                    HID_LogicalMax(1),
                                    HID_ReportCount(3),
                                    HID_ReportSize(1),
                                    HID_Input(HID_Data | HID_Variable | HID_Absolute),
                                    HID_ReportCount(1),
                                    HID_ReportSize(5),
                                    HID_Input(HID_Constant|HID_Variable|HID_Variable),
                                    HID_UsagePage(HID_USAGE_PAGE_GENERIC),
                                    HID_Usage(HID_USAGE_GENERIC_X),
                                    HID_Usage(HID_USAGE_GENERIC_Y),
                                    HID_LogicalMin(0X81),
                                    HID_LogicalMax(127),
                                    HID_ReportSize(8),
                                    HID_ReportCount(2),
                                    HID_Input(HID_Data|HID_Variable|HID_Relative),
                     HID_EndCollection,
                    HID_EndCollection,
    };
    const WORD HID_ReportDescSize = sizeof(HID_ReportDescriptor);
    
    

    MY DEVICE INREPORT AND OUT FOR MOUSE

    
    
    BYTE InReport[HID_INPUT_REPORT_BYTES];                           /* Edited HID Input Report */
                                                /*   Bit0:    Button */
                                                /*   Bit1..7: Reserved */
    
    BYTE OutReport[HID_OUTPUT_REPORT_BYTES];                             /* Edited HID Out Report */
                                                /*   Bit0..7: LEDs */
    
    
    /*
     *  Get HID Input Report -> InReport
     */
    
    void GetInReport (void) {
    /*USE ONLY ONE SWITCH TO SEE THE OUTPUT OF LEFT AND RIGHT CLICK SO SENT HEX CODE RELATIVE TO THEIR REPORT */
      if ((IOPIN0 & PBINT) == 0)
            {              /* Check if PBINT is pressed */
       /*Edited*/
    
                    InReport[0] = 0X01;  //RIGHT CLICK
                    InReport[1] = 0X7F;  //X AXIS
                    InReport[2] = 0X7F;  //Y AXIS
      }
            if ((IOPIN0 & PBINT) == 1)
            {              /* Check if PBINT is RELEALED */
       /*Edited*/
    
                    InReport[0] = 0X04;  //LEFT CLICK
                    InReport[1] = 0XFF;  //X AXIS
                    InReport[2] = 0XFF;  //Y AXIS
    
    
      }
    
            /*Edited*/
    }
    
    
    /*
     *  Set HID Output Report <- OutReport
     */
    
    void SetOutReport (void) {
            unsigned int i;
    for(i=0;i<8;i++)
                    {
        IOPIN1 = ((OutReport[0])<<16);   //Edited
                    }
    
    }
    
    
    

    MY EDITED SECTION OF USBCONFIG.H

    /*
    // <h> USB Endpoint size
    //   <o0> HID_INPUT_REPORT_BYTES  <1-256>
    //
    //   <o1> HID_OUTPUT_REPORT_BYTES <1-256>
    //
    //   <o2>HID_FEATURE_REPORT_BYTES <1-256>
    //
    //   <o3>VENDOR_ID <0X0000-0XFFFF>
    //
    //   <o4>PRODUCT_ID <0X0000-0XFFFF>
    // </h>
    */
    /*Edited*/
    #define HID_INPUT_REPORT_BYTES       3              /* size of report in Bytes */
    #define HID_OUTPUT_REPORT_BYTES      3              /* size of report in Bytes */
    #define HID_FEATURE_REPORT_BYTES     3             /* size of report in Bytes */
    #define VENDOR_ID   0xC251
    #define PRODUCT_ID  0x1301
    /*Edited*/
    

Children
No data