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];