1#include <string.h>
2#include <stdio.h>
3#include <stdlib.h>
4#include <unistd.h>
5#include <sys/types.h>
6#include <fcntl.h>
7
8/* convert console-log.txt(from flash -ndump) to bin	*
9 * usage ./t2b [log.txt]				*/
10
11int
12AtoH(char *arg)
13{
14        int i, len = strlen(arg), ret=0;
15        char *p, tmpstr[32];
16
17        for(i=0; i<len; ++i)
18        {
19                p = &arg[i];
20                if((*p>='0') && (*p<='9'))
21                        *p = *p - '0';
22                else if((*p>='a') && (*p<='f'))
23                        *p = *p - 'a' + 0xA;
24                else if((*p>='A') && (*p<='F'))
25                        *p = *p - 'A' + 0xA;
26        }
27        return (arg[0] << 4 | arg[1]);
28}
29
30int
31main(int argc, char *argv[])
32{
33	char dst_file[20], line[100], *p, xb[2];
34	FILE *fp_s, *fp_d;
35	unsigned char x, x6[16];
36	int i=0;
37	int j=0;
38
39	if(!argv[1]){
40		printf("no src file\n");
41		return -1;
42	} else{
43		sprintf(dst_file, "%s_v.bin", argv[1]);
44	}
45
46	if(((fp_s = fopen(argv[1], "r")) == NULL) || ((fp_d = fopen(dst_file, "w+")) == NULL)){
47		printf("open src/dst fail\n");
48		return -1;
49	}
50
51	while(fgets(line, sizeof(line), fp_s)!=(char*)0){
52		if(line[8]==':' && line[9]==' '){
53			p = line;
54			i=0;
55			memset(x6, 0, sizeof(x6));
56			while(p){
57				p = strtok(p, "\r\n ");
58				if(p==NULL)
59					break;
60				if(strlen(p) > 3){
61					p+=strlen(p)+1;
62					continue;
63				}
64				xb[0] = *p;
65				xb[1] = *(p+1);
66				x = AtoH(xb);
67				x6[i++] = x;
68				p+=strlen(p)+1;
69			}
70			/*
71			for(i=0; i<16; ++i)
72				printf("%2x ", x6[i]);
73			printf(" (%d)\n", strlen(x6));
74			if(j++ > 5)
75				break;
76			*/
77			if(*x6)
78				fwrite(x6, 1, sizeof(x6), fp_d);
79		}
80
81	}
82
83	fclose(fp_s);
84	fclose(fp_d);
85	return 0;
86}
87