/*************************************************************************** * 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 BAPP_H__ #define BAPP_H__ #include "bsettop.h" #include "bscreen.h" #include "bapp_util.h" #include "bsettop_stream.h" #include "chan_mgr.h" #ifdef CONFIG_EIA_708 #include "bapp_eia708.h" #else #define bapp_eia708_enabled(x) false #endif #define SCREEN_MAX_STR_WIDTH 1024 #define MAX_MSG_EVENT 4 #define MAX_TIME_STR 32 #define MAX_RATING_STR 128 #define MAX_RRT_VAL 16 #define TUNE_DURATION (3 * 1000) /* Milliseconds */ /* * Application states */ typedef enum bapp_state_t { eAPP_DEFAULT, eAPP_CH_SCAN }bapp_state_t; /* * Color palettes */ typedef enum bapp_palette_t { ePALETTE_DEFAULT, ePALETTE_SCREENSAVER, ePALETTE_EIA_708 }bapp_palette_t; /* * Antenna Types */ typedef enum bapp_antenna_t { eBASIC_ANTENNA, eSMART_ANTENNA }bapp_antenna_t; /* * Channel Scan Types */ typedef enum bapp_ch_scan_t { eFULL_SCAN, eQUICK_SCAN, eFULL_RESCAN, eQUICK_RESCAN }bapp_ch_scan_t; /* * RRT status */ typedef enum bapp_rrt_status_t { eRRT_UNAVAILABLE = 0x0, eRRT_AVAILABLE = 0x1, }bapp_rrt_status_t; #define DTA_TEST /* * Structure defining a unit of data storage */ typedef struct bapp_ch_t { unsigned int major : 10; unsigned int minor : 10; unsigned int freq_idx : 8; unsigned int psi : 1; unsigned int pcr_pid : 13; unsigned int video_pid : 13; unsigned int has_lang : 3; unsigned int hidden : 1; unsigned short audio_pid[3]; unsigned short ch_name[MAX_CH_NAME_CHARS]; unsigned char cmd; #ifdef DTA_TEST unsigned short program_number; #endif }bapp_ch_t; /* * Structure defining blocked setting for an RRT dim/value pair. */ typedef enum bapp_rrt_rating_state_t { eRRT_UNBLOCK = 0x0, eRRT_BLOCK = 0x1 }bapp_rrt_rating_state_t; /* * State data structure, because this structure is saved to NVM * options should be combined to make best use of storage space */ typedef struct bapp_settings_t { unsigned int sound : 2; unsigned int picture : 1; unsigned int language : 2; unsigned int auto_power : 2; unsigned int wiz_completed : 1; unsigned int ratings_lock : 2; unsigned int ratings_tv : 18; unsigned int ratings_movies : 7; unsigned int content_d : 1; unsigned int content_l : 1; unsigned int content_s : 1; unsigned int content_v : 1; unsigned int captions_basic : 4; unsigned int captions_font : 3; unsigned int captions_font_size : 2; unsigned int captions_font_style : 2; unsigned int captions_font_color : 4; unsigned int captions_font_opacity : 3; unsigned int captions_back_color : 4; unsigned int captions_back_opacity : 3; unsigned int captions_edge_color : 4; unsigned int captions_edge_type : 3; unsigned int auto_power_off : 1; unsigned int rrt_status : 2; unsigned int time_zone : 4; unsigned int dst : 1; unsigned int cur_ch_num : 8; unsigned int audio_vol : 7; unsigned int last_rrt_id : 16; unsigned int pin : 32; unsigned char num_channels; unsigned short ratings_rrt[MAX_RRT_DIM]; unsigned char rrt[RRT_BUF_LEN]; bapp_ch_t ch[MAX_CHANNELS]; }bapp_settings_t; /* * Main data structure containing references to all interfaces * required throughout the application. */ typedef struct bapp_t { int done; unsigned int yield_ms; unsigned char* osd_mem; unsigned int osd_mem_size; bapp_settings_t settings; bool settings_dirty; bool factory_test; bool button_numbers; bool ui_debug_mode; bgfx_palette_t palette; uint16_t width; uint16_t height; bgfx_surf_t surf; bdisplay_t display; bgraphics_t graphics; bdecode_window_t window; bdecode_t decode; baudio_decode_t audio; btuner_t tuner; bmessage_stream_t msg; btuner_ds_params ds; bstream_mpeg mpeg; bstream_t stream; bband_t band; buser_input_t user_io; bin_read_t br; bscreen_t *p_screens; int current_sap; int num_sap; int num_screens; unsigned int last_keypress_tick; bapp_screen_id_t screen_id; bapp_lang_t lang; unsigned char captions_basic; unsigned int tmp_str[SCREEN_MAX_STR_WIDTH]; unsigned int tmp_value; bgfx_font_t *p_font[eLANG_MAX][eFONT_SIZE_MAX]; unsigned char cur_ch_num; unsigned char last_ch_num; char last_rating_block_status; char last_psip_rating_block_status; unsigned char ratings_override; bool ratings_override_set; bapp_task_queue_t msg_queue; bapp_task_event_t msg_event[MAX_MSG_EVENT]; bmessage_stream_params msg_params; bool is_muted; unsigned char audio_vol; unsigned char audio_mute; unsigned char power; unsigned char decoding; unsigned int last_tune_tick; chm_mgr_t chm; chm_info_t tmp_info; unsigned char prog_time_str[MAX_TIME_STR]; unsigned char prog_rating_str[MAX_RATING_STR]; unsigned char psip_rating_str[MAX_RATING_STR]; unsigned int last_rating_tick; unsigned int last_cad; unsigned int last_xds; unsigned char ratings_region; unsigned char ratings_dim; unsigned char ratings_val; unsigned char tv_rating; unsigned char movie_rating; bapp_ch_scan_t ch_scan_type; fstore_t flash_storage; unsigned int poweron_ms; bool check_poweron; #ifdef CONFIG_EIA_708 bapp_eia708_t eia708; #endif smessage_stream_t smsg; bool lock; int signal_level; btuner_qam_mode qam_b_mode; unsigned int snr; unsigned int tuned_freq; }bapp_t; extern const unsigned short s_ch_to_freq[]; int bin_read( void *buffer, int size, int count, void *fp ); void bapp_init(bapp_t *p_app); void bapp_run(bapp_t *p_app); void bapp_idle(bapp_t *p_app); void bapp_sync(bapp_t *p_app); void bapp_handle_event(bapp_t *p_app, bscreen_event_t *p_event); void bapp_flush_screen(bapp_t *p_app); void bapp_clear_screen_selection_history(bapp_t *p_app); void bapp_set_current_screen(bapp_t *p_app, bapp_screen_id_t id, bapp_screen_id_t save_last); void bapp_goto_last_screen(bapp_t *p_app); int bapp_change_channel(bapp_t *p_app, int ch_up, int tune); int bapp_tune(bapp_t *p_app); int bapp_stop_decode(bapp_t *p_app); int bapp_restart_decode(bapp_t *p_app); int bapp_set_channel(bapp_t *p_app, int major, int minor); int bapp_channel_hunt(bapp_t *p_app); void bapp_enable_cc(bapp_t *p_app, int enable); void bapp_apply_settings(bapp_t *p_app); void bapp_reset_settings(bapp_t *p_app); void bapp_reset_cc_settings(bapp_t *p_app); void bapp_load_settings(bapp_t *p_app); void bapp_save_settings(bapp_t *p_app); void bapp_new_screen(bapp_t *p_app); void bapp_av_mute(bapp_t *p_app, int mute); void bapp_audio_mute(bapp_t *p_app, int mute); void bapp_set_audio_volume(bapp_t *p_app, uint8_t level); void bapp_set_palette(bapp_t *p_app, bapp_palette_t palette); bool bapp_get_signal_status(bapp_t *p_app); int bapp_handle_blocking(bapp_t *p_app); void bapp_power(bapp_t *p_app, bool power); void bapp_set_captions_options(bapp_t *p_app); int bapp_rotate_audio_sap(bapp_t *p_app); void bapp_do_poweroff(bapp_t *p_app); int bapp_channel_scan(bapp_t *p_app); #endif /* BAPP_H__ */