#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); }