diff --git a/Makefile b/Makefile index e758fa4..ee168c2 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ LIBDIR=$(PREFIX)/lib MANDIR=$(PREFIX)/man INCDIR=$(PREFIX)/include -PORT = /dev/ttyUSB1 +PORT = /dev/ttyACM1 CC = gcc CPPFLAGS = -DBINDIR=\"$(BINDIR)\" -DPORT=\"$(PORT)\" diff --git a/datalink.h b/datalink.h index ab6f2d7..d14eeae 100644 --- a/datalink.h +++ b/datalink.h @@ -212,10 +212,11 @@ typedef struct watch_info_s /* Watch types */ #define NO_WATCH 0 -#define DATALINK_70 1 -#define DATALINK_150 2 -#define DATALINK_150S 3 -#define DATALINK_IRONMAN 4 +#define DATALINK_50 1 +#define DATALINK_70 2 +#define DATALINK_150 3 +#define DATALINK_150S 4 +#define DATALINK_IRONMAN 5 #define DEF_LPTRANSINFO 1 diff --git a/dl_init_watch.c b/dl_init_watch.c index 9cfc929..9e88500 100644 --- a/dl_init_watch.c +++ b/dl_init_watch.c @@ -62,6 +62,32 @@ WatchInfoPtr dl_init_watch(int type) switch (type) { + case DATALINK_50: + result->dl_device = type; + result->max_tz = 2; + result->max_alarms = 5; + result->max_chrons = 0; + result->max_chron_str = 0; + result->max_apps = 255; + result->max_phones = 255; + result->max_timers = 0; + result->max_todos = 255; + result->max_annivs = 255; + result->max_system = 1; + result->max_wristapp = 0; + result->max_melody = 0; + result->max_tzlen = 3; + result->max_mem = 850; + result->mem_size = 0; + result->max_str = 15; + result->max_alarm_str = 8; + result->max_phone_str = 12; + result->max_timer_str = 0; + result->max_wristapp_len = 0; + result->max_mel_len = 0; + result->pre_notification_time = 0; + result->time_adjust = 9; + break; case DATALINK_70: result->dl_device = type; result->max_tz = 2; diff --git a/dl_send_data.c b/dl_send_data.c index 94f93e7..1ccbcf0 100644 --- a/dl_send_data.c +++ b/dl_send_data.c @@ -99,19 +99,18 @@ int _write_data(int fd, unsigned char *buf, unsigned char *data, int size, memcpy(buf, dspace, *dspace); -#if 1 - buf[0] = 0x3; -#endif + if (wi->dl_device == DATALINK_50) + buf[0] = 0x3; - if (wi->dl_device == DATALINK_70) + if ((wi->dl_device == DATALINK_50) || (wi->dl_device == DATALINK_70)) buf[1] = DATA_70; -#if 0 - buf[2] = type; - buf[3] = (*pnum)++; -#else - buf[2] = (*pnum)++; -#endif + if (wi->dl_device == DATALINK_50) { + buf[2] = (*pnum)++; + } else { + buf[2] = type; + buf[3] = (*pnum)++; + } } if (!size) @@ -221,7 +220,7 @@ int dl_send_data(WatchInfoPtr wi, int type) memcpy(buf, start1, *start1); - if (wi->dl_device == DATALINK_70) + if ((wi->dl_device == DATALINK_50) || (wi->dl_device == DATALINK_70)) { buf[4] = 1; } @@ -259,9 +258,8 @@ int dl_send_data(WatchInfoPtr wi, int type) for (i = 0; i < dl_download_data.num_times; i++) { memcpy(buf, time, *time); -#if 1 - buf[0] = 0xd; -#endif + if (wi->dl_device == DATALINK_50) + buf[0] = 0xd; p = 2; if (wi->dl_device == DATALINK_IRONMAN) @@ -285,29 +283,29 @@ int dl_send_data(WatchInfoPtr wi, int type) buf[p++] = dl_download_data.times[i].year; buf[p++] = dl_download_data.times[i].dow; buf[p++] = dl_download_data.times[i].seconds; - } else - { + } else { buf[p++] = dl_download_data.times[i].hours; buf[p++] = dl_download_data.times[i].minutes; buf[p++] = dl_download_data.times[i].month; buf[p++] = dl_download_data.times[i].day; buf[p++] = dl_download_data.times[i].year; -#if 0 - buf[p++] = - dl_pack_char(dl_download_data. - times[i].label[0]); - buf[p++] = - dl_pack_char(dl_download_data. - times[i].label[1]); - buf[p++] = - dl_pack_char(dl_download_data. - times[i].label[2]); - buf[p++] = dl_download_data.times[i].dow - 1; -#else - buf[p++] = dl_download_data.times[i].dow; - buf[p++] = dl_download_data.times[i].seconds; - buf[p++] = dl_download_data.times[i].hour_fmt; -#endif + + if (wi->dl_device == DATALINK_50) { + buf[p++] = dl_download_data.times[i].dow; + buf[p++] = dl_download_data.times[i].seconds; + buf[p++] = dl_download_data.times[i].hour_fmt; + } else { + buf[p++] = + dl_pack_char(dl_download_data. + times[i].label[0]); + buf[p++] = + dl_pack_char(dl_download_data. + times[i].label[1]); + buf[p++] = + dl_pack_char(dl_download_data. + times[i].label[2]); + buf[p++] = dl_download_data.times[i].dow - 1; + } } if (wi->dl_device == DATALINK_150 || @@ -319,7 +317,7 @@ int dl_send_data(WatchInfoPtr wi, int type) dl_download_data.times[i].date_fmt & 0xFF; } - if (wi->dl_device == DATALINK_70) + if ((wi->dl_device == DATALINK_50) || (wi->dl_device == DATALINK_70)) buf[1] = TIME_70; dl_docrc(buf); @@ -332,18 +330,19 @@ int dl_send_data(WatchInfoPtr wi, int type) if (wi->dl_device != DATALINK_IRONMAN && dl_download_data.memory) { -#if 0 - memcpy(buf, dstart, *dstart); - buf[2] = 1; -#else - buf[0] = 0x05; - buf[1] = 0x60; - buf[2] = dl_download_data.memory / (MAX_PCKT - 6); + if (wi->dl_device == DATALINK_50) { + buf[0] = 0x05; + buf[1] = 0x60; + buf[2] = dl_download_data.memory / (MAX_PCKT - 6); - if (dl_download_data.memory % (MAX_PCKT - 6)) + if (dl_download_data.memory % (MAX_PCKT - 6)) + buf[2]++; buf[2]++; - buf[2]++; -#endif + } else { + memcpy(buf, dstart, *dstart); + buf[2] = 1; + } + dl_docrc(buf); if (write(ofd, buf, *buf) != *buf) @@ -351,61 +350,60 @@ int dl_send_data(WatchInfoPtr wi, int type) ("Can't write dstart to tmp file.")); -#if 0 - memcpy(buf, dinfo, *dinfo); - buf[2] = 1; - buf[3] = dl_download_data.memory / (MAX_PCKT - 6); - - if (dl_download_data.memory % (MAX_PCKT - 6)) - buf[3]++; + if (wi->dl_device == DATALINK_50) { + pnum=1; - buf[12] = dl_download_data.num_apps; - buf[13] = dl_download_data.num_todos; - buf[14] = dl_download_data.num_phones; - buf[15] = dl_download_data.num_annivs; - buf[4] = (addr >> 8) & 0xff; - buf[5] = addr & 0xff; - addr += dl_download_data.app_size; - buf[6] = (addr >> 8) & 0xff; - buf[7] = addr & 0xff; - addr += dl_download_data.todo_size; - buf[8] = (addr >> 8) & 0xff; - buf[9] = addr & 0xff; - addr += dl_download_data.phone_size; - buf[10] = (addr >> 8) & 0xff; - buf[11] = addr & 0xff; - buf[16] = 0x62; - buf[17] = dl_download_data.pre_notification_time / 5; - if (!buf[17]) - buf[17] = 0xff; - - if (wi->dl_device == DATALINK_70) - buf[1] = DATA_70; -#else - - pnum=1; - - buf[0] = 0x13; - buf[1] = 0x61; - buf[2] = pnum; - buf[3] = (addr >> 8) & 0xff; - buf[4] = addr & 0xff; - addr += dl_download_data.app_size; - buf[5] = (addr >> 8) & 0xff; - buf[6] = addr & 0xff; - addr += dl_download_data.todo_size; - buf[7] = (addr >> 8) & 0xff; - buf[8] = addr & 0xff; - addr += dl_download_data.phone_size; - buf[9] = (addr >> 8) & 0xff; - buf[10] = addr & 0xff; - buf[11] = dl_download_data.num_apps; - buf[12] = dl_download_data.num_todos; - buf[13] = dl_download_data.num_phones; - buf[14] = dl_download_data.num_annivs; - buf[15] = 0x00; - buf[16] = 0x03; -#endif + buf[0] = 0x13; + buf[1] = 0x61; + buf[2] = pnum; + buf[3] = (addr >> 8) & 0xff; + buf[4] = addr & 0xff; + addr += dl_download_data.app_size; + buf[5] = (addr >> 8) & 0xff; + buf[6] = addr & 0xff; + addr += dl_download_data.todo_size; + buf[7] = (addr >> 8) & 0xff; + buf[8] = addr & 0xff; + addr += dl_download_data.phone_size; + buf[9] = (addr >> 8) & 0xff; + buf[10] = addr & 0xff; + buf[11] = dl_download_data.num_apps; + buf[12] = dl_download_data.num_todos; + buf[13] = dl_download_data.num_phones; + buf[14] = dl_download_data.num_annivs; + buf[15] = 0x00; + buf[16] = 0x03; + } else { + memcpy(buf, dinfo, *dinfo); + buf[2] = 1; + buf[3] = dl_download_data.memory / (MAX_PCKT - 6); + + if (dl_download_data.memory % (MAX_PCKT - 6)) + buf[3]++; + + buf[12] = dl_download_data.num_apps; + buf[13] = dl_download_data.num_todos; + buf[14] = dl_download_data.num_phones; + buf[15] = dl_download_data.num_annivs; + buf[4] = (addr >> 8) & 0xff; + buf[5] = addr & 0xff; + addr += dl_download_data.app_size; + buf[6] = (addr >> 8) & 0xff; + buf[7] = addr & 0xff; + addr += dl_download_data.todo_size; + buf[8] = (addr >> 8) & 0xff; + buf[9] = addr & 0xff; + addr += dl_download_data.phone_size; + buf[10] = (addr >> 8) & 0xff; + buf[11] = addr & 0xff; + buf[16] = 0x62; + buf[17] = dl_download_data.pre_notification_time / 5; + if (!buf[17]) + buf[17] = 0xff; + + if (wi->dl_device == DATALINK_70) + buf[1] = DATA_70; + } dl_docrc(buf); @@ -413,27 +411,26 @@ int dl_send_data(WatchInfoPtr wi, int type) return ((*dl_error_proc) ("Can't write dinfo to tmp file.")); -#if 0 - pnum = 1; -#else - pnum = 2; -#endif + if (wi->dl_device == DATALINK_50) + pnum = 2; + else + pnum = 1; + memcpy(buf, dspace, *dspace); -#if 1 - buf[0] = 0x3; -#endif + if (wi->dl_device == DATALINK_50) + buf[0] = 0x3; - if (wi->dl_device == DATALINK_70) + if ((wi->dl_device == DATALINK_50) || (wi->dl_device == DATALINK_70)) buf[1] = DATA_70; -#if 0 - buf[2] = 1; - buf[3] = pnum++; -#else - buf[2] = pnum++; -#endif - + if (wi->dl_device == DATALINK_50) { + buf[2] = pnum++; + } else { + buf[2] = 1; + buf[3] = pnum++; + } + for (i = 0; i < dl_download_data.num_apps; i++) { ap = &dl_download_data.apps[i]; @@ -792,11 +789,10 @@ int dl_send_data(WatchInfoPtr wi, int type) memcpy(buf, dspace, *dspace); -#if 1 - buf[0] = 0x3; -#endif + if (wi->dl_device == DATALINK_50) + buf[0] = 0x3; - if (wi->dl_device == DATALINK_70) + if ((wi->dl_device == DATALINK_50) || (wi->dl_device == DATALINK_70)) buf[1] = DATA_70; pnum = 1; @@ -858,11 +854,10 @@ int dl_send_data(WatchInfoPtr wi, int type) memcpy(buf, dspace, *dspace); -#if 1 - buf[0] = 0x3; -#endif + if (wi->dl_device == DATALINK_50) + buf[0] = 0x3; - if (wi->dl_device == DATALINK_70) + if ((wi->dl_device == DATALINK_50) || (wi->dl_device == DATALINK_70)) buf[1] = DATA_70; pnum = 1; diff --git a/settime.c b/settime.c index 3c89093..ab98990 100644 --- a/settime.c +++ b/settime.c @@ -117,6 +117,9 @@ int main( int argc, char ** argv) if(argc==2) { + if(!strcmp("-model50",argv[1])||!strcmp("-50",argv[1])) + wi = dl_init_watch(DATALINK_50); + else if(!strcmp("-model70",argv[1])||!strcmp("-70",argv[1])) wi = dl_init_watch(DATALINK_70); else @@ -130,7 +133,7 @@ int main( int argc, char ** argv) wi = dl_init_watch(DATALINK_IRONMAN); else { - printf("Usage: %s [ -model70 | -70 | -model70 | " + printf("Usage: %s [ -model50 | -50 | -70 | -model70 | " "-150 | -model150 | -model150s | -150s |" " -ironman]\nVersion " "$Id: settime.c,v 1.13 2002/07/10 04:23:23 david Exp $\n", argv[0]); diff --git a/setwatch.c b/setwatch.c index 93a9364..eee146b 100644 --- a/setwatch.c +++ b/setwatch.c @@ -120,7 +120,8 @@ void Usage() printf("Usage: datalink [watch type] [options] [datafile]\n"); printf ("watchtype (ironman is default, must be specified before other options)\n"); - printf(" -model70\t use if you have this watch\n"); + printf(" -50\t use if you have this watch\n"); + printf(" -model50\t use if you have this watch\n"); printf(" -70\t use if you have this watch\n"); printf(" -model70\t use if you have this watch\n"); printf(" -150\t use if you have this watch\n"); @@ -199,6 +200,7 @@ void Usage() #define CHRON 0x400 /* All would be 0x755 */ +#define ALL50 0x07F #define ALL70 0x07F #define ALL150 0x1FF #define ALLIRONMAN 0x653 @@ -228,6 +230,8 @@ int main(int argc, char **argv) if (strcmp("-all", argv[1]) == 0) { + if (type == DATALINK_50) + flags = ALL50; if (type == DATALINK_70) flags = ALL70; if (type == DATALINK_150 || type == DATALINK_150S) @@ -300,6 +304,10 @@ int main(int argc, char **argv) output = BLINK_FILE; else if (strcmp("-serial", argv[1]) == 0) output = SER_BLINK; + else if (strcmp("-model50", argv[1]) == 0) + type = DATALINK_50; + else if (strcmp("-50", argv[1]) == 0) + type = DATALINK_50; else if (strcmp("-model70", argv[1]) == 0) type = DATALINK_70; else if (strcmp("-70", argv[1]) == 0) diff --git a/svgablink.c b/svgablink.c index 185a2ca..3e30461 100644 --- a/svgablink.c +++ b/svgablink.c @@ -70,10 +70,14 @@ int main(int argc, char **argv) || strcmp(argv[1], "-model70") == 0) type = DATALINK_70; else + if (strcmp(argv[1], "-50") == 0 + || strcmp(argv[1], "-model50") == 0) + type = DATALINK_50; + else { fprintf(stderr, "Unknown option %s.\n", argv[1]); fprintf(stderr, "Usage: %s [ -ironman | -modelironman | -150 | -model150 | -150s | \n" - "\t-model150s | -70 | -model70 ] datafile\n" + "\t-model150s | -70 | -model70 | -50 | -model50 ] datafile\n" "Version $Id: svgablink.c,v 1.12 2002/07/10 04:27:08 david Exp $\n", argv[0]); exit(-1); }