From 37daf91cae1298d38ec7a81f97ed907274c59633 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 30 Apr 2019 14:15:36 +0100 Subject: fish --- master/model-50-v1.patch | 458 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 458 insertions(+) create mode 100644 master/model-50-v1.patch (limited to 'master/model-50-v1.patch') diff --git a/master/model-50-v1.patch b/master/model-50-v1.patch new file mode 100644 index 0000000..b9a10c8 --- /dev/null +++ b/master/model-50-v1.patch @@ -0,0 +1,458 @@ +diff --git a/Makefile b/Makefile +index 22a7c9e..e758fa4 100644 +--- a/Makefile ++++ b/Makefile +@@ -11,13 +11,15 @@ LIBDIR=$(PREFIX)/lib + MANDIR=$(PREFIX)/man + INCDIR=$(PREFIX)/include + ++PORT = /dev/ttyUSB1 ++ + CC = gcc +-#CFLAGS = -Wall -g -DBINDIR=\"$(BINDIR)\" +-CFLAGS = -O2 -DBINDIR=\"$(BINDIR)\" ++CPPFLAGS = -DBINDIR=\"$(BINDIR)\" -DPORT=\"$(PORT)\" ++#CFLAGS = -g -Wall -fPIC ${CPPFLAGS} ++CFLAGS = -O2 -fPIC ${CPPFLAGS} + +-PORT = /dev/ttyS0 + +-ENGINES = svgablink serblink ++ENGINES = serblink + + RANLIB = echo + #RANLIB = ranlib +@@ -74,12 +76,12 @@ parse.c: dataread.l dl_read_save.c y.tab.h + mv lex.yy.c $@ + + depend: parse.c dl_read_save.c +- makedepend -f- -o.o $(CFLAGS) $(SRC) $(SVGASRC) $(SERSRC) > depend ++ makedepend -f- -o.o $(CPPFLAGS) $(SRC) $(SVGASRC) $(SERSRC) > depend + @echo "Dependencies have been made, re-run make to build" + @false + + serblink.o: $(SERSRC) +- $(CC) -c $(CFLAGS) -DPORT=\"$(PORT)\" $(SERSRC) ++ $(CC) $(CFLAGS) -o $@ -c $(SERSRC) + + serblink: $(SEROBJ) + rm -f $@ +@@ -90,19 +92,19 @@ svgablink: $(SVGAOBJ) + $(CC) $(CFLAGS) -o $@ $(SVGAOBJ) -lvga + + settime.o: settime.c +- $(CC) $(CFLAGS) -I. -c settime.c ++ $(CC) $(CFLAGS) -I. -c -o $@ settime.c + + setwatch.o: setwatch.c +- $(CC) $(CFLAGS) -I. -c setwatch.c ++ $(CC) $(CFLAGS) -I. -c -o $@ setwatch.c + + settime: settime.o libdatalink.a +- $(CC) $(CFLAGS) -o $@ settime.o -L. -ldatalink ++ $(CC) $(CFLAGS) -o $@ settime.o libdatalink.a + + setwatch: setwatch.o libdatalink.a +- $(CC) $(CFLAGS) -o $@ setwatch.o -L. -ldatalink ++ $(CC) $(CFLAGS) -o $@ setwatch.o libdatalink.a + + cvt: cvt.o +- $(CC) $(CFLAGS) -o $@ ++ $(CC) $(CFLAGS) -o $@ -c $@.o + + install: all + mkdir -p $(BINDIR) $(MANDIR)/man1 +diff --git a/dl_send_data.c b/dl_send_data.c +index 3dfa12e..b3ac3ec 100644 +--- a/dl_send_data.c ++++ b/dl_send_data.c +@@ -27,10 +27,15 @@ + #include + #include + #include ++#include + #include "datalink.h" + #include "datalink_private.h" + ++#if 0 + #define MAX_PCKT 38 ++#else ++#define MAX_PCKT 32 ++#endif + + #define TIME_70 0x30 + #define DSTART_70 0x60 +@@ -60,7 +65,7 @@ static unsigned char dstart[] = { 5, 0x93, 0, 0, 0 }; + static unsigned char dinfo[] = { 20, 0x90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0 + }; +-static unsigned char dspace[] = { 4, 0x91, 0, 0 }; ++static unsigned char dspace[] = { 3, 0x91, 0 }; + static unsigned char dend[] = { 5, 0x92, 0, 0, 0 }; + static unsigned char blank_alarm[] = { 18, 0x50, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +@@ -94,11 +99,19 @@ 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_70) + buf[1] = DATA_70; + ++#if 0 + buf[2] = type; + buf[3] = (*pnum)++; ++#else ++ buf[2] = (*pnum)++; ++#endif + } + + if (!size) +@@ -119,7 +132,11 @@ int dl_send_data(WatchInfoPtr wi, int type) + char * template="/datalink_XXXXXX"; + unsigned char buf[64]; + unsigned char data[64]; ++#if 0 + unsigned short addr = 0x0236; ++#else ++ unsigned short addr = 0x000e; ++#endif + char *protocol; + AppointmentPtr ap; + ToDoPtr tp; +@@ -135,7 +152,9 @@ int dl_send_data(WatchInfoPtr wi, int type) + int status; + int ret=0; + int p; ++ struct termios tios; + ++#if 0 + if (type == BLINK_FILE) + { + strcpy(fname, "DEBUGOUTPUT"); +@@ -172,6 +191,33 @@ int dl_send_data(WatchInfoPtr wi, int type) + return ((*dl_error_proc) (buf)); + } + } ++#else ++ if (getenv("TIMEX_PORT")) { ++ strcpy(fname, getenv("TIMEX_PORT")); ++ } else { ++ strcpy(fname, PORT); ++ } ++ ++ if ((ofd = open(fname, O_WRONLY)) == -1) { ++ sprintf(buf, "Can't open %s for writing.", fname); ++ return ((*dl_error_proc) (buf)); ++ } ++ ++ if (tcgetattr(ofd, &tios) < 0) ++ { ++ return ((*dl_error_proc) ("tcgetattr failed")); ++ } ++ ++ cfmakeraw(&tios); ++ cfsetspeed(&tios, B115200); /* It's usb so baudrate doesn't matter */ ++ ++ if (tcsetattr(ofd, TCSANOW, &tios) < 0) ++ { ++ return ((*dl_error_proc) ("tcsetattr failed")); ++ } ++ ++ write(ofd, "Timex", 5); ++#endif + + memcpy(buf, start1, *start1); + +@@ -213,6 +259,10 @@ 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 ++ + p = 2; + if (wi->dl_device == DATALINK_IRONMAN) + { +@@ -242,6 +292,7 @@ int dl_send_data(WatchInfoPtr wi, int type) + 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]); +@@ -252,6 +303,11 @@ int dl_send_data(WatchInfoPtr wi, int type) + 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_150 || +@@ -276,14 +332,26 @@ 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 (dl_download_data.memory % (MAX_PCKT - 6)) ++ buf[2]++; ++ buf[2]++; ++#endif + dl_docrc(buf); + + if (write(ofd, buf, *buf) != *buf) + return ((*dl_error_proc) + ("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); +@@ -313,6 +381,31 @@ int dl_send_data(WatchInfoPtr wi, int type) + + 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 + + dl_docrc(buf); + +@@ -320,14 +413,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 + memcpy(buf, dspace, *dspace); + ++#if 1 ++ buf[0] = 0x3; ++#endif ++ + if (wi->dl_device == DATALINK_70) + buf[1] = DATA_70; + ++#if 0 + buf[2] = 1; + buf[3] = pnum++; ++#else ++ buf[2] = pnum++; ++#endif + + for (i = 0; i < dl_download_data.num_apps; i++) + { +@@ -421,8 +526,16 @@ int dl_send_data(WatchInfoPtr wi, int type) + return ((*dl_error_proc) + ("Can't write to tmp file.")); + ++ ++#if 0 + memcpy(buf, dend, *dend); + buf[2] = 1; ++#else ++ buf[0]=0x4; ++ buf[1]=0x62; ++#endif ++ ++ + dl_docrc(buf); + + if (write(ofd, buf, *buf) != *buf) +@@ -558,7 +671,11 @@ int dl_send_data(WatchInfoPtr wi, int type) + } + + /* timezone label packet for IRONMAN watch */ ++#if 0 + if (wi->dl_device == DATALINK_IRONMAN) ++#else ++ if (1) ++#endif + for (i = 0; i < dl_download_data.num_times; i++) + { + p = 0; +@@ -673,6 +790,10 @@ int dl_send_data(WatchInfoPtr wi, int type) + + memcpy(buf, dspace, *dspace); + ++#if 1 ++ buf[0] = 0x3; ++#endif ++ + if (wi->dl_device == DATALINK_70) + buf[1] = DATA_70; + +@@ -735,6 +856,10 @@ int dl_send_data(WatchInfoPtr wi, int type) + + memcpy(buf, dspace, *dspace); + ++#if 1 ++ buf[0] = 0x3; ++#endif ++ + if (wi->dl_device == DATALINK_70) + buf[1] = DATA_70; + +@@ -798,6 +923,7 @@ int dl_send_data(WatchInfoPtr wi, int type) + + close(ofd); + ++#if 0 + switch (type) + { + case BLINK_FILE: +@@ -892,6 +1018,7 @@ int dl_send_data(WatchInfoPtr wi, int type) + + break; + } ++#endif + + return (ret); + } +diff --git a/serblink.c b/serblink.c +index 9ca9fdc..44751f0 100644 +--- a/serblink.c ++++ b/serblink.c +@@ -30,7 +30,7 @@ + #include + #include + #include +-#include ++#include + #include + + #include +@@ -41,7 +41,7 @@ + #endif + + #ifndef PORT +-#define PORT "/dev/ttyd1" ++#define PORT "/dev/ttyUSB1" + #endif + + void sendbyte(int fil, unsigned char dat) +@@ -50,6 +50,7 @@ void sendbyte(int fil, unsigned char dat) + #define LEN 6 + { + static int frame = 0; ++#if 0 + char buff[1024]; + int c = 0; + int i; +@@ -72,11 +73,21 @@ void sendbyte(int fil, unsigned char dat) + /* a single CRT frame (different inter-word pause) */ + + write(fil, buff, c); ++#else ++ write(fil, &dat, 1); ++ if (!frame) { ++ usleep(1492); /*Scanlines 216 to 263 */ ++ } else { ++ usleep(6383); /*Scanlines 402 to 78 */ ++ } ++ frame = !frame; /* a frame is 2 words, which would have been on */ ++#endif + } + + /* For pauses between packets: */ + static void __pause(int fil, int count) + { ++#if 0 + char buff[8192]; + int i, c; + +@@ -84,6 +95,9 @@ static void __pause(int fil, int count) + for (i = 0; i < (count * LEN); i++) + buff[c++] = 0x0; + write(fil, buff, c); ++#else ++ usleep(count * 488); // 488 per 2048 baud bit ++#endif + } + + #undef ZERO +@@ -95,6 +109,7 @@ int main(int argc, char **argv) + int port; + int data; + struct termios old, new; ++ struct termios2 tios2; + int i, j, len, plen; + unsigned char buff[4096]; + char fil[1024]; +@@ -166,13 +181,20 @@ int main(int argc, char **argv) + perror("tcgetattr failed:"); + exit(1); + } +- new = old; +- cfsetspeed(&new, B115200); ++ cfmakeraw(&new); ++ cfsetspeed(&new, B2400); + if (tcsetattr(port, TCSANOW, &new) < 0) + { + perror("tcsetattr failed:"); + exit(1); + } ++ ++ ioctl(port, TCGETS2, &tios2); ++ tios2.c_cflag &= ~CBAUD; ++ tios2.c_cflag |= BOTHER; ++ tios2.c_ispeed = tios2.c_ospeed = 2048; ++ ioctl(port, TCSETS2, &tios2); ++ + #if 0 + while (1) + __pause(port, 20); /* used for hardware debugging */ +diff --git a/settime.c b/settime.c +index 7361599..3c89093 100644 +--- a/settime.c ++++ b/settime.c +@@ -151,6 +151,6 @@ int main( int argc, char ** argv) + /* + Send it to the watch + */ +- dl_send_data(wi, SVGA_BLINK); ++ dl_send_data(wi, BLINK_FILE); + return 0; + } -- cgit v1.2.3