comparison rvinterf/etmsync/fsmisc.c @ 300:19b846c8abed

fc-fsio: format and preformat commands added
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Sun, 02 Mar 2014 01:32:55 +0000
parents
children 8dd522a8d60e
comparison
equal deleted inserted replaced
299:91570f916dd3 300:19b846c8abed
1 /*
2 * Miscellaneous (dangerous!) FFS2 operations
3 */
4
5 #include <sys/types.h>
6 #include <stdio.h>
7 #include <stdlib.h>
8 #include <string.h>
9 #include <strings.h>
10 #include "etm.h"
11 #include "ffs.h"
12 #include "tmffs2.h"
13 #include "limits.h"
14 #include "ffslimits.h"
15 #include "localtypes.h"
16 #include "localstruct.h"
17 #include "exitcodes.h"
18
19 extern u_char rvi_msg[];
20 extern int rvi_msg_len;
21
22 cmd_format(argc, argv)
23 char **argv;
24 {
25 u_char cmdpkt[MAX_PKT_TO_TARGET], *dp;
26 int rc, slen;
27
28 slen = strlen(argv[1]);
29 if (slen >= TMFFS_STRING_SIZE) {
30 printf("error: argument exceeds string length limit\n");
31 return;
32 }
33 dp = cmdpkt + 1;
34 *dp++ = ETM_FFS2;
35 *dp++ = TMFFS_FORMAT;
36 *dp++ = slen + 1;
37 strcpy(dp, argv[1]);
38 dp += slen + 1;
39 /* magic is 0x2BAD, 16-bit little-endian */
40 *dp++ = 0xAD;
41 *dp++ = 0x2B;
42 rc = etm_pkt_exch(cmdpkt, dp - cmdpkt - 1);
43 if (rc)
44 return(rc);
45 if (rvi_msg_len != 5) {
46 printf("error: TMFFS_FORMAT response has wrong length\n");
47 return(ERROR_TARGET);
48 }
49 if (rvi_msg[3]) {
50 report_ffs_err("format", rvi_msg[3]);
51 return(ERROR_TARGET);
52 }
53 return(0);
54 }
55
56 cmd_preformat()
57 {
58 u_char cmdpkt[6];
59 int rc;
60
61 cmdpkt[1] = ETM_FFS2;
62 cmdpkt[2] = TMFFS_PREFORMAT;
63 /* magic is 0xDEAD, 16-bit little-endian */
64 cmdpkt[3] = 0xAD;
65 cmdpkt[4] = 0xDE;
66 rc = etm_pkt_exch(cmdpkt, 4);
67 if (rc)
68 return(rc);
69 if (rvi_msg_len != 5) {
70 printf("error: TMFFS_PREFORMAT response has wrong length\n");
71 return(ERROR_TARGET);
72 }
73 if (rvi_msg[3]) {
74 report_ffs_err("preformat", rvi_msg[3]);
75 return(ERROR_TARGET);
76 }
77 return(0);
78 }