📄 4010ui.lst
字号:
C51 COMPILER V8.01 4010UI 04/17/2008 09:54:45 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE 4010UI
OBJECT MODULE PLACED IN .\Debug\4010UI.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main\4010UI.c LARGE OPTIMIZE(9,SIZE) REGFILE(.\Debug\VA4010_SDK_V2.ORC) BRO
-WSE NOINTPROMOTE INCDIR(.\common;.\e2prom;.\file;.\fmtx;.\ir;.\keyboard;.\lcm;.\led;.\main;.\matrixkey;.\mp3ctrl;.\sd;.\
-usbhost;.\include;.\lib) DEBUG OBJECTEXTEND PRINT(.\Debug\4010UI.lst) OBJECT(.\Debug\4010UI.obj)
line level source
1 /****************************************************************
2 * Viaon Technology (Suzhou) Co.,Ltd
3 *
4 * Copyright 2007, Viaon Technology (Suzhou) Co.,Ltd,Suzhou,China
5 * All rights reserved.
6 *
7 *
8 * Filename: 4010UI.c
9 *
10 * Programmer: Greg
11 *
12 * Created: 1/2/2008
13 *
14 * Description: public functions
15 *
16 *
17 * Change History (most recent first): 2008.1.2
18 ****************************************************************/
19 #include "utiltypedef.h"
20 #include "4010UI.h"
21 #include "timer.h"
22 #include "halfm.h"
23 #include "hallcm.h"
24 #include "hali2c.h"
25 #include "halmp3dec.h"
26 #include "display.h"
27 #include "halvol.h"
28 #include "halir.h"
29 #include "halinfo.h"
30 #include "halfm.h"
31
32 static WORD data JumpSong = 0;
33 BYTE data JumpType = JUMP_IDLE;
34 extern BOOL data IsJumpFlag;
35 extern volatile BYTE data SongLocateTick;
36 extern BYTE data bDEVFlag;
37 extern BYTE DEVAttach[2];
38 //global value for IR
39 extern STREAM *fd_mp3;
40
41 BYTE data irjumptype = IRJUMP_TYPE_IDLE;
42 static WORD data irjump = 0;
43 //static BYTE data jump1 = 0;
44 //static BYTE data jump2 = 0;
45
46 //The MSB bit will be used to indicate the type of key.(1: control, 0:digital code)
47 //Assume the MSB bit will not be used by IR CODE.
48 #define IRKEY_TYPE_CTRL 0X80
49 #if (IR_KEY_NUMBER == IR_KEY_NUM20)
#define IRKEY_NUM ((IR_KEY_NUMBER-2)*2) //PICKSONG, CHSET key is not included.
#else
52 #define IRKEY_NUM (IR_KEY_NUMBER*2)
53 #endif
C51 COMPILER V8.01 4010UI 04/17/2008 09:54:45 PAGE 2
54 static BYTE KeyMap[IRKEY_NUM] = {
55 //IR Control 6 Keys
56 IR_CODE_PLAYPAUSE, KEY_STATUS_PLAYPAUSE|IRKEY_TYPE_CTRL, //IR_CODE, KEYSTATUS
57 IR_CODE_FM_INCREASE, KEY_STATUS_FM|IRKEY_TYPE_CTRL,
58 IR_CODE_VOLDOWN, KEY_STATUS_VOLDOWN|IRKEY_TYPE_CTRL,
59 IR_CODE_VOLUP, KEY_STATUS_VOLUP|IRKEY_TYPE_CTRL,
60 IR_CODE_RSEEK, KEY_STATUS_RSEEK|IRKEY_TYPE_CTRL,
61 IR_CODE_FSEEK, KEY_STATUS_FSEEK|IRKEY_TYPE_CTRL,
62
63 //IR Control 7 Keys
64 #if (IR_KEY_NUMBER >= IR_KEY_NUM7)
IR_CODE_FM_DECREASE, KEY_STATUS_FM_DECREASE|IRKEY_TYPE_CTRL,
#endif
67
68 //IR Control 8 Keys
69 #if (IR_KEY_NUMBER >= IR_KEY_NUM8)
IR_CODE_EQ, KEY_STATUS_EQ|IRKEY_TYPE_CTRL,
#endif
72
73 //IR Control 20 Keys
74 #if (IR_KEY_NUMBER >= IR_KEY_NUM20)
IR_CODE_0, 0,
IR_CODE_1, 1,
IR_CODE_2, 2,
IR_CODE_3, 3,
IR_CODE_4, 4,
IR_CODE_5, 5,
IR_CODE_6, 6,
IR_CODE_7, 7,
IR_CODE_8, 8,
IR_CODE_9, 9,
//0xff, IR_CODE_JUMP100_21, 100
//0xff, IR_CODE_JUMP200_21, 200
//0xff, 0xff,//{IR_CODE_PICKSONG, } //Assume the 0xff will not be used.
//0xff, 0xff,//{IR_CODE_CHSET, }
#endif
90 };
91
92
93 WORD halIRGetJump(void)
94 {
95 1 // WORD wTmp;
96 1
97 1 //if( irflag == IR_KEY20){
98 1 // wTmp = irjump;
99 1
100 1 //}//else{ //IR_KEY21
101 1 //wTmp = (irjump+jump1*100+jump2*200);
102 1 //}
103 1
104 1 return irjump;
105 1 }
106
107 void halIRClrJump(void)
108 {
109 1 irjump = 0;
110 1 // jump1 = 0; jump2 = 0;
111 1 irjumptype = IRJUMP_TYPE_IDLE;
112 1
113 1 return;
114 1 }
115
C51 COMPILER V8.01 4010UI 04/17/2008 09:54:45 PAGE 3
116 void halIRPickSong(void)
117 {
118 1 WORD wTmp = halIRGetJump();
119 1
120 1 if((wTmp != 0)&&(wTmp<=Mp3SReq.swTotalCnt)){
121 2 keystatus = KEY_STATUS_JUMP;
122 2 //UartOutText("-I-: KEY_STATUS_JUMP=");UartOutValue(irjump, 4);
123 2 Mp3SReq.swJump = wTmp;
124 2 }else{
125 2 DispSetStatus(DISP_ERROR_STATUS);
126 2 }
127 1
128 1 //halIRClrJump();
129 1
130 1 return;
131 1 }
132
133 void halIRChSet(void)
134 {
135 1 BYTE bTmp;
136 1
137 1 bTmp = halFMFreq2Idx(halIRGetJump());
138 1 if(bTmp != FM_CHIDX_INVALID){
139 2 halFMSet(bTmp);//halFMFreq2Idx(irjump)
140 2 halWRInfo1(); //Record the new FM Frequency
141 2 //keystatus = KEY_STATUS_FM;
142 2 DispSetStatus(DISP_FMCH_STATUS);
143 2 UartOutText("-I-:irjumptype:\t");UartOutValue(irjumptype, 2);
144 2 UartOutText("-I-:bTmp:\t");UartOutValue(bTmp, 2);
145 2
146 2
147 2 }else{
148 2 DispSetStatus(DISP_ERROR_STATUS);
149 2 }
150 1
151 1 //halIRClrJump();
152 1
153 1 return;
154 1 }
155
156 void _halIRDigHd(BYTE bT1)
157 {
158 1 BYTE i;
159 1
160 1 /*Search the key map*/
161 1 for(i=0; i<IRKEY_NUM; i+=2){
162 2 if(KeyMap[i] == bT1){//Got it.
163 3 if(KeyMap[i+1]&IRKEY_TYPE_CTRL){
164 4 //keystatus = bT1;
165 4 keystatus = KeyMap[i+1]&(~IRKEY_TYPE_CTRL); //Clear the type bit
166 4 if((keystatus == KEY_STATUS_FSEEK)||(keystatus == KEY_STATUS_RSEEK)){
167 5 IsJumpFlag = TRUE;
168 5 SongLocateTick = 0;
169 5 }
170 4 UartOutText("-I-:keystatus \t");UartOutValue(keystatus, 2);
171 4 }else{//Digital
172 4 if(irjumptype != IRJUMP_TYPE_IDLE) {
173 5 irjump = irjump*10 + KeyMap[i+1];
174 5 }
175 4 UartOutText("-I-irjump----\t");UartOutValue(irjump, 2);
176 4 }
177 3 }
C51 COMPILER V8.01 4010UI 04/17/2008 09:54:45 PAGE 4
178 2 }
179 1
180 1 return;
181 1 }
182
183 void halIRHandle(void)
184 {
185 1 BYTE data bT1;
186 1 WORD wUCode;
187 1 DWORD irdata;
188 1
189 1 if(halIRGet(&irdata) == TRUE){
190 2 //if(halIRGet(&irdata) != IR_NULL){//if need to response repeat IR
191 2
192 2 //IR key validation checking
193 2 //bT0 = ((BYTE *)(&irdata))[0];//Key code
194 2 bT1 = ((BYTE *)(&irdata))[1];
195 2 wUCode = ((WORD *)(&irdata))[1];
196 2 UartOutText("-I-: irdata 0x");UartOutValue(irdata, 2);
197 2 //Checking the Key Code here. BYTE3 == ~BYTE4, and checking the max key code
198 2 //UartOutText("-I-: bT0=");UartOutValue(bT0, 2);
199 2 //UartOutText("-I-: IR bT1=");UartOutValue(bT1, 2);
200 2 //UartOutText("-I-: wUCode=");UartOutValue(wUCode, 4);
201 2
202 2 //Checking the User Code here
203 2 //if((IR_CODE_USER_CODE != wUCode) || (bT0 != ~bT1))
204 2 //if((IR_CODE_USER_CODE != wUCode)) return;
205 2 if((IR_CODE_USER_CODE != wUCode))
206 2 {
207 3 return;
208 3 }
209 2 UartOutText("-I-: IR bT1=");UartOutValue(bT1, 2);
210 2
211 2 //IR key handler
212 2 #if (IR_KEY_NUMBER == IR_KEY_NUM20)
switch(bT1){
case IR_CODE_PICKSONG:
//Clear irjump, waitting digital input
//Record IR key type, the MSB will be used.
halIRClrJump();
irjumptype = IRJUMP_TYPE_PICKSONG;
DispSetStatus(DISP_CTRLDIG_STATUS);
UartOutText("-I-irjump\t");UartOutValue(irjump, 2);
break;
case IR_CODE_CHSET:
//Clear irjump, waitting digital input
//Record IR key type, the MSB will be used.
halIRClrJump();
irjumptype = IRJUMP_TYPE_CHSET;
DispSetStatus(DISP_CTRLDIG_STATUS);
break;
default:
_halIRDigHd(bT1);
break;
}
#else
236 2 _halIRDigHd(bT1);
237 2 #endif
238 2 //Show JUMP
239 2 #if ((IR_KEY_NUMBER == IR_KEY_NUM20) )
C51 COMPILER V8.01 4010UI 04/17/2008 09:54:45 PAGE 5
if(halIRGetJump() > DIGITAL_SHOW_MAX_VALUE){
DispSetStatus(DISP_ERROR_STATUS);
halIRClrJump();
}
if(halIRGetJump() > 0){
DispSetStatus(DISP_CTRLDIG_STATUS);
}
#endif
249 2 }
250 1
251 1 return;
252 1 }
253
254 void _halKeyEQ()
255 {
256 1 #ifdef ENABLE_EQ_KEY
257 1 halEQUp();//halEQSet();//g_byEqValue = halSetEQ(g_byEqValue+1);
258 1 DispSetStatus(DISP_EQ_STATUS);
259 1 #endif
260 1 return;
261 1 }
262
263 void _halKeyFMUp()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -