FreeCalypso > hg > freecalypso-sw
view rvinterf/lowlevel/packettx.c @ 884:353daaa6014d
gsm-fw/gpf/conf/gsmcomp.c: increased max partition in the voice-only config
The code we got from TCS211 had the maximum prim pool partition size set to
900 bytes in the voice-only config (no FAX_AND_DATA, no GPRS) and to 1600 bytes
in every other config. As it turns out, this "minimized" config breaks when
the AT command interface is used with %CPI enabled, as the responsible code in
ATI does an ACI_MALLOC of 1012 bytes. TI may have considered this case to be
unsupported usage (perhaps they didn't care about the combination of a
voice-only PS with AT command control), but we do want this use case to work
without crashing. Solution: I made the largest prim pool the same as it is
with FAX_AND_DATA: 3 partitions of 1600 bytes.
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Sat, 27 Jun 2015 07:31:30 +0000 |
parents | 2f285f20d617 |
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)); }