FreeCalypso > hg > freecalypso-sw
diff rvinterf/etmsync/fileio.c @ 293:ffeea2f9d149
fc-fsio: fwrite from file implemented, but no 0 length file handling yet
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Sat, 01 Mar 2014 03:53:49 +0000 |
parents | 69e8ae2b5ba2 |
children | d1333db6385f |
line wrap: on
line diff
--- a/rvinterf/etmsync/fileio.c Sat Mar 01 03:09:10 2014 +0000 +++ b/rvinterf/etmsync/fileio.c Sat Mar 01 03:53:49 2014 +0000 @@ -89,6 +89,41 @@ return(0); } +fd_write(fd, data, wrsize) + u_char *data; +{ + u_char cmdpkt[MAX_PKT_TO_TARGET], *dp; + int rc; + + if (wrsize > MAX_PKT_TO_TARGET - 6) { + printf("error: fd write data fails to fit in the packet\n"); + return(ERROR_USAGE); + } + dp = cmdpkt + 1; + *dp++ = ETM_FFS2; + *dp++ = TMFFS_WRITE; + *dp++ = fd; + *dp++ = wrsize; + bcopy(data, dp, wrsize); + dp += wrsize; + rc = etm_pkt_exch(cmdpkt, dp - cmdpkt - 1); + if (rc) + return(rc); + if (rvi_msg[3]) { + report_ffs_err("fd write", rvi_msg[3]); + return(ERROR_TARGET); + } + if (rvi_msg_len != 6) { + printf("error: TMFFS_WRITE response has wrong length\n"); + return(ERROR_TARGET); + } + if (rvi_msg[4] != wrsize) { + printf("fd write error: # of bytes written != requested\n"); + return(ERROR_TARGET); + } + return(0); +} + fd_close(fd) { u_char cmdpkt[5];