]> git.kernelconcepts.de Git - metawatch.git/blobdiff - metawatch.c
Info string inquiry extension
[metawatch.git] / metawatch.c
index dd3af80b80a7bedde765fd8cea43bb168ea95d42..f4ad1d1f09277230c473f3bc5761089bcf94dff4 100644 (file)
@@ -226,7 +226,7 @@ void mw_get_real_time_clock_response(int mw_fd, unsigned char *rtcrsp, int len)
        unsigned char clk1224, date_fmt;
 
        if (len != 10) {
-               fprintf(stderr, "get real time clock response too short %d != 10\n", len);
+               fprintf(stderr, "get real time clock response length wrong %d != 10\n", len);
                return;
        }
 
@@ -298,6 +298,7 @@ int decode_frame(int mw_fd, unsigned char *buf, int len)
        unsigned char msgtype;
        unsigned char msgopt;
        unsigned char *msgdata;
+       unsigned char msgdatalen;
 
        /* check frame */
        crc = *(unsigned short *)(buf+len-2);
@@ -322,6 +323,7 @@ int decode_frame(int mw_fd, unsigned char *buf, int len)
        msgtype = buf[2];
        msgopt = buf[3];
        msgdata = (buf+4);
+       msgdatalen = msglen - 4 - 2;
 
        switch (msgtype) {
                case MW_GET_DEVICE_TYPE_RSP:
@@ -352,19 +354,19 @@ int decode_frame(int mw_fd, unsigned char *buf, int len)
                        fprintf(stderr, "Got info string '%s'\n", msgdata);
                        break;
                case MW_GET_REAL_TIME_CLOCK_RSP:
-                       mw_get_real_time_clock_response(mw_fd, msgdata, len-2);
+                       mw_get_real_time_clock_response(mw_fd, msgdata, msgdatalen);
                        break;
                case MW_READ_BATTERY_VOLTAGE_RSP:
-                       mw_get_battery_voltage_response(mw_fd, msgdata, len-2);
+                       mw_get_battery_voltage_response(mw_fd, msgdata, msgdatalen);
                        break;
                case MW_READ_LIGHT_SENSOR_RSP:
-                       mw_read_light_sensor_response(mw_fd, msgdata, len-2);
+                       mw_read_light_sensor_response(mw_fd, msgdata, msgdatalen);
                        break;
                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);
+                       mw_read_button_config_response(mw_fd, msgdata, msgdatalen);
                        break;
                case MW_BUTTON_EVENT_MESSAGE:
                        fprintf(stderr, "Button event message\n");
@@ -373,7 +375,7 @@ int decode_frame(int mw_fd, unsigned char *buf, int len)
                        fprintf(stderr, "Watch battery extremely low - radio will turn off\n");
                        break;
                case MW_STATUS_CHANGE_EVENT:
-                       mw_status_change_event(mw_fd, msgopt, msgdata, len-2);
+                       mw_status_change_event(mw_fd, msgopt, msgdata, msgdatalen);
                        break;
                default:
                        fprintf(stderr, "Unkown msgtype 0x%02x\n", msgtype);