85 lines
2.7 KiB
C
85 lines
2.7 KiB
C
#include "includes.h"
|
||
|
||
extern const Touch_AreaTypeDef *pCurrentTouch_Area;
|
||
|
||
const Touch_AreaTypeDef Touch_UsbConfirm_Areas[] =
|
||
{
|
||
{ 0, 44, 0, 40, 0, 0, GUI_CANCEL, NULL },
|
||
{ UI0902_USB_BTN_XL, (uint16_t)(UI0902_USB_BTN_XL + UI0902_USB_BTN_W - 1),
|
||
UI0902_USB_BTN_Y, (uint16_t)(UI0902_USB_BTN_Y + UI0902_USB_BTN_H - 1),
|
||
0, 0, GUI_CANCEL, NULL },
|
||
{ UI0902_USB_BTN_XR, (uint16_t)(UI0902_USB_BTN_XR + UI0902_USB_BTN_W - 1),
|
||
UI0902_USB_BTN_Y, (uint16_t)(UI0902_USB_BTN_Y + UI0902_USB_BTN_H - 1),
|
||
0, 0, GUI_CONFIRM, NULL },
|
||
};
|
||
|
||
#define TOUCH_AREA_USB_CONFIRM_NUM (sizeof(Touch_UsbConfirm_Areas)/sizeof(Touch_AreaTypeDef))
|
||
|
||
static void UI_UsbConfirm_RevertToMidi(void)
|
||
{
|
||
NvmParam_Type *nvm = drv_nvm_param_ptr();
|
||
mGuiData_SystemSETTING[GUI_USB_MODE].Current = NVM_USB_MIDI;
|
||
nvm->param.UsbMode = NVM_USB_MIDI;
|
||
drv_nvm_save_to_flash();
|
||
MenuPage_Setting_Proc();
|
||
}
|
||
|
||
void UI_UsbModeConfirm_Init(void)
|
||
{
|
||
UI_ClearFocus();
|
||
LCD_WR_PIC_FROM_FLASH(0, 0, UI0902_TXT_USB_CONFIRM_W, UI0902_TXT_USB_CONFIRM_H,
|
||
UI0902_TXT_USB_CONFIRM_ADDR);
|
||
UI_DrawSubPageHeader((const uint8_t *)"\xCF\xB5\xCD\xB3\xC9\xE8\xD6\xC3");
|
||
LCD_WR_PIC_FROM_FLASH(UI0902_USB_BTN_XL, UI0902_USB_BTN_Y,
|
||
UI0902_BTN_USB_CANCEL_DARK_W, UI0902_BTN_USB_CANCEL_DARK_H,
|
||
UI0902_BTN_USB_CANCEL_DARK_ADDR);
|
||
LCD_WR_PIC_FROM_FLASH(UI0902_USB_BTN_XR, UI0902_USB_BTN_Y,
|
||
UI0902_BTN_USB_CONFIRM_BLUE_W, UI0902_BTN_USB_CONFIRM_BLUE_H,
|
||
UI0902_BTN_USB_CONFIRM_BLUE_ADDR);
|
||
pCurrentTouch_Area = Touch_UsbConfirm_Areas;
|
||
}
|
||
|
||
void UI_UsbModeConfirm_Process(DisplayTaskMessage_Type msg)
|
||
{
|
||
uint8_t k;
|
||
NvmParam_Type *nvm;
|
||
|
||
switch (msg.MessageType)
|
||
{
|
||
case MSG_ID_TOUCH:
|
||
for (k = 0; k < TOUCH_AREA_USB_CONFIRM_NUM; k++)
|
||
{
|
||
if (msg.HiByte >= pCurrentTouch_Area[k].x_min &&
|
||
msg.HiByte <= pCurrentTouch_Area[k].x_max &&
|
||
msg.LoByte >= pCurrentTouch_Area[k].y_min &&
|
||
msg.LoByte <= pCurrentTouch_Area[k].y_max)
|
||
{
|
||
switch (pCurrentTouch_Area[k].ID)
|
||
{
|
||
case GUI_CANCEL:
|
||
UI_UsbConfirm_RevertToMidi();
|
||
break;
|
||
case GUI_CONFIRM:
|
||
nvm = drv_nvm_param_ptr();
|
||
nvm->param.UsbMode = NVM_USB_UPDATE;
|
||
/* 先记备份寄存器,再写 Flash。系统复位不清 BPR,
|
||
* Boot 不按圆键 4 也会留下烧录。关中断放在保存之后,
|
||
* 避免日志互斥在关中断后永远等不到超时。 */
|
||
drv_nvm_arm_usb_boot();
|
||
drv_nvm_save_to_flash();
|
||
__disable_irq();
|
||
nvic_system_reset();
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
ResetAutoPowerCount();
|
||
break;
|
||
}
|
||
}
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}
|