Add button messages and handling

This commit is contained in:
Nils Faerber 2011-08-03 00:50:24 +02:00
parent b13e74e7ce
commit 6e7a56e3e8
3 changed files with 110 additions and 5 deletions

View file

@ -182,6 +182,37 @@ void mw_write_buffer(int mw_fd,
mw_send_frame(mw_fd, MW_WRITE_BUFFER, (mode & 0x0f) | (((numlines & 0x01)<< 4) & 0x10), mdata, numlines ? 13 : 26);
}
void mw_enable_button(int mw_fd,
unsigned char mode,
unsigned char button_index,
unsigned char press_type,
unsigned char callback_type,
unsigned char callback_option)
{
unsigned char mdata[32];
memset(mdata, 0, 32);
mdata[0] = mode;
mdata[1] = button_index;
mdata[2] = press_type;
mdata[3] = callback_type;
mdata[4] = callback_option;
mw_send_frame(mw_fd, MW_ENABLE_BUTTON, 0, mdata, 5);
}
void mw_disable_button(int mw_fd,
unsigned char mode,
unsigned char button_index,
unsigned char press_type)
{
unsigned char mdata[32];
memset(mdata, 0, 32);
mdata[0] = mode;
mdata[1] = button_index;
mdata[2] = press_type;
mw_send_frame(mw_fd, MW_ENABLE_BUTTON, 0, mdata, 3);
}
/* ----------------------------------------------------------------------
* Watch responses, events or notifications
@ -222,6 +253,22 @@ void mw_get_battery_voltage_response(int mw_fd, unsigned char *batrsp, int len)
fprintf(stderr, "battery is at %dV, %s and %s\n", voltage, power_good ? "power is good" : "power fault", bat_charging ? "charging" : "not charging");
}
void mw_read_button_config_response(int mw_fd, unsigned char *btnrsp, int len)
{
fprintf(stderr, "read button config response\n");
fprintf(stderr, "screen mode : 0x%02x\n", btnrsp[0]);
fprintf(stderr, "button index : 0x%02x\n", btnrsp[1]);
fprintf(stderr, "mask table : 0x%02x (", btnrsp[2]);
fprintf(stderr, "%s ", (btnrsp[2] & 0x01) ? "Absolute, " : "");
fprintf(stderr, "%s ", (btnrsp[2] & 0x02) ? "Press&Release, " : "");
fprintf(stderr, "%s ", (btnrsp[2] & 0x04) ? "Press&Hold, " : "");
fprintf(stderr, "%s ", (btnrsp[2] & 0x08) ? "Press&LongHold, " : "");
fprintf(stderr, "%s ", (btnrsp[2] & 0x10) ? "Immediate" : "");
fprintf(stderr, ")\n");
fprintf(stderr, "callback msg type: 0x%02x\n", btnrsp[3]);
fprintf(stderr, "callback msg opts: 0x%02d\n", btnrsp[4]);
}
void mw_read_light_sensor_response(int mw_fd, unsigned char *lightrsp, int len)
{
unsigned char power_good = lightrsp[0];
@ -316,6 +363,12 @@ int decode_frame(int mw_fd, unsigned char *buf, int len)
case MW_LOW_BATTERY_WARNING_MSG:
fprintf(stderr, "Watch battery low, please connect charger\n");
break;
case MW_READ_BUTTON_CONFIG_RSP:
mw_read_button_config_response(mw_fd, msgdata, len-2);
break;
case MW_BUTTON_EVENT_MESSAGE:
fprintf(stderr, "Button event message\n");
break;
case MW_LOW_BATTERY_BT_OFF_MSG:
fprintf(stderr, "Watch battery extremely low - radio will turn off\n");
break;