FreeCalypso > hg > freecalypso-tools
view rvinterf/lowlevel/packettx.c @ 752:c79aaed75bd8
compile-fc-batt: allow possible third field in source lines
Battery tables maintained in the fc-battery-conf repository will now
have a third field added, defining thresholds for the battery bars icon,
and there will be a new utility to compile them into the new
/etc/batterytab2 file read by the FC Tourmaline version of our
FCHG driver. For backward compatibility with the original Magnetite
version of FCHG, compile-fc-batt remains the tool for compiling the
original /etc/batterytab file format, and it needs to ignore the
newly added third field in battery table sources.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 05 Nov 2020 20:37:55 +0000 |
parents | e7502631a0f9 |
children |
line wrap: on
line source
/* * This module handles the lowest level of serial packet Tx */ #include <sys/types.h> #include <sys/time.h> #include <stdio.h> #include <string.h> #include <strings.h> #include <stdlib.h> #include <unistd.h> #include "../include/pktmux.h" #include "../include/limits.h" extern int target_fd; extern int wakeup_after_sec; static u_char wakeup_shot[64]; static struct timeval last_tx; send_pkt_to_target(pkt, pktlen) u_char *pkt; { u_char buf[MAX_PKT_TO_TARGET*2+2]; u_char *cp, *dp, *endp; int c; struct timeval curtime, timediff; gettimeofday(&curtime, 0); if (wakeup_after_sec) { timersub(&curtime, &last_tx, &timediff); if (timediff.tv_sec >= wakeup_after_sec) { write(target_fd, wakeup_shot, sizeof wakeup_shot); usleep(100000); } } endp = pkt + pktlen; dp = buf; *dp++ = STX; for (cp = pkt; cp < endp; cp++) { c = *cp; if (c == STX || c == DLE) *dp++ = DLE; *dp++ = c; } *dp++ = STX; write(target_fd, buf, dp - buf); bcopy(&curtime, &last_tx, sizeof(struct timeval)); }