#ifndef __GLOBAL_H__ #define __GLOBAL_H__ #define MSG_ID_POWER_ON 0 #define MSG_ID_POWER_OFF 1 #define MSG_TYPE_MN_TASK 2 #define MSG_TYPE_UI_TASK 3 #define MSG_TYPE_BL_TASK 4 #define MSG_ID_TM1629_KEY 10 #define MSG_ID_TM1617_KEY 11 #define MSG_ID_TOUCH 12 #define MSG_ID_TOUCH_LONG_REPEAT 13 #define MSG_ID_BP_KEY 14 #define MSG_ID_ADCIN1KEY 15 #define MSG_ID_HP_SPK_IN 16 #define MSG_ID_EC_VOL 17 #define MSG_ID_BATTERY_VALUE 18 #define MSG_ID_POWOFF_CHARG 19 #define MSG_ID_LIGHT_LED 20 #define MSG_ID_PITCH_OFFSET 21 #define MSG_ID_KEY_1617 22 #define MSG_ID_CHORD_OFFSET 23 #define MSG_ID_BP_TRANSPOSE 24 #define MSG_ID_TAP_SPEED 25 #define MSG_ID_LOOP_LIGHT 26 #define MSG_ID_CHARG 27 #define GPIO_PIN_RESET false #define GPIO_PIN_SET true #define HAL_GPIO_ReadPin(gpio_x, pins) gpio_output_data_bit_read(gpio_x, pins) #define HAL_GPIO_WritePin(gpio_x, pins, flag) gpio_bits_write(gpio_x,pins,flag) #define GPIO_InitStruct gpio_init_struct typedef struct { uint16_t MessageType; uint16_t ID; // Key ID / Encorder ID uint16_t HiByte; uint16_t LoByte; }DisplayTaskMessage_Type; typedef struct { uint8_t x; uint8_t w; // Сд w uint8_t y; uint8_t h; const unsigned char *p; uint8_t Tab_Align; // ��д A uint16_t Tab_fc; // ��ɫ���� 16λ�� uint16_t Tab_bc; uint8_t Tab_size; uint8_t Text_Align; uint16_t Text_fc; uint16_t Text_bc; uint8_t Text_size; uint8_t Id; } LEBEL_UI; typedef struct { uint16_t Current; uint16_t Min; uint16_t Max; uint16_t Id; }GUI_SWITCH; // �������ṹ�� typedef struct { uint16_t x_min; // X��С uint16_t x_max; // X��� uint16_t y_min; // Y��С uint16_t y_max; // Y��� int8_t Flag; //-1-�� 1-�� uint8_t Value; uint8_t ID; void (*action)(uint8_t,const LEBEL_UI *,GUI_SWITCH *); // ������ִ�еĺ��� } Touch_AreaTypeDef; // ���ӿؼ��ṹ�壨��ȫ�����ͼ��240x320���� typedef struct { uint16_t x; // ���Ӳ����Ͻ�X uint16_t y; // ���Ӳ����Ͻ�Y uint16_t w; // ���Ӳۿ��� uint16_t h; // ���Ӳ��ܸ߶� uint8_t val; // ��ǰֵ 0~10��0=���£�10=���ϣ� uint8_t id; // ��� 0~3 uint16_t prev_slider_y; // �ϴλ���Y���꣬��������ˢ�� char name[8]; // ���ӱ��⣨MIX/STR/MIC/REV�� } Fader_t; typedef enum { GUI_TRANSPOSE = 0, GUI_SPEED, GUI_MODE_PARAM, GUI_TIMBRE_SELECT, GUI_PLAY_SECTION=4, GUI_TAB_INDEX, GUI_AUTOBAND_SW, GUI_BL_SW, GUI_TAB_LAST_INDEX, GUI_NAV_BAR, /* 0902 底栏:Value 0万能 1普通 2专业 3设置 */ }GUIID; typedef enum { SONG_MODE_PARAM = 0, EXPRESS_MODE_PARAM = 1, ALL_MODE_PARAM = 2, }PARAM_ID; // TAB �������� typedef enum { TAB_A = 0, // ���� TAB_B = 1, // ���� TAB_C = 2, // ���� TAB_D = 3, // ���� } TAB_SECTION_INDEX; typedef enum { GUI_VERSION = 0, GUI_BLUETOOTH_SW = 1, GUI_AUTOCLOSE = 2, GUI_RESTORE = 3, GUI_CANCEL, GUI_CONFIRM, }GUI_SYSTEMSETTING_ID; // ��ɫ���壨�ͽ�ͼ��ȫһ�£� #define FADER_BG 0x001F // ���Ӳ۱��������� #define FADER_GREEN 0x07E0 // ��ɫ�� #define FADER_YELLOW 0xFFE0 // ��ɫ�� #define FADER_RED 0xF800 // ��ɫ�� #define FADER_SLIDER 0x039F // ������ɫ #define FADER_TEXT 0xFFFF // ���ְ�ɫ extern rt_mutex_t TM1629_Mutex; extern rt_mutex_t TM1617_Mutex; extern rt_mq_t MainTask_msg; extern rt_mq_t UITask_msg; extern rt_mq_t BLTask_msg; extern rt_sem_t UART4_sem; extern rt_timer_t OutTime_Stop_timer; extern uint8_t KEY_ID_1629; extern bool powon; void Power_Key_Scan(void); void AutoPowerOff_Scan(void); void System_PowerOn(void); extern uint8_t Led; extern bool PressFlag; extern volatile uint32_t ADDRESS; extern uint8_t key_toggle[4]; extern bool StartFlag; extern int16_t MIC_VOL_MAP[11]; extern const uint8_t Version[3]; extern uint8_t AutoCloseTime; extern uint16_t mAutoPowerOffCount; extern bool AutoCloseFlag; extern const Touch_AreaTypeDef *pCurrentTouch_Area; extern const Touch_AreaTypeDef Touch_Areas[]; extern uint8_t TOUCH_AREA_NUM; // 4�����ӣ����ࡢ���֡���˷硢���죩 extern Fader_t faders[4]; extern GUI_SWITCH mGuiData[]; extern const LEBEL_UI UI_Label[]; extern GUI_SWITCH ParamGuiData[]; extern void (*CurrUIProcress)(DisplayTaskMessage_Type xEvent); void Stop_AutoBand(); static void ShowPowerOn(); void GET_ParamNum_Str(int16_t NUM, uint8_t ValidLen, char* Str, uint8_t hasSign); void MainTask_Sendmsg(uint16_t ID, uint16_t ID2, uint16_t HiByte, uint16_t LoByte); void UITask_Sendmsg(uint16_t ID, uint16_t ID2, uint16_t HiByte, uint16_t LoByte); void BLTask_Sendmsg(uint16_t ID, uint16_t ID2, uint16_t HiByte, uint16_t LoByte); void ResetAutoPowerCount(void); uint8_t GUI_Item_AjustValue(GUI_SWITCH * Group, int8_t Dir); void GUI_Item_AjustLoopValue(GUI_SWITCH * Group, int8_t Dir); void Send_volume(uint8_t vol); void ADC_IN1_KEY_Handle(uint8_t key,bool on); void TM1617_Handle(uint8_t key); void TM1629_Handle(uint8_t key); void Pick_Handle(); void Loop_Light_Handle(uint8_t measure); void BL_Set_led(uint8_t Led, uint8_t chord_type); uint8_t GetChordNotesByType(uint8_t MIDI_Index,uint8_t type,uint8_t *buff); /* 伴奏已在播时仅更新和弦音,不 Restart(快转调) */ void Accomp_UpdatePlayingChord(void); void BT_Chord_offset_map(uint8_t pos_offset,uint8_t chord_offset); void BT_Pitch_offset_map(uint8_t pos_offset,uint8_t pitch_offset); void Read_Cur_Measure(); #endif