#include "app_encoder.h" #include "key_encoder_driver.h" #include "key_app.h" #include "Com_Cfg.h" #include "can_app.h" #define APP_ENCODER_TASK_PERIOD_TIME 10u #define APP_ENCODER_DELAY_TIME_300MS (300u / APP_ENCODER_TASK_PERIOD_TIME) struct tag_app_encoder { uint8_t delay; }; static struct tag_app_encoder app_encoder; void app_encoder_init(void) { app_encoder.delay = 0; } void app_encoder_delay_set(void) { app_encoder.delay = APP_ENCODER_DELAY_TIME_300MS; } void app_encoder_task(void) { uint8_t encoder_event; uint8_t key_state[NUM_OF_MULTI_MEDIA_KEY]; uint8_t i; uint8_t any_other_key_valid; uint8_t output; encoder_event = key_encoder_get_event(); if(encoder_event == KEY_ENCODER_EVENT_UP) { key_state[KEY_APP_MULTI_MEDIA_VOL_PLUS_ID] = 1u; key_state[KEY_APP_MULTI_MEDIA_VOL_SUB_ID] = 0u; } else if(encoder_event == KEY_ENCODER_EVENT_DOWN) { key_state[KEY_APP_MULTI_MEDIA_VOL_PLUS_ID] = 0u; key_state[KEY_APP_MULTI_MEDIA_VOL_SUB_ID] = 1u; } else { key_state[KEY_APP_MULTI_MEDIA_VOL_PLUS_ID] = 0u; key_state[KEY_APP_MULTI_MEDIA_VOL_SUB_ID] = 0u; } key_state[KEY_MAPP_MULTI_MEDIA_VOL_VEDIO_ID] = key_adc_mid_get_result(KEY_ADC_ID_VEDIO); key_state[KEY_APP_MULTI_MEDIA_VOL_LMENU_ID] = key_adc_mid_get_result(KEY_ADC_ID_LMENU); key_state[KEY_APP_MULTI_MEDIA_CUSTOM_ID] = key_adc_mid_get_result(KEY_ADC_ID_CUSTOM); for(i = KEY_MAPP_MULTI_MEDIA_VOL_VEDIO_ID; i <= KEY_APP_MULTI_MEDIA_CUSTOM_ID; i ++) { if((key_state[i] == KEY_ADC_RESULT_UNKNOW) || (key_state[i] == KEY_ADC_RESULT_IDLE) || (key_state[i] == KEY_ADC_RESULT_FAULT)) { key_state[i] = 0u; } else { key_state[i] = 1u; } } key_state[KEY_APP_MULTI_MEDIA_PREV_ID] = key_digital_driver_get_state(KEY_DIGI_ID_PREV); key_state[KEY_APP_MULTI_MEDIA_NEXT_ID] = key_digital_driver_get_state(KEY_DIGI_ID_NEXT); key_state[KEY_APP_MULTI_MEDIA_VOL_VOICE_ID] = key_digital_driver_get_state(KEY_DIGI_ID_VOICE); key_state[KEY_APP_MULTI_MEDIA_VOL_CALL_ID] = key_digital_driver_get_state(KEY_DIGI_ID_PHONE); key_state[KEY_APP_MULTI_MEDIA_VOL_RMENU_ID] = key_digital_driver_get_state(KEY_DIGI_ID_RMENU); key_state[KEY_APP_MULTI_MEDIA_VOL_MUTE_ID] = key_digital_driver_get_state(KEY_DIGI_ID_MUTE); for(i = KEY_APP_MULTI_MEDIA_PREV_ID; i <=KEY_APP_MULTI_MEDIA_VOL_MUTE_ID; i ++) { if(key_state[i] == KEY_DIGITAL_DRIVER_STATE_UP) { key_state[i] = 0u; } else { key_state[i] = 1u; } } any_other_key_valid = 0; for(i = KEY_MAPP_MULTI_MEDIA_VOL_VEDIO_ID; i <= KEY_APP_MULTI_MEDIA_VOL_MUTE_ID; i ++) { if(key_state[i]) { any_other_key_valid = 1u; break; } } if(app_encoder.delay) { app_encoder.delay --; } else { if(any_other_key_valid == 0u) { if(key_state[KEY_APP_MULTI_MEDIA_VOL_PLUS_ID]) { /* 音量 + */ output = 0x01u; app_sig_sws_r_multimedia_tx_process(output, 1, 1); } else if(key_state[KEY_APP_MULTI_MEDIA_VOL_SUB_ID]) { /* 音量 - */ output = 0x04u; app_sig_sws_r_multimedia_tx_process(output, 1, 1); } else { } } } }