Microchip® Advanced Software Framework

ui.c File Reference

User Interface.

Copyright (c) 2014-2018 Microchip Technology Inc. and its subsidiaries.

#include <asf.h>
#include "ui.h"

Macros

#define LED_Off(LED_0_PIN)   port_pin_set_output_level(LED_0_PIN, LED_0_INACTIVE)
 
#define LED_On(LED_0_PIN)   port_pin_set_output_level(LED_0_PIN, LED_0_ACTIVE)
 
#define LED_Toggle(LED_0_PIN)   port_pin_toggle_output_level(LED_0_PIN)
 
#define MOUSE_MOVE_COUNT   50
 
#define MOVE_DOWN   2
 
#define MOVE_LEFT   3
 
#define MOVE_RIGHT   1
 
#define MOVE_UP   0
 

Functions

Internal routines to manage asynchronous interrupt pin change

This interrupt is connected to a switch and allows to wakeup CPU in low sleep mode.

In USB device mode, this wakeup the USB host via a upstream resume. In USB host mode, this wakeup the USB devices connected via a downstream resume.

static void ui_enable_asynchronous_interrupt (void)
 Initializes and enables interrupt pin change. More...
 
static void ui_disable_asynchronous_interrupt (void)
 Disables interrupt pin change. More...
 
static void UI_WAKEUP_HANDLER (void)
 Interrupt handler for interrupt pin change. More...
 
Main user interface functions
void ui_init (void)
 Initializes the user interface. More...
 
void ui_usb_mode_change (bool b_host_mode)
 Notify that the USB mode are switched automatically. This is possible only when ID pin is available. More...
 

Variables

static bool ui_b_host_mode = false
 

Host mode user interface functions

static uhc_enum_status_t ui_enum_status = UHC_ENUM_DISCONNECT
 
static uint16_t ui_device_speed_blink
 
static uint8_t ui_nb_down = 0
 
static bool ui_move = false
 
void ui_host_vbus_change (bool b_vbus_present)
 Notify that a Vbus are changed Available only in USB hardware with Vbus monitoring. More...
 
void ui_host_vbus_error (void)
 Notify that a Vbus error has occurred Available only in USB hardware with Vbus monitoring. More...
 
void ui_host_connection_event (uhc_device_t *dev, bool b_present)
 Notify that a USB device has been connected or disconnected. More...
 
void ui_host_enum_event (uhc_device_t *dev, uhc_enum_status_t status)
 Notify the end of a USB device enumeration. More...
 
void ui_host_wakeup_event (void)
 Notify that a USB device or the host has wake up the USB line. More...
 
void ui_host_sof_event (void)
 Notify that a SOF has been sent (each 1 ms) More...
 
static void ui_host_hid_mouse_btn (bool b_state)
 
void ui_host_hid_mouse_btn_left (bool b_state)
 
void ui_host_hid_mouse_btn_right (bool b_state)
 
void ui_host_hid_mouse_btn_middle (bool b_state)
 
void ui_host_hid_mouse_move (int8_t x, int8_t y, int8_t scroll)
 

Device mode user interface functions

#define MOUSE_MOVE_RANGE   3
 
#define MOUSE_MOVE_RANGE   3
 
static bool ui_device_b_mouse_enable = false
 
void ui_device_suspend_action (void)
 Enters the user interface in low power mode Callback called when USB host sets USB line in suspend state. More...
 
void ui_device_resume_action (void)
 Exits the user interface if the low power mode Callback called when USB host sets USB line in IDLE state. More...
 
void ui_device_remotewakeup_enable (void)
 Enables the remotewakeup feature. More...
 
void ui_device_remotewakeup_disable (void)
 Disables the remotewakeup feature. More...
 
bool ui_device_mouse_enable (void)
 Enables the device mouse interface. More...
 
void ui_device_mouse_disable (void)
 Disables the device mouse interface. More...
 
void ui_device_sof_action (void)
 Scans the device mouse controls and shows the device status each USB SOF. More...
 

#define LED_Toggle (   LED_0_PIN)    port_pin_toggle_output_level(LED_0_PIN)

Referenced by ui_host_sof_event().

#define MOUSE_MOVE_COUNT   50

Referenced by ui_device_sof_action().

#define MOUSE_MOVE_RANGE   3

Referenced by ui_device_sof_action().

#define MOUSE_MOVE_RANGE   3
#define MOVE_DOWN   2

Referenced by ui_device_sof_action().

#define MOVE_LEFT   3

Referenced by ui_device_sof_action().

#define MOVE_RIGHT   1

Referenced by ui_device_sof_action().

#define MOVE_UP   0

Referenced by ui_device_sof_action().

void ui_device_mouse_disable ( void  )

Disables the device mouse interface.

References ui_device_b_mouse_enable.

bool ui_device_mouse_enable ( void  )

Enables the device mouse interface.

References ui_device_b_mouse_enable.

void ui_device_remotewakeup_disable ( void  )

Disables the remotewakeup feature.

References ui_disable_asynchronous_interrupt().

void ui_device_remotewakeup_enable ( void  )

Enables the remotewakeup feature.

References ui_enable_asynchronous_interrupt().

void ui_device_resume_action ( void  )

Exits the user interface if the low power mode Callback called when USB host sets USB line in IDLE state.

void ui_device_sof_action ( void  )
void ui_device_suspend_action ( void  )

Enters the user interface in low power mode Callback called when USB host sets USB line in suspend state.

References ui_init().

static void ui_disable_asynchronous_interrupt ( void  )
static
void ui_host_connection_event ( uhc_device_t *  dev,
bool  b_present 
)

Notify that a USB device has been connected or disconnected.

Parameters
devPointer on USB device information
b_presenttrue, if the device has been connected

References LED_0_PIN, LED_On, ui_enum_status, and UNUSED.

void ui_host_enum_event ( uhc_device_t *  dev,
uhc_enum_status_t  status 
)

Notify the end of a USB device enumeration.

Parameters
devPointer on USB device information
statusStatus of the USB enumeration

References UHD_SPEED_FULL, UHD_SPEED_HIGH, UHD_SPEED_LOW, ui_device_speed_blink, and ui_enum_status.

static void ui_host_hid_mouse_btn ( bool  b_state)
static
void ui_host_hid_mouse_btn_left ( bool  b_state)
void ui_host_hid_mouse_btn_middle ( bool  b_state)
void ui_host_hid_mouse_btn_right ( bool  b_state)
void ui_host_hid_mouse_move ( int8_t  x,
int8_t  y,
int8_t  scroll 
)

References ui_move, and UNUSED.

void ui_host_sof_event ( void  )
void ui_host_vbus_change ( bool  b_vbus_present)

Notify that a Vbus are changed Available only in USB hardware with Vbus monitoring.

Parameters
b_vbus_presenttrue, if Vbus is high.

References UNUSED.

void ui_host_vbus_error ( void  )

Notify that a Vbus error has occurred Available only in USB hardware with Vbus monitoring.

void ui_host_wakeup_event ( void  )

Notify that a USB device or the host has wake up the USB line.

References ui_disable_asynchronous_interrupt().

void ui_init ( void  )

Initializes the user interface.

References LED_0_PIN, and LED_Off.

Referenced by main(), and ui_device_suspend_action().

void ui_usb_mode_change ( bool  b_host_mode)

Notify that the USB mode are switched automatically. This is possible only when ID pin is available.

Parameters
b_host_modetrue, if the host mode has been selected

References LED_0_PIN, LED_Off, LED_On, and ui_b_host_mode.

static void UI_WAKEUP_HANDLER ( void  )
static

Interrupt handler for interrupt pin change.

References udc_remotewakeup(), uhc_is_suspend(), uhc_resume(), ui_b_host_mode, and ui_disable_asynchronous_interrupt().

Referenced by ui_enable_asynchronous_interrupt().

bool ui_b_host_mode = false
static
bool ui_device_b_mouse_enable = false
static
uint16_t ui_device_speed_blink
static

Blink frequency depending on device speed

Referenced by ui_host_enum_event(), and ui_host_sof_event().

uhc_enum_status_t ui_enum_status = UHC_ENUM_DISCONNECT
static

Status of device enumeration

Referenced by ui_host_connection_event(), ui_host_enum_event(), and ui_host_sof_event().

bool ui_move = false
static

Manages device mouse move

Referenced by ui_host_hid_mouse_move(), and ui_host_sof_event().

uint8_t ui_nb_down = 0
static

Manages device mouse button down

Referenced by ui_host_hid_mouse_btn(), and ui_host_sof_event().