📄 ui_follow.s01
字号:
NAME ui_follow(17)
RSEG AP_UI_FL(0)
RSEG CSTR(0)
EXTERN ABPointTimeSize
EXTERN BankSwitch
EXTERN ChangeVolume
EXTERN DealForExitRec
EXTERN DealPlayKey
EXTERN DisplayErrMsg
EXTERN FS_FClose
EXTERN FS_FCreate
EXTERN FS_FRemove
EXTERN FS_FWrite
EXTERN FS_GetInfo
EXTERN FS_GetSpace
EXTERN GetBattery
EXTERN OpenMusic
EXTERN RePlayStatus
EXTERN RefreshMainScreen
EXTERN Replaytimes_CNT
EXTERN ReturnNotInit
EXTERN ShowNowTime
EXTERN Show_time_FC
EXTERN UpDisplayFlag
EXTERN ap_get_message
EXTERN ap_handle_hotkey
EXTERN g_2HZ_CNT
EXTERN g_FCexitflag
EXTERN g_comval
EXTERN g_music_vars
EXTERN g_result
EXTERN musicpSendCommand
EXTERN need_draw
EXTERN return_to_play
EXTERN ui_auto_update
PUBLIC ui_followAB
PUBLIC ui_followRec
EXTERN ui_run_realtime
EXTERN ui_show_batt
EXTERN wavrProceed
EXTERN wavrSendCommand
EXTERN ?CLZ80B_4_04_L00
EXTERN ?SS_CMP_L02
EXTERN ?SL_CMP_L03
EXTERN ?L_INC_L03
EXTERN ?L_DEC_L03
EXTERN ?L_DECASG_L03
EXTERN ?S_V_SWITCH_L06
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_LEAVE_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
EXTERN ?ENT_AUTO_DIRECT_L09
RSEG AP_UI_FL
ui_followRec:
; 1. /*
; 2. *******************************************************************************
; 3. * SDK30F_D1
; 4. * music player follow compare sub
; 5. *
; 6. * (c) Copyright 2002, Actions Co,Ld.
; 7. * All Right Reserved
; 8. *
; 9. * File: ui_follow.c
; 10. * By : rcmai
; 11. * Version: 1> v1.00 first version 2004-3-19 8:28
; 12. *******************************************************************************
; 13. * $Id: ui_follow.c,v 1.1.1.1 2006/05/22 03:24:01 selina Exp $
; 14. *******************************************************************************
; 15. */
; 16.
; 17. #include "ap_music.h"
; 18.
; 19. #define DEF_RecLowBatt 5//定义最低能录音的电压
; 20.
; 21. //判断是低电的次数,当电压值低于DEF_RecLowBatt值次数超过这个值时确认为低电
; 22. #define DEF_RecLowBatTime 5
; 23. extern char return_to_play; //为一表示从其他界面返回播放界面
; 24. extern BYTE Replaytimes_CNT; //
; 25. extern bool ReturnNotInit; //TRUE:表示下一个调用不用初始化,
; 26. extern WORD ABPointTimeSize;
; 27. extern bool g_FCexitflag;
; 28.
; 29. void DealForExitRec( void ); //退出录音时的处理
; 30. void Show_time_FC( void );
; 31. void OpenMusic( void );
; 32.
; 33. #pragma codeseg(AP_UI_FL)
; 34. /*
; 35. ********************************************************************************
; 36. * int ui_followRec( void )
; 37. *
; 38. * Description : 跟读--------录音子状态
; 39. *
; 40. * Arguments : void
; 41. *
; 42. * Returns : int
; 43. * RESULT_UI_STOP: 表示要进入停止状态,此时所有module已关闭
; 44. * key: 热健消息
; 45. * NULL: 表示正常退出
; 46. *
; 47. * Notes : 在此状态下,按play到stop状态;按mode到play;按NEXT到对比状态;
; 48. *
; 49. ********************************************************************************
; 50. */
; 51. int ui_followRec( void )
; 52. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65522
PUSH IY
; 53. int key;
; 54. long DiskSpace;
; 55. HANDLE TempFileHandle;
; 56. BYTE LowBatt_CNT = 0;//低电计数器
LD (IX-6),0
; 57. int result;
; 58.
; 59. if (++Replaytimes_CNT > g_music_vars.replaytimes)
LD HL,Replaytimes_CNT
INC (HL)
LD B,(HL)
LD A,(g_music_vars+4)
CP B
LD DE,?0004
JR NC,?0003
?0002:
; 60. {
; 61. FS_FRemove(FollowReadTempFileName); //如有这个文件就删除
CALL LWRD FS_FRemove
; 62. OpenMusic();
CALL LWRD ?0134
; 63. RePlayStatus = ABLoopPlay;
; 64. UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
; 65. need_draw = TRUE;
JR ?0092
; 66. return NULL;
; 67. }
?0003:
; 68.
; 69.
; 70. FS_FRemove(FollowReadTempFileName); //如有这个文件就删除
CALL LWRD FS_FRemove
; 71. DiskSpace = FS_GetSpace(1);
LD E,1
CALL LWRD FS_GetSpace
LD (IX-12),L
LD (IX-11),H
LD (IX-10),C
LD (IX-9),B
; 72.
; 73. //如果磁盘空间少于100k不能跟读
; 74. //if( DiskSpace <= 32 + 20 )
; 75. if( DiskSpace <= 200 )
PUSH BC
PUSH HL
LD BC,0
LD HL,200
CALL LWRD ?SL_CMP_L03
JR C,?0006
?0005:
; 76. {
; 77. DisplayErrMsg(MWRIERR);
CALL LWRD ?0136
; 78. OpenMusic();
LD A,BYTE3 OpenMusic
LD HL,LWRD OpenMusic
CALL LWRD ?BANK_CALL_DIRECT_L08
; 79. RePlayStatus = ABLoopPlay;
LD A,3
LD (RePlayStatus),A
; 80. //UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
; 81. SetFullInterface();
XOR A
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 82. need_draw = TRUE;
?0092:
JR ?0093
; 83. return NULL;
; 84. }
?0006:
; 85.
; 86. TempFileHandle = FS_FCreate(FollowReadTempFileName);
LD DE,?0004
CALL LWRD FS_FCreate
LD (IX-8),L
LD (IX-7),H
; 87. if( TempFileHandle == NULL )
LD A,L
OR H
JR NZ,?0008
?0007:
; 88. {
; 89. switch ( FS_GetInfo() )
CALL LWRD FS_GetInfo
CP 6
JR NZ,?0011
?0010:
; 90. {
; 91. case FS_INFO_SPACE_OUT: //6 表示文件操作或目录操作没有磁盘空间,不能写数据或者扩展子目录
; 92. DisplayErrMsg(MWRIERR);
LD DE,394
JR ?0079
; 93. break;
?0011:
CP 7
JR NZ,?0009
; 94. case FS_INFO_DIR_OUT: //7 文件操作根目录目录项满
; 95. DisplayErrMsg(MDIROUT);
LD DE,397
?0079:
CALL LWRD ?0137
; 96. break;
?0012:
; 97.
; 98. default:
; 99. break;
?0009:
; 100. }
; 101. OpenMusic();
CALL LWRD ?0134
; 102. RePlayStatus = ABLoopPlay;
; 103. UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
; 104. need_draw = TRUE;
?0093:
JR ?0094
; 105. return NULL;
; 106. }
?0008:
; 107. {
; 108. char *i;
; 109. i = (char *)0x1000;
LD (IX-2),16
; 110. FS_FWrite(i, 1, TempFileHandle);
PUSH HL
LD C,1
LD E,B
LD D,(IX-2)
CALL LWRD FS_FWrite
POP HL
; 111. }
; 112. FS_FClose( TempFileHandle );
LD E,(IX-8)
LD D,(IX-7)
CALL LWRD FS_FClose
; 113. FS_FRemove(FollowReadTempFileName);
LD DE,?0004
CALL LWRD FS_FRemove
; 114.
; 115.
; 116. // 如电量不足够,就退出。
; 117. g_result = GetBattery();
CALL LWRD GetBattery
LD C,A
LD B,0
LD (g_result),BC
; 118. if(g_result <= DEF_RecLowBatt)
LD HL,5
CALL LWRD ?SS_CMP_L02
JR C,?0014
?0013:
; 119. {
; 120. DisplayErrMsg( MPWROUT );
LD DE,396
CALL LWRD ?0135
; 121. OpenMusic();
; 122. //RePlayStatus = ABLoopPlay;
; 123. RePlayStatus = NormalPlay;
; 124. UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
; 125. need_draw = TRUE;
?0094:
JR ?0095
; 126. return NULL;
; 127. }
?0014:
; 128.
; 129. //使控件不能出来
; 130. ui_run_realtime = TRUE;
LD A,1
LD (ui_run_realtime),A
; 131.
; 132. BankSwitch((unsigned long)wavrSendCommand >> 16);
LD E,BYTE3 wavrSendCommand
LD C,B
CALL LWRD BankSwitch
; 133. wavrSendCommand(MC_OPEN, NULL);
LD E,1
CALL LWRD ?0138
; 134. if( !wavrSendCommand(MC_LOAD, (int)FollowReadTempFileName) )
LD BC,?0004
LD E,3
CALL LWRD ?0138
INC L
DEC L
JR NZ,?0016
?0015:
; 135. {
; 136. DisplayErrMsg( MWRIERR );
CALL LWRD ?0136
; 137. OpenMusic();
CALL LWRD ?0134
; 138. RePlayStatus = ABLoopPlay;
; 139. UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
; 140. need_draw = TRUE;
?0095:
JP LWRD ?0099
; 141. return NULL;
; 142. }
?0016:
?0018:
; 143.
; 144. //在开始前把清按键,下面才开始响应按键
; 145. while (ap_get_message() != 0);
CALL LWRD ap_get_message
OR A
JR NZ,?0016
?0019:
?0017:
; 146.
; 147. wavrSendCommand(MC_RECORD, NULL);
LD C,A
LD B,A
LD E,8
CALL LWRD ?0138
; 148. UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
LD HL,UpDisplayFlag
INC HL
SET 3,(HL)
; 149. need_draw = TRUE;
LD A,1
LD (need_draw),A
; 150. g_2HZ_CNT = 0;
LD HL,0
LD (g_2HZ_CNT),HL
?0021:
; 151.
; 152.
; 153. while (1)
; 154. {
; 155. result = wavrProceed();
LD A,BYTE3 wavrProceed
LD HL,LWRD wavrProceed
CALL LWRD ?BANK_CALL_DIRECT_L08
; 156.
; 157. //if( wavrProceed() == 1 )
; 158. if( result == 1 )
LD A,1
XOR L
OR H
JR NZ,?0024
?0023:
; 159. {
; 160. if( DiskSpace-- <= 200 )
LD L,(IX-12)
LD H,(IX-11)
LD C,(IX-10)
LD B,(IX-9)
PUSH BC
PUSH HL
CALL LWRD ?L_DEC_L03
LD (IX-12),L
LD (IX-11),H
LD (IX-10),C
LD (IX-9),B
LD C,A
LD B,A
LD HL,200
CALL LWRD ?SL_CMP_L03
JR C,?0029
?0025:
; 161. {
; 162. DealForExitRec();
LD A,BYTE3 DealForExitRec
LD HL,LWRD DealForExitRec
CALL LWRD ?BANK_CALL_DIRECT_L08
; 163. DisplayErrMsg(MWRIERR);
CALL LWRD ?0136
; 164. RePlayStatus = FollowAB;
LD A,5
LD (RePlayStatus),A
; 165. // SetFullInterface();
; 166. return_to_play=1;
LD A,1
LD (return_to_play),A
; 167. return NULL;
JP LWRD ?0080
; 168. }
?0026:
?0024:
; 169. }
; 170. else if ( result == -1 )
LD A,L
AND H
INC A
JR NZ,?0029
?0028:
; 171. {
; 172. DealForExitRec();
LD A,BYTE3 DealForExitRec
LD HL,LWRD DealForExitRec
CALL LWRD ?BANK_CALL_DIRECT_L08
; 173. DisplayErrMsg(MREADERR);
LD DE,393
JP LWRD ?0100
; 174. OpenMusic();
; 175. RePlayStatus = NormalPlay;
; 176. UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
; 177. need_draw = TRUE;
; 178. return NULL;
; 179. }
?0029:
?0027:
; 180.
; 181.
; 182. ///wavrProceed();
; 183. if (need_draw)
LD A,(need_draw)
OR A
JR Z,?0031
?0030:
; 184. {
; 185. Show_time_FC(); //显示比特率
LD A,BYTE3 Show_time_FC
LD HL,LWRD Show_time_FC
CALL LWRD ?BANK_CALL_DIRECT_L08
; 186. RefreshMainScreen();
LD A,BYTE3 RefreshMainScreen
LD HL,LWRD RefreshMainScreen
CALL LWRD ?BANK_CALL_DIRECT_L08
; 187. need_draw = FALSE;
XOR A
LD (need_draw),A
?0031:
; 188. }
; 189.
; 190. key = ap_get_message();
CALL LWRD ?0139
; 191.
; 192. switch (key)
CALL LWRD ?S_V_SWITCH_L06
DEFW 7
DEFW 28
DEFW 29
DEFW 33
DEFW 37
DEFW 38
DEFW 48
DEFW 49
DEFW ?0044
DEFW ?0035
DEFW ?0036
DEFW ?0035
DEFW ?0037
DEFW ?0034
DEFW ?0032
DEFW ?0038
?0033:
; 193. {
; 194. case AP_MSG_STANDBY:
; 195. break;
?0034:
; 196.
; 197. case AP_KEY_PLAY | AP_KEY_UP: //进入stop状态
; 198. DealForExitRec();//关闭录音模块
LD A,BYTE3 DealForExitRec
LD HL,LWRD DealForExitRec
CALL LWRD ?BANK_CALL_DIRECT_L08
; 199. RePlayStatus = NormalPlay;
; 200. /*
; 201. //************
; 202. //注:因为这里退出时外面要淡出,所以会发出声音,
; 203. //这里把音量设为0就相当于不淡出,这只是权余之计
; 204. //以后希望能改掉
; 205. SetPAVolume(0);
; 206.
; 207. //由于在MC_PLAY命令中用这个标志来判断是否要设音量,这里送
; 208. //个非0就是为了认音量为0,从而在开始放MUSIC后不送出声音
; 209. g_FadeInStatusFlag = 2;
; 210. OpenMusic();
; 211. g_FadeInStatusFlag = 0;
; 212. //*************
; 213. */
; 214.
; 215. g_FCexitflag = TRUE;
; 216. OpenMusic();
CALL LWRD ?0133
; 217. //musicpSendCommand(MC_SETVOLUME, 0); //让音量为0,这可在淡出时没声
; 218.
; 219. //UpDisplayFlag=UpDisplayFlag | up_MPRLmode;
; 220. SetFullInterface();
; 221. need_draw = TRUE;
; 222. return RESULT_UI_STOP2; //选关播放后回到停止界面
LD HL,103
; 223.
; 224. case AP_KEY_AB | AP_KEY_UP:
JP LWRD ?0052
?0035:
; 225. case AP_KEY_NEXT | AP_KEY_UP: //进入对比状态
; 226. DealForExitRec();//关闭录音模块
LD A,BYTE3 DealForExitRec
LD HL,LWRD DealForExitRec
CALL LWRD ?BANK_CALL_DIRECT_L08
; 227. RePlayStatus = CompareAB;
LD A,7
JP LWRD ?0091
; 228. //UpDisplayFlag=UpDisplayFlag | up_MPRLmode;
; 229. //need_draw = TRUE;
; 230. return NULL;
; 231.
; 232. case AP_KEY_MODE | AP_KEY_UP: //进入正常播放状态
?0036:
; 233. DealForExitRec();//关闭录音模块
LD A,BYTE3 DealForExitRec
LD HL,LWRD DealForExitRec
CALL LWRD ?BANK_CALL_DIRECT_L08
; 234. OpenMusic();
LD A,BYTE3 OpenMusic
LD HL,LWRD OpenMusic
CALL LWRD ?BANK_CALL_DIRECT_L08
; 235. RePlayStatus = NormalPlay;
XOR A
LD (RePlayStatus),A
; 236. SetFullInterface();
JR ?0101
; 237. need_draw = TRUE;
; 238. return NULL;
; 239.
; 240. case AP_KEY_PREV | AP_KEY_UP: //进入ab播放状态
?0037:
; 241. DealForExitRec();//关闭录音模块
LD A,BYTE3 DealForExitRec
LD HL,LWRD DealForExitRec
CALL LWRD ?BANK_CALL_DIRECT_L08
; 242. OpenMusic();
LD A,BYTE3 OpenMusic
LD HL,LWRD OpenMusic
CALL LWRD ?BANK_CALL_DIRECT_L08
; 243. RePlayStatus = ABLoopPlay;
LD A,3
LD (RePlayStatus),A
; 244. //UpDisplayFlag=UpDisplayFlag | up_MPRLmode |;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -