-
Notifications
You must be signed in to change notification settings - Fork 0
/
dfmp3.c
139 lines (122 loc) · 3.56 KB
/
dfmp3.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#include <stdio.h>
enum {junkdata,next,previous,tracknum,volumeup,volumedown,volumevalue,eq,playbackmode,playbacksource,standbymode,normalmode,reset,resume,pause,folder,volumegain,repeatplay};
void dfmp3(unsigned char menu,int value){
char para_hi,para_lo;
putchar(0x7e); //start
putchar(0xff); //ver
putchar(0x06); //length
switch (menu){
case next:{
putchar(0x01); //command
putchar(0x00); //feedback
putchar(0x00); //parameter High byte
putchar(0x00); //parameter low byte
}break;
case previous:{
putchar(0x02); //command
putchar(0x00); //feedback
putchar(0x00); //parameter High byte
putchar(0x00); //parameter low byte
}break;
case tracknum:{
putchar(0x12); //command
putchar(0x00); //feedback
if(value>2999)value=2999;
else if(value<0)value=0;
para_hi=value>>8;
para_lo=value&0xff;
putchar(para_hi); //parameter High byte
putchar(para_lo); //parameter low byte
}break;
case volumeup:{
putchar(0x04); //command
putchar(0x00); //feedback
putchar(0x00); //parameter High byte
putchar(0x00); //parameter low byte
}break;
case volumedown:{
putchar(0x05); //command
putchar(0x00); //feedback
putchar(0x00); //parameter High byte
putchar(0x00); //parameter low byte
}break;
case volumevalue:{
putchar(0x06); //command
putchar(0x00); //feedback
if(value>30)value=30;
else if(value<0)value=0;
para_lo=value&0xff;
putchar(0x00); //parameter High byte
putchar(para_lo); //parameter low byte
}break;
case eq:{
putchar(0x07); //command
putchar(0x00); //feedback
if(value>5)value=5;
else if(value<0)value=0;
para_lo=value&0xff;
putchar(0x00); //parameter High byte
putchar(para_lo); //parameter low byte
}break;
case playbackmode:{
putchar(0x08); //command
putchar(0x00); //feedback
if(value>3)value=3;
else if(value<0)value=0;
para_lo=value&0xff;
putchar(0x00); //parameter High byte
putchar(para_lo); //parameter low byte
}break;
case playbacksource:{
putchar(0x09); //command
putchar(0x00); //feedback
if(value>5)value=5;
else if(value<0)value=0;
para_lo=value&0xff;
putchar(0x00); //parameter High byte
putchar(para_lo); //parameter low byte
}break;
case standbymode:{
putchar(0x0a); //command
putchar(0x00); //feedback
putchar(0x00); //parameter High byte
putchar(0x00); //parameter low byte
}break;
case normalmode:{
putchar(0x0b); //command
putchar(0x00); //feedback
putchar(0x00); //parameter High byte
putchar(0x00); //parameter low byte
}break;
case reset:{
putchar(0x0c); //command
putchar(0x00); //feedback
putchar(0x00); //parameter High byte
putchar(0x00); //parameter low byte
}break;
case resume:{
putchar(0x0d); //command
putchar(0x00); //feedback
putchar(0x00); //parameter High byte
putchar(0x00); //parameter low byte
}break;
case pause:{
putchar(0x0e); //command
putchar(0x00); //feedback
putchar(0x00); //parameter High byte
putchar(0x00); //parameter low byte
//putchar(0xfe); //checksum High byte
//putchar(0xed); //checksum low byte
}break;
case volumegain:{
putchar(0x10); //command
putchar(0x00); //feedback
if(value>0x1f)value=0x1f;
else if(value<0)value=0;
para_lo=value&0xff;
putchar(0x00); //parameter High byte
putchar(para_lo); //parameter low byte
}break;
}
putchar(0xef); //end byte
}