229 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			229 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#include "mywin_inc.h"
							 | 
						|||
| 
								 | 
							
								#include "mywin_user_menu.h"
							 | 
						|||
| 
								 | 
							
								#include "flash_manager.h"
							 | 
						|||
| 
								 | 
							
								#include "mywin_user_timeset.h"
							 | 
						|||
| 
								 | 
							
								#include "mywin_user_backlightset.h"
							 | 
						|||
| 
								 | 
							
								#include "mywin_user_sysfile.h"
							 | 
						|||
| 
								 | 
							
								#include "mywin_user_filder.h"
							 | 
						|||
| 
								 | 
							
								#include "mywin_user_time.h"
							 | 
						|||
| 
								 | 
							
								#include "mywin_user_light.h"
							 | 
						|||
| 
								 | 
							
								#include "mywin_user_theme.h"
							 | 
						|||
| 
								 | 
							
								#include "mywin_user_bluetooth.h"
							 | 
						|||
| 
								 | 
							
								#include "mywin_user_set.h"
							 | 
						|||
| 
								 | 
							
								#include "mywin_user_debug.h"
							 | 
						|||
| 
								 | 
							
								#include "dac.h"
							 | 
						|||
| 
								 | 
							
								#include "nrf.h"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								const static MENU_ItemStruct ptr[]={
							 | 
						|||
| 
								 | 
							
								    {0,	"主题设置"},
							 | 
						|||
| 
								 | 
							
								    {0,	"时间和日期" } ,
							 | 
						|||
| 
								 | 
							
								    {0,	"背光设置" } ,
							 | 
						|||
| 
								 | 
							
								    {0,	"重置" } ,
							 | 
						|||
| 
								 | 
							
								    {0, "关于本机" } ,
							 | 
						|||
| 
								 | 
							
								    {0,	"系统文件" } ,
							 | 
						|||
| 
								 | 
							
								    {0,	"文件管理" } ,
							 | 
						|||
| 
								 | 
							
								    {0, "迷你音响"},
							 | 
						|||
| 
								 | 
							
								    {0, "调试信息"}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								};
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//进入设置页面
							 | 
						|||
| 
								 | 
							
								WIN_MenuStruct *MENU_Setting (WIN_WindowStruct *base,WIN_PicStruct *pic) 
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									WIN_MenuStruct *menu=WIN_CreatMenu (base,(void (*)(WIN_WindowStruct *,WIN_MsgStruct *))MENU_SettingMsgLoop, 
							 | 
						|||
| 
								 | 
							
												0,0,base->x_size,base->y_size);
							 | 
						|||
| 
								 | 
							
									((WIN_WindowStruct *)menu)->intercept=1;//不发送按键消息到父窗口
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									WIN_SetBackPicPath ((WIN_WindowStruct *)menu,base->pic_path);
							 | 
						|||
| 
								 | 
							
									MENU_SetTitle (menu,0,"设置");
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									MENU_SetMaxItem(menu,9);
							 | 
						|||
| 
								 | 
							
									for (int i=0;i<9;i++)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										MENU_AddItem (menu,ptr[i].img,(char *)ptr[i].txt);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									WIN_ShowWindow((WIN_WindowStruct*)menu);
							 | 
						|||
| 
								 | 
							
									return menu;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//定义获取程序下载位置的变量
							 | 
						|||
| 
								 | 
							
								#define APP_SOURCE  	(*(u32 *)(0x08020000+4*7))
							 | 
						|||
| 
								 | 
							
								#define APP_APPNAME 	(*(char **)(0x08020000+4*8))
							 | 
						|||
| 
								 | 
							
								#define APP_SIZE			(*(u32 *)(0x08020000+4*9))
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								static void enter_sound(WIN_WindowStruct *base);
							 | 
						|||
| 
								 | 
							
								static void MENU_DoEnter (WIN_MenuStruct *menu)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									//选择了一个设置项
							 | 
						|||
| 
								 | 
							
									if (MENU_GetIndex(menu)==0) MENU_ThemeSet((WIN_WindowStruct *)menu);
							 | 
						|||
| 
								 | 
							
									else if (MENU_GetIndex(menu)==1) 	TIMEBOX_TimeSet ((WIN_WindowStruct *)menu); 
							 | 
						|||
| 
								 | 
							
									else if (MENU_GetIndex(menu)==2)  MENU_LightSet((WIN_WindowStruct *)menu);//BACKLIGHTSETBOX_BackLightSet (); 
							 | 
						|||
| 
								 | 
							
									else if (MENU_GetIndex(menu)==3) {MSGBOX_Inquiry ((WIN_WindowStruct *)menu,"重置","再按一次确定键重置","确定","返回");}
							 | 
						|||
| 
								 | 
							
									else if (MENU_GetIndex(menu)==4) 
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										char *txt=mymalloc (512);
							 | 
						|||
| 
								 | 
							
										if (APP_SOURCE)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											sprintf (txt,"型号:RC520\n软件版本:1.11 Beta1\n编译:%s\n本程序通过IAP升级\n"
							 | 
						|||
| 
								 | 
							
												"程序名:%s\n程序大小:%d Byte"
							 | 
						|||
| 
								 | 
							
												,__DATE__ " " __TIME__,APP_APPNAME,APP_SIZE);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										else
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											sprintf (txt,"型号:RC520\n软件版本:1.11 Beta1\n编译:%s\n本程序通过SWD下载"
							 | 
						|||
| 
								 | 
							
												,__DATE__ " " __TIME__);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										MSGBOX_TipsTime ((WIN_WindowStruct*)menu,"关于", txt,"确定",5000);
							 | 
						|||
| 
								 | 
							
										myfree(txt);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if (MENU_GetIndex(menu)==5) SYSFILE_ChooseFile((WIN_WindowStruct *)menu); 
							 | 
						|||
| 
								 | 
							
									else if (MENU_GetIndex(menu)==6) FILDER_ChooseFile ((WIN_WindowStruct *)menu,"0:");
							 | 
						|||
| 
								 | 
							
								  else if(MENU_GetIndex(menu)==7) enter_sound((WIN_WindowStruct *)menu);
							 | 
						|||
| 
								 | 
							
								  else if(MENU_GetIndex(menu)==8) DEBUG_EnterPrint();
							 | 
						|||
| 
								 | 
							
									else MSGBOX_TipsTime ((WIN_WindowStruct*)menu,"提示",MENU_GetSelectItem(menu) ,"确定",5000);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//消息处理函数
							 | 
						|||
| 
								 | 
							
								void MENU_SettingMsgLoop (WIN_MenuStruct *menu,WIN_MsgStruct *msg)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									WIN_MoveStruct *m=0;
							 | 
						|||
| 
								 | 
							
									WIN_TouchStruct *t=0;
							 | 
						|||
| 
								 | 
							
									WIN_KeyStruct *k=0;
							 | 
						|||
| 
								 | 
							
									switch (msg->msg)
							 | 
						|||
| 
								 | 
							
									{	
							 | 
						|||
| 
								 | 
							
										case WIN_MSG_KEY:
							 | 
						|||
| 
								 | 
							
											k=msg->data.p;
							 | 
						|||
| 
								 | 
							
											if (k->shortPress&KEY_VALUE_ENTER)
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												MENU_DoEnter(menu);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
											else
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												MENU_DefaultMsgLoop (menu,msg);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
											break;//case WIN_MSG_KEY:
							 | 
						|||
| 
								 | 
							
										case WIN_MSG_MOVE:
							 | 
						|||
| 
								 | 
							
											m=msg->data.p;
							 | 
						|||
| 
								 | 
							
											switch (m->moveType)
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												case MOVE_DATA_SHORT:
							 | 
						|||
| 
								 | 
							
								//					if (m->y_move>((WIN_WindowStruct *)menu)->y_size/2-20&&m->y_move<((WIN_WindowStruct *)menu)->y_size/2+20)
							 | 
						|||
| 
								 | 
							
								//					{
							 | 
						|||
| 
								 | 
							
								//						MENU_DoEnter(menu);
							 | 
						|||
| 
								 | 
							
								//					}
							 | 
						|||
| 
								 | 
							
													break;
							 | 
						|||
| 
								 | 
							
												default:
							 | 
						|||
| 
								 | 
							
													MENU_DefaultMsgLoop (menu,msg);
							 | 
						|||
| 
								 | 
							
													break;
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
											break;
							 | 
						|||
| 
								 | 
							
										case WIN_MSG_CHID:
							 | 
						|||
| 
								 | 
							
											switch (msg->data.v)
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												case CHID_DELETE:
							 | 
						|||
| 
								 | 
							
												break;
							 | 
						|||
| 
								 | 
							
												case CHID_USER:
							 | 
						|||
| 
								 | 
							
												{
							 | 
						|||
| 
								 | 
							
													if (msg->srcWin==menu->bar)
							 | 
						|||
| 
								 | 
							
													{
							 | 
						|||
| 
								 | 
							
														if (msg->data2.v==SCROLLBAR_PRESSED)
							 | 
						|||
| 
								 | 
							
														{
							 | 
						|||
| 
								 | 
							
															MENU_DoEnter(menu);
							 | 
						|||
| 
								 | 
							
														}
							 | 
						|||
| 
								 | 
							
													}
							 | 
						|||
| 
								 | 
							
													else
							 | 
						|||
| 
								 | 
							
													{
							 | 
						|||
| 
								 | 
							
														MENU_DefaultMsgLoop (menu,msg);
							 | 
						|||
| 
								 | 
							
													}
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
												break;
							 | 
						|||
| 
								 | 
							
												default:
							 | 
						|||
| 
								 | 
							
												break;
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
											break;
							 | 
						|||
| 
								 | 
							
										default:
							 | 
						|||
| 
								 | 
							
											MENU_DefaultMsgLoop (menu,msg);
							 | 
						|||
| 
								 | 
							
										break;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 读取一个值,返回0成功
							 | 
						|||
| 
								 | 
							
								static int recv_value(uint16_t *value)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    uint8_t v1=0;
							 | 
						|||
| 
								 | 
							
								    uint8_t v2=0;
							 | 
						|||
| 
								 | 
							
								    if(nrf_read_byte(&v1)==NRF_OK&&nrf_read_byte(&v2)==NRF_OK)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        *value=(v2<<8)|v1;
							 | 
						|||
| 
								 | 
							
								        return 0;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    else
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        nrf_clear();
							 | 
						|||
| 
								 | 
							
								        return -1;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								static int g_work=0;
							 | 
						|||
| 
								 | 
							
								static int cb_sound_fun(void *ptr)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    DAC_FifolInit();
							 | 
						|||
| 
								 | 
							
								    nrf_init();
							 | 
						|||
| 
								 | 
							
								    nrf_set_no_respond(1); 
							 | 
						|||
| 
								 | 
							
								    g_work=1;
							 | 
						|||
| 
								 | 
							
								    uint16_t value=0;
							 | 
						|||
| 
								 | 
							
								    DAC_SetSetValuwFun(recv_value);
							 | 
						|||
| 
								 | 
							
								    while(g_work)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								//        while(recv_value(&value)==0)
							 | 
						|||
| 
								 | 
							
								//        {
							 | 
						|||
| 
								 | 
							
								//            DAC_SaveValue(value);
							 | 
						|||
| 
								 | 
							
								//        }
							 | 
						|||
| 
								 | 
							
								        rt_thread_delay(5);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    DAC_FifoDeInit();
							 | 
						|||
| 
								 | 
							
								    nrf_deinit();
							 | 
						|||
| 
								 | 
							
								    return 0;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								static void cb_sound_bread(void *ptr)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    g_work=0;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								static void enter_sound(WIN_WindowStruct *base)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    int ret=WORKING_DoWorkPro(base,"正在接收音频",cb_sound_fun,0,
							 | 
						|||
| 
								 | 
							
								        cb_sound_bread,0,0,18);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 |