Add button messages and handling
This commit is contained in:
parent
b13e74e7ce
commit
6e7a56e3e8
3 changed files with 110 additions and 5 deletions
53
metawatch.c
53
metawatch.c
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue