Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
add support for KEY_CAMERA and KEY_CAMERA_FOCUS input switches.
Cleanup the code a bit by introducing switch_call_cb

Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
  • Loading branch information
freemangordon committed Jan 3, 2016
1 parent 09e11e1 commit c0648e5
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 12 deletions.
42 changes: 33 additions & 9 deletions event-input.c
Expand Up @@ -312,6 +312,13 @@ static void keypress_cb(gpointer data, gsize bytes_read)
return;
}

static void switch_call_cb(struct input_event *ev, iomon_cb callback,
const char *active, const char *inactive)
{
callback((gpointer)(ev->value ? active : inactive),
ev->value ? strlen(active) : strlen(inactive));
}

/**
* I/O monitor callback for switch
*
Expand All @@ -332,18 +339,22 @@ static void switch_cb(gpointer data, gsize bytes_read)
if (ev->type == EV_SW) {
switch (ev->code) {
case SW_KEYPAD_SLIDE: {
kbd_slide_cb((gpointer)(ev->value ? MCE_KBD_SLIDE_OPEN : MCE_KBD_SLIDE_CLOSED),
ev->value ? sizeof(MCE_KBD_SLIDE_OPEN) : sizeof(MCE_KBD_SLIDE_CLOSED));
switch_call_cb(ev, kbd_slide_cb,
MCE_KBD_SLIDE_OPEN,
MCE_KBD_SLIDE_CLOSED);
goto EXIT;
}
case SW_FRONT_PROXIMITY: {
proximity_sensor_cb((gpointer)(ev->value ? MCE_PROXIMITY_SENSOR_CLOSED : MCE_PROXIMITY_SENSOR_OPEN),
ev->value ? sizeof(MCE_PROXIMITY_SENSOR_CLOSED) : sizeof(MCE_PROXIMITY_SENSOR_OPEN));
switch_call_cb(ev, proximity_sensor_cb,
MCE_PROXIMITY_SENSOR_CLOSED,
MCE_PROXIMITY_SENSOR_OPEN);
goto EXIT;
}
case SW_CAMERA_LENS_COVER: {
camera_launch_button_cb((gpointer)(ev->value ? MCE_CAM_LAUNCH_ACTIVE : MCE_CAM_LAUNCH_INACTIVE),
ev->value ? sizeof(MCE_CAM_LAUNCH_ACTIVE) : sizeof(MCE_CAM_LAUNCH_INACTIVE));
switch_call_cb(ev, camera_launch_button_cb,
MCE_LENS_COVER_CLOSED,
MCE_LENS_COVER_OPEN);

goto EXIT;
}
default:
Expand All @@ -352,10 +363,23 @@ static void switch_cb(gpointer data, gsize bytes_read)
} else if (ev->type == EV_KEY) {
switch (ev->code) {
case KEY_SCREENLOCK: {
lockkey_cb((gpointer)(ev->value ? MCE_FLICKER_KEY_ACTIVE :MCE_FLICKER_KEY_INACTIVE),
ev->value ? sizeof(MCE_FLICKER_KEY_ACTIVE) : sizeof(MCE_FLICKER_KEY_INACTIVE));
switch_call_cb(ev, lockkey_cb,
MCE_FLICKER_KEY_ACTIVE,
MCE_FLICKER_KEY_INACTIVE);
goto EXIT;
}
case KEY_CAMERA: {
switch_call_cb(ev, camera_launch_button_cb,
MCE_CAM_LAUNCH_ACTIVE,
MCE_CAM_LAUNCH_INACTIVE);
goto EXIT;
}
case KEY_CAMERA_FOCUS: {
switch_call_cb(ev, generic_activity_cb,
MCE_CAM_FOCUS_ACTIVE,
MCE_CAM_FOCUS_INACTIVE);
goto EXIT;
}
}
default:
break;
}
Expand Down
6 changes: 6 additions & 0 deletions event-input.h
Expand Up @@ -96,6 +96,10 @@ static const gchar *const keyboard_event_drivers[] = {
#define SW_FRONT_PROXIMITY 0x0b
#endif

#ifndef KEY_CAMERA_FOCUS
#define KEY_CAMERA_FOCUS 0x210
#endif

/**
* List of event types for switch monitor
*/
Expand All @@ -118,6 +122,8 @@ static const int event_switches[] = {

static const int event_keys[] = {
KEY_SCREENLOCK,
KEY_CAMERA,
KEY_CAMERA_FOCUS,
-1
};

Expand Down
4 changes: 2 additions & 2 deletions event-switches.c
Expand Up @@ -76,7 +76,7 @@ gboolean has_flicker_key = FALSE;
* @param data Unused
* @param bytes_read Unused
*/
static void generic_activity_cb(gpointer data, gsize bytes_read)
void generic_activity_cb(gpointer data, gsize bytes_read)
{
(void)data;
(void)bytes_read;
Expand Down Expand Up @@ -261,7 +261,7 @@ static void usb_cable_cb(gpointer data, gsize bytes_read)
* @param data The new data
* @param bytes_read Unused
*/
static void lens_cover_cb(gpointer data, gsize bytes_read)
void lens_cover_cb(gpointer data, gsize bytes_read)
{
cover_state_t lens_cover_state;

Expand Down
3 changes: 2 additions & 1 deletion event-switches.h
Expand Up @@ -129,7 +129,8 @@ void mce_switches_exit(void);
void kbd_slide_cb(gpointer data, gsize bytes_read);
void proximity_sensor_cb(gpointer data, gsize bytes_read);
void camera_launch_button_cb(gpointer data, gsize bytes_read);

void lens_cover_cb(gpointer data, gsize bytes_read);
void lockkey_cb(gpointer data, gsize bytes_read);
void generic_activity_cb(gpointer data, gsize bytes_read);

#endif /* _EVENT_SWITCHES_H_ */

0 comments on commit c0648e5

Please sign in to comment.