/*************************************************************************** * Copyright (c) 2003-2006, Broadcom Corporation * All Rights Reserved * Confidential Property of Broadcom Corporation * * THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE * AGREEMENT BETWEEN THE USER AND BROADCOM. YOU HAVE NO RIGHT TO USE OR * EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT. * * $brcm_Workfile: $ * $brcm_Revision: $ * $brcm_Date: $ * * Module Description: * * Revision History: * * $brcm_Log: $ * ***************************************************************************/ #ifndef BSCREEN_H__ #define BSCREEN_H__ #include "bapp_types.h" #include "bapp_str_table.h" #include "bir_codes.h" /* Screen defines */ #define APP_DEFAULT_YIELD (40) /* Milliseconds */ #define SCREEN_DEFAULT_TIMEOUT (10 * 60 * 1000) /* Milliseconds */ #define HIDE_BANNER_TIMEOUT (10 * 1000) /* Milliseconds */ #define BANNER_SMALL_TIMEOUT (5 * 1000) /* Milliseconds */ #define BANNER_10_KEY_TIMEOUT (2 * 1000) /* Milliseconds */ #define BANNER_VOLUME_TIMEOUT (2 * 1000) /* Milliseconds */ #define BANNER_SAP_TIMEOUT (2 * 1000) /* Milliseconds */ #define BANNER_CC_TIMEOUT (2 * 1000) /* Milliseconds */ #define SCREENSAVER_IMAGE_TIMEOUT (3 * 1000) /* Milliseconds */ #define VOLUME_INCREMENT (2) #define DEFAULT_VOLUME_LEVEL 100 /* Default to one repeat event every 3/4 second then accelerate */ #define DEFAULT_REPEAT_TIMEOUT ((3 * g_ticks_per_second) / 4) #define MAX_REPEAT_ACCEL 8 #define REPEAT_INC 4 #define KEY_UP 0x40000000 extern int g_gfx_height; extern int g_gfx_width; #define eHEIGHT g_gfx_height #define eWIDTH g_gfx_width #define eSCREEN_ACTION_SAFE_X (eWIDTH * eSCREEN_ACTION_SAFE_PERCENT / 100) #define eSCREEN_ACTION_SAFE_Y (eHEIGHT * eSCREEN_ACTION_SAFE_PERCENT / 100) #define eSCREEN_ACTION_SAFE_WIDTH (eWIDTH - (2 * eSCREEN_ACTION_SAFE_X)) #define eSCREEN_ACTION_SAFE_HEIGHT (eHEIGHT - (2 * eSCREEN_ACTION_SAFE_Y)) #define eBANNER_WIDTH (eWIDTH - eBANNER_X) #define eBANNER_TITLE_WIDTH (eBANNER_WIDTH - (eBANNER_TITLE_X - eBANNER_X)) #define eBANNER_TITLE_HEIGHT (eBANNER_HEIGHT - (eBANNER_TITLE_Y - eBANNER_Y)) #define eBANNER_CH_NUM_WIDTH (eBANNER_WIDTH - (eBANNER_CH_NUM_X - eBANNER_X)) #define eBANNER_CH_NUM_HEIGHT (eBANNER_HEIGHT - (eBANNER_CH_NUM_Y - eBANNER_Y)) #define eBANNER_STATUS_X (eWIDTH/2 - eBANNER_STATUS_WIDTH/2) #define eBANNER_STATUS_Y (eHEIGHT/2 - eBANNER_STATUS_HEIGHT/2) #define eBANNER_STATUS_TEXT_X (eBANNER_STATUS_X + 10) #define eBANNER_STATUS_TEXT_Y (eBANNER_STATUS_Y + 10) #define eBANNER_STATUS_TEXT_WIDTH (eBANNER_STATUS_WIDTH - 20) #define eBANNER_STATUS_TEXT_HEIGHT (eBANNER_STATUS_HEIGHT - 20) /* Layout enums */ typedef enum bscreen_layout_t { eSCREEN_ACTION_SAFE_PERCENT = 10, ePROGRESS_X = 130, ePROGRESS_Y = 220, ePROGRESS_WIDTH = 400, ePROGRESS_HEIGHT = 50, ePROGRESS_LABEL_SPACING = 6, ePROGRESS_VOLUME_X = 236, ePROGRESS_VOLUME_WIDTH = 260, ePROGRESS_VOLUME_HEIGHT = 25, eBUTTON_PROGRESS_BORDER = 4, eBUTTON_VOL_PROGRESS_BORDER = 2, eMENU_TEXT_DROPSHADOW = 2, eMENU_TITLE_DESC_TEXT_SPACING = 4, eBANNER_X = 492, eBANNER_Y = 370, eBANNER_HEIGHT = 66, eBANNER_TITLE_X = 508, eBANNER_TITLE_Y = 406, eBANNER_CH_NUM_X = 508, eBANNER_CH_NUM_Y = 380, eBANNER_STATUS_WIDTH = 340, eBANNER_STATUS_HEIGHT = 120, eBANNER_POPUP_SAP_X = 0, eBANNER_POPUP_SAP_Y = eBANNER_Y, eBANNER_POPUP_SAP_WIDTH = 146, eBANNER_POPUP_SAP_HEIGHT = eBANNER_HEIGHT, eBANNER_POPUP_SAP_TITLE_MARGIN = 12, eBANNER_POPUP_VOL_X = 236, eBANNER_POPUP_VOL_Y = eBANNER_Y, eBANNER_POPUP_VOL_WIDTH = 247, eBANNER_POPUP_VOL_HEIGHT = eBANNER_HEIGHT, eBANNER_POPUP_VOL_TITLE_X = 254, eBANNER_POPUP_VOL_TITLE_Y = eBANNER_Y + 6, eBANNER_POPUP_VOL_TICK_X = 254, eBANNER_POPUP_VOL_TICK_Y = eBANNER_POPUP_VOL_TITLE_Y + 26, eBANNER_POPUP_VOL_TICK_WIDTH = 3, eBANNER_POPUP_VOL_TICK_HEIGHT = 20, eBANNER_POPUP_VOL_BAR_WIDTH = eBANNER_POPUP_VOL_WIDTH - 40, eMENU_TEXT_SPACING = 8 }bscreen_layout_t; /* Font Size Enum */ typedef enum bapp_font_size_t { eFONT_SIZE_SMALL, eFONT_SIZE_MED, eFONT_SIZE_LARGE, eFONT_SIZE_MAX }bapp_font_size_t; /* Screen ID Enum */ typedef enum bapp_screen_id_t { eSCREEN_BANNER, eSCREEN_SCREENSAVER, eSCREEN_POWER_OFF, eSCREEN_DIAG_MENU, eSCREEN_SYS_INFO, eSCREEN_DTA_STATUS, eSCREEN_MSO_INFO, eSCREEN_TUNER_STATUS, eSCREEN_CH_STATUS, eSCREEN_CH_MAP_STATUS, eSCREEN_MSG_STATUS, eSCREEN_CODE_OBJECTS, eSCREEN_CODE_DOWNLOAD, eSCREEN_DECODER_STATUS, eSCREEN_STATUS, /* eSCREEN_HH,*/ eSCREEN_MAX }bapp_screen_id_t; /* Types of buttons and attibutes*/ typedef enum bbutton_type_t { eBUTTON_MENU = 0x1, eBUTTON_RADIO = 0x2, eBUTTON_CHECK = 0x4, eBUTTON_CHECK_LOCK = 0x8, eBUTTON_DESC_BOX = 0x10, eBUTTON_MAX }bbutton_type_t; /* Button info structure */ typedef struct bbutton_t { bbutton_type_t type; unsigned short x; unsigned short y; unsigned short width; unsigned short height; btext_id_t text_id; btext_id_t desc_text_id; bapp_screen_id_t next_screen_id; bapp_screen_id_t next_screen_back_id; unsigned short right_justify_text; unsigned int background_color; }bbutton_t; /* Types of events */ typedef enum bevent_type_t { eS_EVENT_IR, eS_EVENT_IDLE, eS_EVENT_SETUP, eS_EVENT_SETUP_DONE, eS_EVENT_SELECTED, eS_EVENT_CHECKED, eS_EVENT_PROGRESS, eS_EVENT_DONE, eS_EVENT_REDRAW, eS_EVENT_CANCEL, eS_EVENT_MAX }bevent_type_t; /* Screen event structure */ typedef struct bscreen_event_t { bevent_type_t type; unsigned int id; void *data; }bscreen_event_t; /* Screen data structure */ typedef struct bscreen_t { btext_id_t title_text_id; btext_id_t desc_text_id; btext_id_t help_text_id; uint16_t top_banner_height; unsigned char button_selection; unsigned char button_checked; unsigned char num_buttons; unsigned int idle_timeout; bapp_screen_id_t last_screen_id; bbutton_t * p_button_array; void (*draw)(void *p_app, void *p_screen); int (*handle_event)(void *p_app, void *p_screen, bscreen_event_t *p_event); unsigned int local_state; }bscreen_t; /* Summary: screen draw callback functions. */ void screen_null_draw(void *v_app, void *v_screen); /* Summary: screen event handler callback functions. */ int screen_picture_event(void *v_app, void *v_screen, bscreen_event_t *p_event); int screen_sound_event(void *v_app, void *v_screen, bscreen_event_t *p_event); int screen_antenna_event(void *v_app, void *v_screen, bscreen_event_t *p_event); int screen_language_event(void *v_app, void *v_screen, bscreen_event_t *p_event); int screen_setup_event(void *v_app, void *v_screen, bscreen_event_t *p_event); int screen_reset_event(void *v_app, void *v_screen, bscreen_event_t *p_event); int screen_auto_power_event(void *v_app, void *v_screen, bscreen_event_t *p_event); int screen_banner_event(void *v_app, void *v_screen, bscreen_event_t *p_event); int screen_screensaver_event(void *v_app, void *v_screen, bscreen_event_t *p_event); int screen_power_off_event(void *v_app, void *v_screen, bscreen_event_t *p_event); /* Summary: default screen callback functions. */ void bscreen_default_setup(void *v_app, void *v_screen); int bscreen_default_idle(void *v_app, void *v_screen); int bscreen_default_event(void *v_app, void *v_screen, bscreen_event_t *p_event); void bscreen_default_draw(void *v_app, void *v_screen); void bscreen_popup(void *v_app, void *v_screen); void bscreen_popup_draw(void *v_app, void *v_screen, btext_id_t title, btext_id_t desc); void bscreen_banner_draw(void *v_app, void *v_screen); void bscreen_screensaver_draw(void *v_app, void *v_screen); void bscreen_power_off_draw(void *v_app, void *v_screen); void bscreen_debug_draw(void *v_app, void *v_screen); int bscreen_debug_event(void *v_app, void *v_screen, bscreen_event_t *p_event); void bscreen_status_draw(void *v_app, void *v_screen); int bscreen_status_event(void *v_app, void *v_screen, bscreen_event_t *p_event); void bscreen_sys_info_draw(void *v_app, void *v_screen); int bscreen_sys_info_event(void *v_app, void *v_screen, bscreen_event_t *p_event); void bscreen_diag_menu_draw(void *v_app, void *v_screen); int bscreen_diag_menu_event(void *v_app, void *v_screen, bscreen_event_t *p_event); void bscreen_dta_status_draw(void *v_app, void *v_screen); int bscreen_dta_status_event(void *v_app, void *v_screen, bscreen_event_t *p_event); void bscreen_mso_info_draw(void *v_app, void *v_screen); int bscreen_mso_info_event(void *v_app, void *v_screen, bscreen_event_t *p_event); void bscreen_tuner_status_draw(void *v_app, void *v_screen); int bscreen_tuner_status_event(void *v_app, void *v_screen, bscreen_event_t *p_event); void bscreen_ch_status_draw(void *v_app, void *v_screen); int bscreen_ch_status_event(void *v_app, void *v_screen, bscreen_event_t *p_event); void bscreen_ch_map_status_draw(void *v_app, void *v_screen); int bscreen_ch_map_status_event(void *v_app, void *v_screen, bscreen_event_t *p_event); void bscreen_msg_status_draw(void *v_app, void *v_screen); int bscreen_msg_status_event(void *v_app, void *v_screen, bscreen_event_t *p_event); void bscreen_code_objects_draw(void *v_app, void *v_screen); int bscreen_code_objects_event(void *v_app, void *v_screen, bscreen_event_t *p_event); void bscreen_code_download_draw(void *v_app, void *v_screen); int bscreen_code_download_event(void *v_app, void *v_screen, bscreen_event_t *p_event); void bscreen_decoder_status_draw(void *v_app, void *v_screen); int bscreen_decoder_status_event(void *v_app, void *v_screen, bscreen_event_t *p_event); void bscreen_hh_draw(void *v_app, void *v_screen); int bscreen_hh_event(void *v_app, void *v_screen, bscreen_event_t *p_event); void bscreen_eas_text_scrolling_info_draw(void *v_app, void *v_screen); int bscreen_eas_text_scrolling_info_event(void *v_app, void *v_screen, bscreen_event_t *p_event); /* Banner state types */ typedef enum banner_mode_t { eLS_BANNER_OFF, eLS_BANNER_SMALL, eLS_BANNER_VOLUME, eLS_BANNER_SAP, eLS_BANNER_INFO, eLS_BANNER_EAS_TEXT_SCROLLING, eLS_BANNER_MAX }banner_mode_t; #define MAJOR_CH_CHARS 3 typedef struct banner_state_t { char majorCh[MAJOR_CH_CHARS+1]; unsigned char majorChIndex; unsigned char enter; banner_mode_t mode; bscreen_event_t event; unsigned int repeat_timeout; unsigned int repeat_rate; unsigned int timeout; unsigned int ten_key_timeout; char auto_power_one_min_warning; }banner_state_t; extern banner_state_t g_banner_state; /* Screensaver State */ typedef struct screensaver_state_t { unsigned int image_swap_timeout; }screensaver_state_t; extern screensaver_state_t g_screensaver_state; /* Summary: Use the this function to get a UNI string. */ void bscreen_get_string( bapp_lang_t e_lang, /* Language enum */ btext_id_t e_text_id, /* Text enum */ unsigned int *p_uni_str, /* Buffer to put UNI string into */ unsigned int *str_len /* The string length. */ ); /* Summary: Draw the buttons for the screen. Description: Draw the buttons for the screen. */ void bscreen_draw_buttons( void *v_app, /* Opaque app reference */ void *v_screen /* Opaque screen reference */ ); /* Summary: Draw a button for the screen. Description: Draw a button for the screen. */ void bscreen_draw_button(void *v_app, /* application structure */ const bbutton_t *p_button, /* button info structure */ int selected, /* Button selected when non-zero */ int checked, /* Button checked when non-zero */ int idx /* button index or -1 for non index button */ ); /* Summary: Draw a progress meter for the screen. Description: Draw a progress meter for the screen. */ void bscreen_draw_progress(void * v_app, /* Opague app reference */ unsigned int x, /* x coord for progress meter */ unsigned int y, /* y coord for progress meter */ unsigned int width, /* width of progress meter */ unsigned int height, /* height of progress meter */ unsigned int border_width, /* width of meter border */ unsigned int border_color, /* color of meter border */ unsigned int background_color, /* background color behind thumb */ unsigned int percent); /* percentage thumb size (0-100) */ /* Summary: Draw signal level meter in banner Description: Draw signal level meter in banner */ void bscreen_draw_banner_signal_level(void * v_app, /* Opaque app reference */ unsigned int signal); /* signal level */ #endif /* BSCREEN_H__ */