X-Git-Url: https://git.karo-electronics.de/?p=metawatch.git;a=blobdiff_plain;f=metawatch.c;fp=metawatch.c;h=5c5b73bfea3c36f3d939cf84d82d251964d56d6d;hp=08d5aca2bd08861837a07dd5b6fa64ef273c83e5;hb=44f70f5275339fba3609ec94fe797c907290549b;hpb=d1e0ca32db6e93af4ad6c1b7a8019f084bc04dcd diff --git a/metawatch.c b/metawatch.c index 08d5aca..5c5b73b 100644 --- a/metawatch.c +++ b/metawatch.c @@ -222,6 +222,7 @@ int mw_write_oled_buffer(mwdevice_t *mwdevice, if (mwdevice->devtype != MW_DEVICE_TYPE_ANA_DIGI && mwdevice->devtype != MW_DEVICE_TYPE_DEVB_ANA_DIGI) return -1; + fprintf(stderr, "write oled buf len = %d\n", buflen); /* lower row first since display wil be updated after completion of upper row */ if (buflen > 80) { for (i=80; i 12) + return -1; + if (minutes > 60) + return -1; + if (seconds > 60) + return -1; + + mdata[0] = hours; + mdata[1] = minutes; + mdata[2] = seconds; + + return mw_send_frame(mwdevice, MW_ADVANCE_WATCH_HANDS, 0, mdata, 3); +} + /* ---------------------------------------------------------------------- * Watch responses, events or notifications * ---------------------------------------------------------------------- */ +int mw_get_device_type_response(mwdevice_t *mwdevice, unsigned char devtype) +{ +#ifdef DEBUG + fprintf(stderr, "Got device type "); + switch(devtype) { + case 0: + fprintf(stderr, "Reserved\n"); + break; + case 1: + fprintf(stderr, "Ana-Digi\n"); + break; + case 2: + fprintf(stderr, "Digital\n"); + break; + case 3: + fprintf(stderr, "Development Board Digital\n"); + break; + case 4: + fprintf(stderr, "Development Board Ana-Digi\n"); + break; + default: + fprintf(stderr, "unknown %d\n", devtype); + break; + }; +#endif + mwdevice->devtype = devtype; + if (mwdevice->mw_get_device_type_response_cb != NULL) + mwdevice->mw_get_device_type_response_cb(mwdevice, devtype, mwdevice->mw_gdtypersp_data); + return 0; +} + +void mw_set_get_device_type_response_cb(mwdevice_t *mwdevice, void (*mw_get_device_type_response_cb) (mwdevice_t *mwdevice, unsigned char devtype, void *user_data), void *user_data) +{ + if (mw_get_device_type_response_cb != NULL) + mwdevice->mw_get_device_type_response_cb = mw_get_device_type_response_cb; + if (user_data != NULL) + mwdevice->mw_gdtypersp_data = user_data; +} + + int mw_get_real_time_clock_response(mwdevice_t *mwdevice, unsigned char *rtcrsp, int len) { struct tm mtm; @@ -435,18 +495,10 @@ int decode_frame(mwdevice_t *mwdevice, unsigned char *buf, int len) fprintf(stderr, "decode frame CRC error\n"); return -1; } -#ifdef DEBUG - else - fprintf(stderr, "decode frame CRC OK\n"); -#endif if (buf[0] != MW_SOF) { fprintf(stderr, "decode frame SOF not found\n"); return -1; } -#ifdef DEBUG - else - fprintf(stderr, "decode frame found SOF\n"); -#endif msglen = buf[1]; msgtype = buf[2]; @@ -456,28 +508,7 @@ int decode_frame(mwdevice_t *mwdevice, unsigned char *buf, int len) switch (msgtype) { case MW_GET_DEVICE_TYPE_RSP: - fprintf(stderr, "Got device type "); - switch(msgdata[0]) { - case 0: - fprintf(stderr, "Reserved\n"); - break; - case 1: - fprintf(stderr, "Ana-Digi\n"); - break; - case 2: - fprintf(stderr, "Digital\n"); - break; - case 3: - fprintf(stderr, "Development Board Digital\n"); - break; - case 4: - fprintf(stderr, "Development Board Ana-Digi\n"); - break; - default: - fprintf(stderr, "unknown %d\n", msgdata[0]); - break; - }; - mwdevice->devtype = msgdata[0]; + mw_get_device_type_response(mwdevice, msgdata[0]); break; case MW_GET_INFORMATION_STRING_RSP: msgdata[len-2] = 0;