Ejemplo n.º 1
0
void ui_process(uint16_t framenumber)
{
	bool b_btn_state;
	static bool btn_left_last_state = HID_MOUSE_BTN_UP;
	static bool btn_right_last_state = HID_MOUSE_BTN_UP;
	static bool btn_middle_last_state = HID_MOUSE_BTN_UP;
	static uint8_t cpt_sof = 0;

	if ((framenumber % 1000) == 0) {
		LED_On(LED1_GPIO);
	}
	if ((framenumber % 1000) == 500) {
		LED_Off(LED1_GPIO);
	}
	// Scan process running each 2ms
	cpt_sof++;
	if (2 > cpt_sof) {
		return;
	}
	cpt_sof = 0;

	// Scan buttons on switch 7 (left), 6 (middle), 4 (right)
	b_btn_state = (gpio_pin_is_low(GPIO_PUSH_BUTTON_7)) ? HID_MOUSE_BTN_DOWN
			: HID_MOUSE_BTN_UP;
	if (b_btn_state != btn_left_last_state) {
		udi_hid_mouse_btnleft(b_btn_state);
		btn_left_last_state = b_btn_state;
	}
	b_btn_state = (gpio_pin_is_low(GPIO_PUSH_BUTTON_6)) ? HID_MOUSE_BTN_DOWN
			: HID_MOUSE_BTN_UP;
	if (b_btn_state != btn_middle_last_state) {
		udi_hid_mouse_btnmiddle(b_btn_state);
		btn_middle_last_state = b_btn_state;
	}
	b_btn_state = (gpio_pin_is_low(GPIO_PUSH_BUTTON_4)) ? HID_MOUSE_BTN_DOWN
			: HID_MOUSE_BTN_UP;
	if (b_btn_state != btn_right_last_state) {
		udi_hid_mouse_btnright(b_btn_state);
		btn_right_last_state = b_btn_state;
	}
	// Scan move on switch 0 (right), 1 (left), 2 (down), 3 (up)
	if (gpio_pin_is_low(GPIO_PUSH_BUTTON_0))
		udi_hid_mouse_moveX(MOUSE_MOVE_RANGE);
	if (gpio_pin_is_low(GPIO_PUSH_BUTTON_1))
		udi_hid_mouse_moveX(-MOUSE_MOVE_RANGE);
	if (gpio_pin_is_low(GPIO_PUSH_BUTTON_2))
		udi_hid_mouse_moveY(MOUSE_MOVE_RANGE);
	if (gpio_pin_is_low(GPIO_PUSH_BUTTON_3))
		udi_hid_mouse_moveY(-MOUSE_MOVE_RANGE);
}
Ejemplo n.º 2
0
/**
 * @brief Notify the application when ZID report data is received from the paired device.
 *  
 * @param PairingRef Pairing reference.
 * @param num_report_records number of Report records.
 * @param *zid_report_data_record_ptr pointer to the report data received.
 * @param  RxLinkQuality    LQI value of the report data frame.
 * @param  RxFlags          Receive flags.
 */
static void zid_report_data_indication(uint8_t PairingRef, uint8_t num_report_records,
                                                zid_report_data_record_t *zid_report_data_record_ptr, uint8_t RxLinkQuality, uint8_t RxFlags)
{          
   
                  
                  
     for(uint8_t i=0;i<num_report_records;i++)
     {  
    
         switch(zid_report_data_record_ptr->report_desc_identifier)
         {
         case MOUSE:
         {
            
             mouse_desc_t *mouse_desc;
             mouse_desc = (mouse_desc_t *)zid_report_data_record_ptr->report_data;
			 
				udi_hid_mouse_btnleft(mouse_desc->button0); 
				udi_hid_mouse_btnright(mouse_desc->button1);
			   
				if((0x80==(mouse_desc->button2)))
				{   
					udi_hid_mouse_moveScroll((mouse_desc->y_coordinate));
					mouse_desc->y_coordinate = 0;
				}
				else if(0x01==(mouse_desc->button2))
				{ 
					udi_hid_mouse_btnmiddle(0x01);
				}
				udi_hid_mouse_moveX((mouse_desc->x_coordinate));
				udi_hid_mouse_moveY((mouse_desc->y_coordinate));
			 
          
             break;
         }
         case KEYBOARD:
         {
             if(zid_report_data_record_ptr->report_type == INPUT)
             {
                 
                 keyboard_input_desc_t *keyboard_input_desc;
                 keyboard_input_desc = (keyboard_input_desc_t *)zid_report_data_record_ptr->report_data;
                    if(main_b_kbd_enable)
                    {   
						if(keyboard_input_desc->modifier_keys)
						{
							udi_hid_kbd_modifier_down(keyboard_input_desc->modifier_keys);
							udi_hid_kbd_modifier_up(keyboard_input_desc->modifier_keys);
						}
					                    
						for(uint8_t j=0;j<4;j++)
						{  
							if(keyboard_input_desc->key_code[j])
							{    
								udi_hid_kbd_down(keyboard_input_desc->key_code[j]);
								udi_hid_kbd_up(keyboard_input_desc->key_code[j]);
							}   
                   
						}
						uint16_t u_value;
						u_value= convert_byte_array_to_16_bit(&(keyboard_input_desc->key_code[4]));
						if(u_value)
						{   
							udi_hid_mkbd_modifier_down(u_value);
							udi_hid_mkbd_modifier_up(u_value);
						}
					}
              
             }
             else
             {
                /* Application can implement for other report types.*/
             }
             break;
         }
         default:
		 break;
         }
         zid_report_data_record_ptr++;
     }

    RxLinkQuality = RxLinkQuality;
    RxFlags = RxFlags;

}