181 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include "mywin_user_set.h"
 | 
						||
#include "dac.h"
 | 
						||
#include "flash_manager.h"
 | 
						||
#include "mywin_inc.h"
 | 
						||
#include "mywin_user_backlightset.h"
 | 
						||
#include "mywin_user_bluetooth.h"
 | 
						||
#include "mywin_user_debug.h"
 | 
						||
#include "mywin_user_filder.h"
 | 
						||
#include "mywin_user_light.h"
 | 
						||
#include "mywin_user_menu.h"
 | 
						||
#include "mywin_user_sysfile.h"
 | 
						||
#include "mywin_user_theme.h"
 | 
						||
#include "mywin_user_time.h"
 | 
						||
#include "mywin_user_timeset.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  	(*(uint32_t *)(0x08020000+4*7))
 | 
						||
//  #define APP_APPNAME 	(*(char **)(0x08020000+4*8))
 | 
						||
//  #define APP_SIZE			(*(uint32_t *)(0x08020000+4*9))
 | 
						||
#define APP_SOURCE (*(uint32_t *)(0x08000000 + 4 * 7))
 | 
						||
#define APP_APPNAME (*(char **)(0x08000000 + 4 * 8))
 | 
						||
#define APP_SIZE (*(uint32_t *)(0x08000000 + 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);
 | 
						||
}
 |