From eda9ad6a6abbf7918e65e47837c46999e5f27b61 Mon Sep 17 00:00:00 2001 From: Kieth Liu Date: Mon, 15 Feb 2016 04:41:35 +0000 Subject: format code style Change-Id: I771b292f3a33fb29d9e1ed289233c1cabe0a632b --- diff --git a/tv_callback.h b/tv_callback.h index f753c6f..50e7ab8 100644 --- a/tv_callback.h +++ b/tv_callback.h @@ -3,12 +3,15 @@ #include "tvapi/android/tv/TvPlay.h" class TvCallback : public TvPlayObserver { public: - TvCallback(void* data){ mPri = data; } + TvCallback(void *data) + { + mPri = data; + } ~TvCallback() {} void onTvEvent (int32_t msgType, const Parcel &p); private: - void* mPri; + void *mPri; }; #endif diff --git a/tv_input.cpp b/tv_input.cpp index 277349b..0fa778c 100644 --- a/tv_input.cpp +++ b/tv_input.cpp @@ -170,44 +170,42 @@ void TvCallback::onTvEvent (int32_t msgType, const Parcel &p) { tv_input_private_t *priv = (tv_input_private_t *)(mPri); switch (msgType) { - case SOURCE_CONNECT_CALLBACK: { - int source = p.readInt32(); - int connectState = p.readInt32(); - LOGD("TvCallback::onTvEvent source = %d, status = %d", source, connectState) - - switch (source) { - case SOURCE_HDMI1: - case SOURCE_HDMI2: - case SOURCE_HDMI3: { - if (connectState == 1) { - notify_HDMI_device_available(priv, (tv_source_input_t)source, 1, TV_INPUT_EVENT_DEVICE_AVAILABLE); - notify_HDMI_stream_configurations_change(priv, (tv_source_input_t)source, 1); - } - else { - notify_HDMI_device_available(priv, (tv_source_input_t)source, 1, TV_INPUT_EVENT_DEVICE_UNAVAILABLE); - } - } - break; - - case SOURCE_AV1: - case SOURCE_AV2: { - if (connectState == 1) { - notify_AV_device_available(priv, (tv_source_input_t)source, TV_INPUT_EVENT_DEVICE_AVAILABLE); - notify_AV_stream_configurations_change(priv, (tv_source_input_t)source); - } - else { - notify_AV_device_available(priv, (tv_source_input_t)source, TV_INPUT_EVENT_DEVICE_UNAVAILABLE); - } - } - break; - - default: - break; + case SOURCE_CONNECT_CALLBACK: { + int source = p.readInt32(); + int connectState = p.readInt32(); + LOGD("TvCallback::onTvEvent source = %d, status = %d", source, connectState) + + switch (source) { + case SOURCE_HDMI1: + case SOURCE_HDMI2: + case SOURCE_HDMI3: { + if (connectState == 1) { + notify_HDMI_device_available(priv, (tv_source_input_t)source, 1, TV_INPUT_EVENT_DEVICE_AVAILABLE); + notify_HDMI_stream_configurations_change(priv, (tv_source_input_t)source, 1); + } else { + notify_HDMI_device_available(priv, (tv_source_input_t)source, 1, TV_INPUT_EVENT_DEVICE_UNAVAILABLE); + } + } + break; + + case SOURCE_AV1: + case SOURCE_AV2: { + if (connectState == 1) { + notify_AV_device_available(priv, (tv_source_input_t)source, TV_INPUT_EVENT_DEVICE_AVAILABLE); + notify_AV_stream_configurations_change(priv, (tv_source_input_t)source); + } else { + notify_AV_device_available(priv, (tv_source_input_t)source, TV_INPUT_EVENT_DEVICE_UNAVAILABLE); } } break; default: + break; + } + } + break; + + default: break; } } @@ -291,7 +289,7 @@ static int get_stream_configs(int dev_id, int *num_configurations, const tv_stre *num_configurations = 2; *configs = mconfig; break; - default: + default: break; } return 0; @@ -318,7 +316,7 @@ static int get_tv_stream(tv_stream_t *stream) } static int tv_input_device_open(const struct hw_module_t *module, - const char *name, struct hw_device_t **device); + const char *name, struct hw_device_t **device); static struct hw_module_methods_t tv_input_module_methods = { open: @@ -326,20 +324,26 @@ open: }; tv_input_module_t HAL_MODULE_INFO_SYM = { - common: { - tag: HARDWARE_MODULE_TAG, +common: + { +tag: + HARDWARE_MODULE_TAG, version_major: 0, version_minor: 1, - id: TV_INPUT_HARDWARE_MODULE_ID, - name: "TVInput module", - author: "Amlogic", - methods: &tv_input_module_methods, +id: + TV_INPUT_HARDWARE_MODULE_ID, +name: "TVInput module" + , +author: "Amlogic" + , +methods: + &tv_input_module_methods, } }; /*****************************************************************************/ static int tv_input_initialize(struct tv_input_device *dev, - const tv_input_callback_ops_t *callback, void *data) + const tv_input_callback_ops_t *callback, void *data) { if (dev == NULL || callback == NULL) { return -EINVAL; @@ -425,7 +429,7 @@ static int tv_input_get_stream_configurations(const struct tv_input_device *dev, } static int tv_input_open_stream(struct tv_input_device *dev, int device_id, - tv_stream_t *stream) + tv_stream_t *stream) { tv_input_private_t *priv = (tv_input_private_t *)dev; if (priv) { @@ -443,7 +447,7 @@ static int tv_input_open_stream(struct tv_input_device *dev, int device_id, } static int tv_input_close_stream(struct tv_input_device *dev, int device_id, - int stream_id) + int stream_id) { tv_input_private_t *priv = (tv_input_private_t *)dev; if (stream_id == NORMAL_STREAM_ID) { @@ -483,7 +487,7 @@ static int tv_input_device_close(struct hw_device_t *dev) /*****************************************************************************/ static int tv_input_device_open(const struct hw_module_t *module, - const char *name, struct hw_device_t **device) + const char *name, struct hw_device_t **device) { int status = -EINVAL; if (!strcmp(name, TV_INPUT_DEFAULT_DEVICE)) { @@ -501,7 +505,7 @@ static int tv_input_device_open(const struct hw_module_t *module, dev->device.initialize = tv_input_initialize; dev->device.get_stream_configurations = - tv_input_get_stream_configurations; + tv_input_get_stream_configurations; dev->device.open_stream = tv_input_open_stream; dev->device.close_stream = tv_input_close_stream; dev->device.request_capture = tv_input_request_capture; diff --git a/tvapi/android/include/ITv.h b/tvapi/android/include/ITv.h index 1130511..064e4e9 100644 --- a/tvapi/android/include/ITv.h +++ b/tvapi/android/include/ITv.h @@ -14,25 +14,25 @@ class ITvClient; class ITv: public IInterface { public: - DECLARE_META_INTERFACE(Tv); + DECLARE_META_INTERFACE(Tv); - virtual void disconnect() = 0; + virtual void disconnect() = 0; - // connect new client with existing tv remote - virtual status_t connect(const sp &client) = 0; + // connect new client with existing tv remote + virtual status_t connect(const sp &client) = 0; - // prevent other processes from using this ITv interface - virtual status_t lock() = 0; + // prevent other processes from using this ITv interface + virtual status_t lock() = 0; - // allow other processes to use this ITv interface - virtual status_t unlock() = 0; + // allow other processes to use this ITv interface + virtual status_t unlock() = 0; - virtual status_t processCmd(const Parcel &p, Parcel *r) = 0; + virtual status_t processCmd(const Parcel &p, Parcel *r) = 0; - //share mem for subtitle bmp - virtual status_t createSubtitle(const sp &share_mem) = 0; - //share mem for video/hdmi bmp - virtual status_t createVideoFrame(const sp &share_mem, int iSourceMode, int iCapVideoLayerOnly) = 0; + //share mem for subtitle bmp + virtual status_t createSubtitle(const sp &share_mem) = 0; + //share mem for video/hdmi bmp + virtual status_t createVideoFrame(const sp &share_mem, int iSourceMode, int iCapVideoLayerOnly) = 0; }; @@ -40,10 +40,10 @@ public: class BnTv: public BnInterface { public: - virtual status_t onTransact( uint32_t code, - const Parcel &data, - Parcel *reply, - uint32_t flags = 0); + virtual status_t onTransact( uint32_t code, + const Parcel &data, + Parcel *reply, + uint32_t flags = 0); }; #endif diff --git a/tvapi/android/include/ITvClient.h b/tvapi/android/include/ITvClient.h index 26794be..05c498d 100644 --- a/tvapi/android/include/ITvClient.h +++ b/tvapi/android/include/ITvClient.h @@ -11,18 +11,18 @@ using namespace android; class ITvClient: public IInterface { public: - DECLARE_META_INTERFACE(TvClient); + DECLARE_META_INTERFACE(TvClient); - virtual void notifyCallback(int32_t msgType, const Parcel &p) = 0; + virtual void notifyCallback(int32_t msgType, const Parcel &p) = 0; }; class BnTvClient: public BnInterface { public: - virtual status_t onTransact(uint32_t code, - const Parcel &data, - Parcel *reply, - uint32_t flags = 0); + virtual status_t onTransact(uint32_t code, + const Parcel &data, + Parcel *reply, + uint32_t flags = 0); }; #endif diff --git a/tvapi/android/include/ITvService.h b/tvapi/android/include/ITvService.h index 8803809..60983d3 100644 --- a/tvapi/android/include/ITvService.h +++ b/tvapi/android/include/ITvService.h @@ -12,22 +12,22 @@ using namespace android; class ITvService : public IInterface { public: - enum { - CONNECT = IBinder::FIRST_CALL_TRANSACTION, - }; + enum { + CONNECT = IBinder::FIRST_CALL_TRANSACTION, + }; public: - DECLARE_META_INTERFACE(TvService); + DECLARE_META_INTERFACE(TvService); - virtual sp connect(const sp &tvClient) = 0; + virtual sp connect(const sp &tvClient) = 0; }; class BnTvService: public BnInterface { public: - virtual status_t onTransact(uint32_t code, - const Parcel &data, - Parcel *reply, - uint32_t flags = 0); + virtual status_t onTransact(uint32_t code, + const Parcel &data, + Parcel *reply, + uint32_t flags = 0); }; #endif diff --git a/tvapi/android/include/TvClient.h b/tvapi/android/include/TvClient.h index a3f2a3f..505f2bb 100644 --- a/tvapi/android/include/TvClient.h +++ b/tvapi/android/include/TvClient.h @@ -30,7 +30,10 @@ public: status_t lock(); status_t unlock(); - status_t getStatus() { return mStatus; } + status_t getStatus() + { + return mStatus; + } status_t processCmd(const Parcel &p, Parcel *r); status_t createSubtitle(const sp &share_mem); status_t createVideoFrame(const sp &share_mem, int iSourceMode, int iCapVideoLayerOnly); diff --git a/tvapi/android/include/tvcmd.h b/tvapi/android/include/tvcmd.h index 8415171..ac8fa57 100644 --- a/tvapi/android/include/tvcmd.h +++ b/tvapi/android/include/tvcmd.h @@ -2,616 +2,616 @@ #define ANDROID_AMLOGIC_TVCMD_H enum tvcmd_e { - // Tv function - OPEN_TV = 1, - CLOSE_TV = 2, - START_TV = 3, - STOP_TV = 4, - GET_TV_STATUS = 5, - GET_LAST_SOURCE_INPUT = 6, - GET_CURRENT_SOURCE_INPUT = 7, - GET_CURRENT_SOURCE_INPUT_TYPE = 8, - GET_CURRENT_SIGNAL_INFO = 9, - IS_SOURCE_SWTICH_DONE = 10, - SET_SOURCE_INPUT = 11, - RUN_ADC_AUTO_CALIBRATION = 12, - IS_DVI_SIGNAL = 13, - IS_VGA_TIMEING_IN_HDMI = 14, - GET_VIDEO_PATH_STATUS = 15, - GET_VIDEO_STREAM_STATUS = 16, - GET_FIRST_START_SWITCH_TYPE = 17, - SET_PREVIEW_WINDOW = 18, - GET_SOURCE_CONNECT_STATUS = 19, - //Tv function END + // Tv function + OPEN_TV = 1, + CLOSE_TV = 2, + START_TV = 3, + STOP_TV = 4, + GET_TV_STATUS = 5, + GET_LAST_SOURCE_INPUT = 6, + GET_CURRENT_SOURCE_INPUT = 7, + GET_CURRENT_SOURCE_INPUT_TYPE = 8, + GET_CURRENT_SIGNAL_INFO = 9, + IS_SOURCE_SWTICH_DONE = 10, + SET_SOURCE_INPUT = 11, + RUN_ADC_AUTO_CALIBRATION = 12, + IS_DVI_SIGNAL = 13, + IS_VGA_TIMEING_IN_HDMI = 14, + GET_VIDEO_PATH_STATUS = 15, + GET_VIDEO_STREAM_STATUS = 16, + GET_FIRST_START_SWITCH_TYPE = 17, + SET_PREVIEW_WINDOW = 18, + GET_SOURCE_CONNECT_STATUS = 19, + //Tv function END - // VGA - RUN_VGA_AUTO_ADJUST = 20, - GET_VGA_AUTO_ADJUST_STATUS = 21, - IS_VGA_AUTO_ADJUST_DONE = 22, - SET_VGA_HPOS = 23, - GET_VGA_HPOS = 24, - SET_VGA_VPOS = 25, - GET_VGA_VPOS = 26, - SET_VGA_CLOCK = 27, - GET_VGA_CLOCK = 28, - SET_VGA_PHASE = 29, - GET_VGA_PHASE = 30, - SET_VGA_AJUST_PARA = 31, - GET_VGA_AJUST_PARA = 32, - SET_VGAPARAM_DEFAULT = 33, + // VGA + RUN_VGA_AUTO_ADJUST = 20, + GET_VGA_AUTO_ADJUST_STATUS = 21, + IS_VGA_AUTO_ADJUST_DONE = 22, + SET_VGA_HPOS = 23, + GET_VGA_HPOS = 24, + SET_VGA_VPOS = 25, + GET_VGA_VPOS = 26, + SET_VGA_CLOCK = 27, + GET_VGA_CLOCK = 28, + SET_VGA_PHASE = 29, + GET_VGA_PHASE = 30, + SET_VGA_AJUST_PARA = 31, + GET_VGA_AJUST_PARA = 32, + SET_VGAPARAM_DEFAULT = 33, - // 3D - SET_3D_MODE = 61, - GET_3D_MODE = 62, - SET_3D_LR_SWITH = 63, - GET_3D_LR_SWITH = 64, - SET_3D_TO_2D_MODE = 65, - GET_3D_TO_2D_MODE = 66, - SET_3D_DEPTH = 67, - GET_3D_DEPTH = 68, - GET_3D_AUTO_DETECT = 69, - SET_3D_AUTO_DETECT = 70, - // 3D END + // 3D + SET_3D_MODE = 61, + GET_3D_MODE = 62, + SET_3D_LR_SWITH = 63, + GET_3D_LR_SWITH = 64, + SET_3D_TO_2D_MODE = 65, + GET_3D_TO_2D_MODE = 66, + SET_3D_DEPTH = 67, + GET_3D_DEPTH = 68, + GET_3D_AUTO_DETECT = 69, + SET_3D_AUTO_DETECT = 70, + // 3D END - //Screen related - SET_VIDEO_DISABLE = 80, + //Screen related + SET_VIDEO_DISABLE = 80, - // PQ - SET_SCENEMODE = 192, - GET_SCENEMODE = 193, - SET_BRIGHTNESS = 194, - GET_BRIGHTNESS = 195, - SAVE_BRIGHTNESS = 196, - SET_CONTRAST = 197, - GET_CONTRAST = 198, - SAVE_CONTRAST = 199, - SET_SATUATION = 200, - GET_SATUATION = 201, - SAVE_SATUATION = 202, - SET_HUE = 203, - GET_HUE = 204, - SAVE_HUE = 205, - SET_PQMODE = 206, - GET_PQMODE = 207, - SAVE_PQMODE = 208, - SET_SHARPNESS = 209, - GET_SHARPNESS = 210, - SAVE_SHARPNESS = 211, - SET_BACKLIGHT = 212, - GET_BACKLIGHT = 213, - SAVE_BACKLIGHT = 214, - SET_COLOR_MODE = 215, - GET_COLOR_MODE = 216, - SAVE_COLOR_MODE = 217, - SET_COLOR_TEMPERATURE = 218, - GET_COLOR_TEMPERATURE = 219, - SAVE_COLOR_TEMPERATURE = 220, - SET_DISPLAY_MODE = 221, - GET_DISPLAY_MODE = 222, - SAVE_DISPLAY_MODE = 223, - SET_NOISE_REDUCTION_MODE = 224, - GET_NOISE_REDUCTION_MODE = 225, - VPP_SPLIT_SCREEN_EFFECT = 226, - SET_BACKLIGHT_SWITCH = 227, - GET_BACKLIGHT_SWITCH = 228, - SAVE_NOISE_REDUCTION_MODE = 229, - //GETRGBOGO_GAIN_G = 237, - //GETRGBOGO_GAIN_B = 238, + // PQ + SET_SCENEMODE = 192, + GET_SCENEMODE = 193, + SET_BRIGHTNESS = 194, + GET_BRIGHTNESS = 195, + SAVE_BRIGHTNESS = 196, + SET_CONTRAST = 197, + GET_CONTRAST = 198, + SAVE_CONTRAST = 199, + SET_SATUATION = 200, + GET_SATUATION = 201, + SAVE_SATUATION = 202, + SET_HUE = 203, + GET_HUE = 204, + SAVE_HUE = 205, + SET_PQMODE = 206, + GET_PQMODE = 207, + SAVE_PQMODE = 208, + SET_SHARPNESS = 209, + GET_SHARPNESS = 210, + SAVE_SHARPNESS = 211, + SET_BACKLIGHT = 212, + GET_BACKLIGHT = 213, + SAVE_BACKLIGHT = 214, + SET_COLOR_MODE = 215, + GET_COLOR_MODE = 216, + SAVE_COLOR_MODE = 217, + SET_COLOR_TEMPERATURE = 218, + GET_COLOR_TEMPERATURE = 219, + SAVE_COLOR_TEMPERATURE = 220, + SET_DISPLAY_MODE = 221, + GET_DISPLAY_MODE = 222, + SAVE_DISPLAY_MODE = 223, + SET_NOISE_REDUCTION_MODE = 224, + GET_NOISE_REDUCTION_MODE = 225, + VPP_SPLIT_SCREEN_EFFECT = 226, + SET_BACKLIGHT_SWITCH = 227, + GET_BACKLIGHT_SWITCH = 228, + SAVE_NOISE_REDUCTION_MODE = 229, + //GETRGBOGO_GAIN_G = 237, + //GETRGBOGO_GAIN_B = 238, - // FACTORY - FACTORY_SETPQMODE_BRIGHTNESS = 240, - FACTORY_GETPQMODE_BRIGHTNESS = 241, - FACTORY_SETPQMODE_CONTRAST = 242, - FACTORY_GETPQMODE_CONTRAST = 243, - FACTORY_SETPQMODE_SATURATION = 244, - FACTORY_GETPQMODE_SATURATION = 245, - FACTORY_SETPQMODE_HUE = 246, - FACTORY_GETPQMODE_HUE = 247, - FACTORY_SETPQMODE_SHARPNESS = 248, - FACTORY_GETPQMODE_SHARPNESS = 249, - FACTORY_SETTESTPATTERN = 268, - FACTORY_GETTESTPATTERN = 269, - FACTORY_RESETPQMODE = 270, - FACTORY_RESETCOLORTEMP = 271, - FACTORY_RESETPAMAMSDEFAULT = 272, - FACTORY_SETDDRSSC = 273, - FACTORY_GETDDRSSC = 274, - FACTORY_SETLVDSSSC = 275, - FACTORY_GETLVDSSSC = 276, - FACTORY_SETNOLINEPARAMS = 277, - FACTORY_GETNOLINEPARAMS = 278, - FACTORY_SETOVERSCAN = 279, - FACTORY_GETOVERSCAN = 280, - FACTORY_SET_OUT_DEFAULT = 281, - FACTORY_GETGLOBALOGO_RGAIN = 282, - FACTORY_GETGLOBALOGO_GGAIN = 283, - FACTORY_GETGLOBALOGO_BGAIN = 284, - FACTORY_GETGLOBALOGO_ROFFSET = 285, - FACTORY_GETGLOBALOGO_GOFFSET = 286, - FACTORY_GETGLOBALOGO_BOFFSET = 287, - FACTORY_SETGLOBALOGO_RGAIN = 288, - FACTORY_SETGLOBALOGO_GGAIN = 289, - FACTORY_SETGLOBALOGO_BGAIN = 290, - FACTORY_SETGLOBALOGO_ROFFSET = 291, - FACTORY_SETGLOBALOGO_GOFFSET = 292, - FACTORY_SETGLOBALOGO_BOFFSET = 293, - FACTORY_CLEAN_ALL_TABLE_FOR_PROGRAM = 294, + // FACTORY + FACTORY_SETPQMODE_BRIGHTNESS = 240, + FACTORY_GETPQMODE_BRIGHTNESS = 241, + FACTORY_SETPQMODE_CONTRAST = 242, + FACTORY_GETPQMODE_CONTRAST = 243, + FACTORY_SETPQMODE_SATURATION = 244, + FACTORY_GETPQMODE_SATURATION = 245, + FACTORY_SETPQMODE_HUE = 246, + FACTORY_GETPQMODE_HUE = 247, + FACTORY_SETPQMODE_SHARPNESS = 248, + FACTORY_GETPQMODE_SHARPNESS = 249, + FACTORY_SETTESTPATTERN = 268, + FACTORY_GETTESTPATTERN = 269, + FACTORY_RESETPQMODE = 270, + FACTORY_RESETCOLORTEMP = 271, + FACTORY_RESETPAMAMSDEFAULT = 272, + FACTORY_SETDDRSSC = 273, + FACTORY_GETDDRSSC = 274, + FACTORY_SETLVDSSSC = 275, + FACTORY_GETLVDSSSC = 276, + FACTORY_SETNOLINEPARAMS = 277, + FACTORY_GETNOLINEPARAMS = 278, + FACTORY_SETOVERSCAN = 279, + FACTORY_GETOVERSCAN = 280, + FACTORY_SET_OUT_DEFAULT = 281, + FACTORY_GETGLOBALOGO_RGAIN = 282, + FACTORY_GETGLOBALOGO_GGAIN = 283, + FACTORY_GETGLOBALOGO_BGAIN = 284, + FACTORY_GETGLOBALOGO_ROFFSET = 285, + FACTORY_GETGLOBALOGO_GOFFSET = 286, + FACTORY_GETGLOBALOGO_BOFFSET = 287, + FACTORY_SETGLOBALOGO_RGAIN = 288, + FACTORY_SETGLOBALOGO_GGAIN = 289, + FACTORY_SETGLOBALOGO_BGAIN = 290, + FACTORY_SETGLOBALOGO_ROFFSET = 291, + FACTORY_SETGLOBALOGO_GOFFSET = 292, + FACTORY_SETGLOBALOGO_BOFFSET = 293, + FACTORY_CLEAN_ALL_TABLE_FOR_PROGRAM = 294, - DELETE_PARAM_PQ_DB = 295, - REPLACE_PARAM_PQ_DB = 296, - FACTORY_SETPATTERN_YUV = 297, + DELETE_PARAM_PQ_DB = 295, + REPLACE_PARAM_PQ_DB = 296, + FACTORY_SETPATTERN_YUV = 297, - // FACTORY END + // FACTORY END - // AUDIO - // AUDIO MUTE - SET_AUDIO_MUTEKEY_STATUS = 301, - GET_AUDIO_MUTEKEY_STATUS = 302, - SET_AUDIO_FORCE_MUTE_STATUS = 303, - GET_AUDIO_FORCE_MUTE_STATUS = 304, - SET_AUDIO_AVOUT_MUTE_STATUS = 305, - GET_AUDIO_AVOUT_MUTE_STATUS = 306, - SET_AUDIO_SPDIF_MUTE_STATUS = 307, - GET_AUDIO_SPDIF_MUTE_STATUS = 308, - // AUDIO MASTER VOLUME - SET_AUDIO_MASTER_VOLUME = 309, - GET_AUDIO_MASTER_VOLUME = 310, - SAVE_CUR_AUDIO_MASTER_VOLUME = 311, - GET_CUR_AUDIO_MASTER_VOLUME = 312, - // AUDIO BALANCE - SET_AUDIO_BALANCE = 313, - GET_AUDIO_BALANCE = 314, - SAVE_CUR_AUDIO_BALANCE = 315, - GET_CUR_AUDIO_BALANCE = 316, - // AUDIO SUPPERBASS VOLUME - SET_AUDIO_SUPPER_BASS_VOLUME = 317, - GET_AUDIO_SUPPER_BASS_VOLUME = 318, - SAVE_CUR_AUDIO_SUPPER_BASS_VOLUME = 319, - GET_CUR_AUDIO_SUPPER_BASS_VOLUME = 320, - // AUDIO SUPPERBASS SWITCH - SET_AUDIO_SUPPER_BASS_SWITCH = 321, - GET_AUDIO_SUPPER_BASS_SWITCH = 322, - SAVE_CUR_AUDIO_SUPPER_BASS_SWITCH = 323, - GET_CUR_AUDIO_SUPPER_BASS_SWITCH = 324, - // AUDIO SRS SURROUND SWITCH - SET_AUDIO_SRS_SURROUND = 325, - GET_AUDIO_SRS_SURROUND = 326, - SAVE_CUR_AUDIO_SRS_SURROUND = 327, - GET_CUR_AUDIO_SRS_SURROUND = 328, - // AUDIO SRS DIALOG CLARITY - SET_AUDIO_SRS_DIALOG_CLARITY = 329, - GET_AUDIO_SRS_DIALOG_CLARITY = 330, - SAVE_CUR_AUDIO_SRS_DIALOG_CLARITY = 331, - GET_CUR_AUDIO_SRS_DIALOG_CLARITY = 332, - // AUDIO SRS TRUBASS - SET_AUDIO_SRS_TRU_BASS = 333, - GET_AUDIO_SRS_TRU_BASS = 334, - SAVE_CUR_AUDIO_SRS_TRU_BASS = 335, - GET_CUR_AUDIO_SRS_TRU_BASS = 336, - // AUDIO BASS - SET_AUDIO_BASS_VOLUME = 337, - GET_AUDIO_BASS_VOLUME = 338, - SAVE_CUR_AUDIO_BASS_VOLUME = 339, - GET_CUR_AUDIO_BASS_VOLUME = 340, - // AUDIO TREBLE - SET_AUDIO_TREBLE_VOLUME = 341, - GET_AUDIO_TREBLE_VOLUME = 342, - SAVE_CUR_AUDIO_TREBLE_VOLUME = 343, - GET_CUR_AUDIO_TREBLE_VOLUME = 344, - // AUDIO SOUND MODE - SET_AUDIO_SOUND_MODE = 345, - GET_AUDIO_SOUND_MODE = 346, - SAVE_CUR_AUDIO_SOUND_MODE = 347, - GET_CUR_AUDIO_SOUND_MODE = 348, - // AUDIO WALL EFFECT - SET_AUDIO_WALL_EFFECT = 349, - GET_AUDIO_WALL_EFFECT = 350, - SAVE_CUR_AUDIO_WALL_EFFECT = 351, - GET_CUR_AUDIO_WALL_EFFECT = 352, - // AUDIO EQ MODE - SET_AUDIO_EQ_MODE = 353, - GET_AUDIO_EQ_MODE = 354, - SAVE_CUR_AUDIO_EQ_MODE = 355, - GET_CUR_AUDIO_EQ_MODE = 356, - // AUDIO EQ GAIN - GET_AUDIO_EQ_RANGE = 357, - GET_AUDIO_EQ_BAND_COUNT = 358, - SET_AUDIO_EQ_GAIN = 359, - GET_AUDIO_EQ_GAIN = 360, - GET_CUR_EQ_GAIN = 361, - SAVE_CUR_AUDIO_EQ_GAIN = 362, - SET_AUDIO_EQ_SWITCH = 363, - // AUDIO SPDIF SWITCH - SET_AUDIO_SPDIF_SWITCH = 364, - GET_AUDIO_SPDIF_SWITCH = 365, - SAVE_CUR_AUDIO_SPDIF_SWITCH = 366, - GET_CUR_AUDIO_SPDIF_SWITCH = 367, - // AUDIO SPDIF MODE - SET_AUDIO_SPDIF_MODE = 368, - GET_AUDIO_SPDIF_MODE = 369, - SAVE_CUR_AUDIO_SPDIF_MODE = 370, - GET_CUR_AUDIO_SPDIF_MODE = 371, - // amAudio - OPEN_AMAUDIO = 372, - CLOSE_AMAUDIO = 373, - SET_AMAUDIO_INPUT_SR = 374, - SET_AMAUDIO_OUTPUT_MODE = 375, - SET_AMAUDIO_MUSIC_GAIN = 376, - SET_AMAUDIO_LEFT_GAIN = 377, - SET_AMAUDIO_RIGHT_GAIN = 378, - SET_AMAUDIO_REV1 = 379, - SET_AMAUDIO_REV2 = 380, - SET_AMAUDIO_REV3 = 381, - SET_AMAUDIO_REV4 = 382, - SET_AMAUDIO_REV5 = 383, - //AUDIO INPUT LEVEL SWITCH - SELECT_LINE_IN_CHANNEL = 384, - SET_LINE_IN_CAPTURE_VOL = 385, - HANDLE_AUDIO_HEADSET_PLUG_IN = 386, - HANDLE_AUDIO_HEADSET_PULL_OUT = 387, - SET_AUDIO_VOL_COMP = 388, - GET_AUDIO_VOL_COMP = 389, - SET_NOISE_GATE_THRESHOLD = 390, - SAVE_AUDIO_VOL_COMP = 391, - SET_KALAOK_IO_LEVEL = 392, - AUDIO_SET_DOUBLE_OUTPUT_ENABLE = 393, - USB_AUDIO_OUPUT_MODULE_ENABLE = 394, - GET_USB_AUDIO_DOUBLE_OUPUT_MODULE_ENABLE = 395, - GET_USB_AUDIO_OUPUT_MODULE_ENABLE = 396, - SET_AUDIO_SOURCE_FOR_KARAOKE = 397, - SET_DBX_TV_MODE = 398, - SET_DRC_ONOFF = 399, - GET_DRC_ONOFF = 400, - GET_DBX_TV_MODE = 401, - //AUDIO END + // AUDIO + // AUDIO MUTE + SET_AUDIO_MUTEKEY_STATUS = 301, + GET_AUDIO_MUTEKEY_STATUS = 302, + SET_AUDIO_FORCE_MUTE_STATUS = 303, + GET_AUDIO_FORCE_MUTE_STATUS = 304, + SET_AUDIO_AVOUT_MUTE_STATUS = 305, + GET_AUDIO_AVOUT_MUTE_STATUS = 306, + SET_AUDIO_SPDIF_MUTE_STATUS = 307, + GET_AUDIO_SPDIF_MUTE_STATUS = 308, + // AUDIO MASTER VOLUME + SET_AUDIO_MASTER_VOLUME = 309, + GET_AUDIO_MASTER_VOLUME = 310, + SAVE_CUR_AUDIO_MASTER_VOLUME = 311, + GET_CUR_AUDIO_MASTER_VOLUME = 312, + // AUDIO BALANCE + SET_AUDIO_BALANCE = 313, + GET_AUDIO_BALANCE = 314, + SAVE_CUR_AUDIO_BALANCE = 315, + GET_CUR_AUDIO_BALANCE = 316, + // AUDIO SUPPERBASS VOLUME + SET_AUDIO_SUPPER_BASS_VOLUME = 317, + GET_AUDIO_SUPPER_BASS_VOLUME = 318, + SAVE_CUR_AUDIO_SUPPER_BASS_VOLUME = 319, + GET_CUR_AUDIO_SUPPER_BASS_VOLUME = 320, + // AUDIO SUPPERBASS SWITCH + SET_AUDIO_SUPPER_BASS_SWITCH = 321, + GET_AUDIO_SUPPER_BASS_SWITCH = 322, + SAVE_CUR_AUDIO_SUPPER_BASS_SWITCH = 323, + GET_CUR_AUDIO_SUPPER_BASS_SWITCH = 324, + // AUDIO SRS SURROUND SWITCH + SET_AUDIO_SRS_SURROUND = 325, + GET_AUDIO_SRS_SURROUND = 326, + SAVE_CUR_AUDIO_SRS_SURROUND = 327, + GET_CUR_AUDIO_SRS_SURROUND = 328, + // AUDIO SRS DIALOG CLARITY + SET_AUDIO_SRS_DIALOG_CLARITY = 329, + GET_AUDIO_SRS_DIALOG_CLARITY = 330, + SAVE_CUR_AUDIO_SRS_DIALOG_CLARITY = 331, + GET_CUR_AUDIO_SRS_DIALOG_CLARITY = 332, + // AUDIO SRS TRUBASS + SET_AUDIO_SRS_TRU_BASS = 333, + GET_AUDIO_SRS_TRU_BASS = 334, + SAVE_CUR_AUDIO_SRS_TRU_BASS = 335, + GET_CUR_AUDIO_SRS_TRU_BASS = 336, + // AUDIO BASS + SET_AUDIO_BASS_VOLUME = 337, + GET_AUDIO_BASS_VOLUME = 338, + SAVE_CUR_AUDIO_BASS_VOLUME = 339, + GET_CUR_AUDIO_BASS_VOLUME = 340, + // AUDIO TREBLE + SET_AUDIO_TREBLE_VOLUME = 341, + GET_AUDIO_TREBLE_VOLUME = 342, + SAVE_CUR_AUDIO_TREBLE_VOLUME = 343, + GET_CUR_AUDIO_TREBLE_VOLUME = 344, + // AUDIO SOUND MODE + SET_AUDIO_SOUND_MODE = 345, + GET_AUDIO_SOUND_MODE = 346, + SAVE_CUR_AUDIO_SOUND_MODE = 347, + GET_CUR_AUDIO_SOUND_MODE = 348, + // AUDIO WALL EFFECT + SET_AUDIO_WALL_EFFECT = 349, + GET_AUDIO_WALL_EFFECT = 350, + SAVE_CUR_AUDIO_WALL_EFFECT = 351, + GET_CUR_AUDIO_WALL_EFFECT = 352, + // AUDIO EQ MODE + SET_AUDIO_EQ_MODE = 353, + GET_AUDIO_EQ_MODE = 354, + SAVE_CUR_AUDIO_EQ_MODE = 355, + GET_CUR_AUDIO_EQ_MODE = 356, + // AUDIO EQ GAIN + GET_AUDIO_EQ_RANGE = 357, + GET_AUDIO_EQ_BAND_COUNT = 358, + SET_AUDIO_EQ_GAIN = 359, + GET_AUDIO_EQ_GAIN = 360, + GET_CUR_EQ_GAIN = 361, + SAVE_CUR_AUDIO_EQ_GAIN = 362, + SET_AUDIO_EQ_SWITCH = 363, + // AUDIO SPDIF SWITCH + SET_AUDIO_SPDIF_SWITCH = 364, + GET_AUDIO_SPDIF_SWITCH = 365, + SAVE_CUR_AUDIO_SPDIF_SWITCH = 366, + GET_CUR_AUDIO_SPDIF_SWITCH = 367, + // AUDIO SPDIF MODE + SET_AUDIO_SPDIF_MODE = 368, + GET_AUDIO_SPDIF_MODE = 369, + SAVE_CUR_AUDIO_SPDIF_MODE = 370, + GET_CUR_AUDIO_SPDIF_MODE = 371, + // amAudio + OPEN_AMAUDIO = 372, + CLOSE_AMAUDIO = 373, + SET_AMAUDIO_INPUT_SR = 374, + SET_AMAUDIO_OUTPUT_MODE = 375, + SET_AMAUDIO_MUSIC_GAIN = 376, + SET_AMAUDIO_LEFT_GAIN = 377, + SET_AMAUDIO_RIGHT_GAIN = 378, + SET_AMAUDIO_REV1 = 379, + SET_AMAUDIO_REV2 = 380, + SET_AMAUDIO_REV3 = 381, + SET_AMAUDIO_REV4 = 382, + SET_AMAUDIO_REV5 = 383, + //AUDIO INPUT LEVEL SWITCH + SELECT_LINE_IN_CHANNEL = 384, + SET_LINE_IN_CAPTURE_VOL = 385, + HANDLE_AUDIO_HEADSET_PLUG_IN = 386, + HANDLE_AUDIO_HEADSET_PULL_OUT = 387, + SET_AUDIO_VOL_COMP = 388, + GET_AUDIO_VOL_COMP = 389, + SET_NOISE_GATE_THRESHOLD = 390, + SAVE_AUDIO_VOL_COMP = 391, + SET_KALAOK_IO_LEVEL = 392, + AUDIO_SET_DOUBLE_OUTPUT_ENABLE = 393, + USB_AUDIO_OUPUT_MODULE_ENABLE = 394, + GET_USB_AUDIO_DOUBLE_OUPUT_MODULE_ENABLE = 395, + GET_USB_AUDIO_OUPUT_MODULE_ENABLE = 396, + SET_AUDIO_SOURCE_FOR_KARAOKE = 397, + SET_DBX_TV_MODE = 398, + SET_DRC_ONOFF = 399, + GET_DRC_ONOFF = 400, + GET_DBX_TV_MODE = 401, + //AUDIO END - // CALLBACK - SEARCH_CALLBACK = 501, - SIGLE_DETECT_CALLBACK = 502, - VGA_CALLBACK = 503, - DREAM_PANEL_CALLBACK = 504, - ADC_CALIBRATION_CALLBACK = 505, - SOURCE_SWITCH_CALLBACK = 506, - CHANNEL_SELECT_CALLBACK = 507, - STATUS_3D_CALLBACK = 508, - DTV_AV_PLAYBACK_CALLBACK = 509, - SOURCE_CONNECT_CALLBACK = 510, - HDMIRX_CEC_CALLBACK = 511, - SERIAL_COMMUNICATION_CALLBACK = 512, - CLOSE_CAPTION_CALLBACK = 514, - VCHIP_CALLBACK = 515, - UPGRADE_FBC_CALLBACK = 516, - HEADSET_STATUS_CALLBACK = 517, + // CALLBACK + SEARCH_CALLBACK = 501, + SIGLE_DETECT_CALLBACK = 502, + VGA_CALLBACK = 503, + DREAM_PANEL_CALLBACK = 504, + ADC_CALIBRATION_CALLBACK = 505, + SOURCE_SWITCH_CALLBACK = 506, + CHANNEL_SELECT_CALLBACK = 507, + STATUS_3D_CALLBACK = 508, + DTV_AV_PLAYBACK_CALLBACK = 509, + SOURCE_CONNECT_CALLBACK = 510, + HDMIRX_CEC_CALLBACK = 511, + SERIAL_COMMUNICATION_CALLBACK = 512, + CLOSE_CAPTION_CALLBACK = 514, + VCHIP_CALLBACK = 515, + UPGRADE_FBC_CALLBACK = 516, + HEADSET_STATUS_CALLBACK = 517, - RELEASE_RESOURCE_CALLBACK = 530, - RESOURCES_STATE_CHANGED_CALLBACK = 531, - RESOURCE_STATE_CHANGED_LISTEN_NOFIFY_CALLBACK = 532, + RELEASE_RESOURCE_CALLBACK = 530, + RESOURCES_STATE_CHANGED_CALLBACK = 531, + RESOURCE_STATE_CHANGED_LISTEN_NOFIFY_CALLBACK = 532, - SUBTITLE_UPDATE_CALLBACK = 540, - SCAN_EVENT_CALLBACK = 541, - EPG_EVENT_CALLBACK = 542, - VFRAME_BMP_EVENT_CALLBACK = 543, - // CALLBACK END + SUBTITLE_UPDATE_CALLBACK = 540, + SCAN_EVENT_CALLBACK = 541, + EPG_EVENT_CALLBACK = 542, + VFRAME_BMP_EVENT_CALLBACK = 543, + // CALLBACK END - // SSM - SSM_INIT_DEVICE = 600, - SSM_SAVE_ONE_BYTE = 601, - SSM_READ_ONE_BYTE = 602, - SSM_SAVE_N_BYTES = 603, - SSM_READ_N_BYTES = 604, - SSM_SAVE_POWER_ON_OFF_CHANNEL = 605, - SSM_READ_POWER_ON_OFF_CHANNEL = 606, - SSM_SAVE_SOURCE_INPUT = 607, - SSM_READ_SOURCE_INPUT = 608, - SSM_SAVE_LAST_SOURCE_INPUT = 609, - SSM_READ_LAST_SOURCE_INPUT = 610, - SSM_SAVE_SYS_LANGUAGE = 611, - SSM_READ_SYS_LANGUAGE = 612, - SSM_SAVE_AGING_MODE = 613, - SSM_READ_AGING_MODE = 614, - SSM_SAVE_PANEL_TYPE = 615, - SSM_READ_PANEL_TYPE = 616, - SSM_SAVE_MAC_ADDR = 617, - SSM_READ_MAC_ADDR = 618, - SSM_SAVE_BAR_CODE = 619, - SSM_READ_BAR_CODE = 620, - SSM_SAVE_POWER_ON_MUSIC_SWITCH = 623, - SSM_READ_POWER_ON_MUSIC_SWITCH = 624, - SSM_SAVE_POWER_ON_MUSIC_VOL = 625, - SSM_READ_POWER_ON_MUSIC_VOL = 626, - SSM_SAVE_SYS_SLEEP_TIMER = 627, - SSM_READ_SYS_SLEEP_TIMER = 628, - SSM_SET_BUS_STATUS = 629, - SSM_GET_BUS_STATUS = 630, - SSM_SAVE_INPUT_SRC_PARENTAL_CTL = 631, - SSM_READ_INPUT_SRC_PARENTAL_CTL = 632, - SSM_SAVE_PARENTAL_CTL_SWITCH = 633, - SSM_READ_PARENTAL_CTL_SWITCH = 634, - SSM_SAVE_PARENTAL_CTL_PASS_WORD = 635, - SSM_READ_PARENTAL_CTL_PASS_WORD = 636, - SSM_SAVE_USING_DEF_HDCP_KEY_FLAG = 637, - SSM_READ_USING_DEF_HDCP_KEY_FLAG = 638, - SSM_GET_CUSTOMER_DATA_START = 639, - SSM_GET_CUSTOMER_DATA_LEN = 640, - SSM_SAVE_STANDBY_MODE = 641, - SSM_READ_STANDBY_MODE = 642, - SSM_SAVE_LOGO_ON_OFF_FLAG = 643, - SSM_READ_LOGO_ON_OFF_FLAG = 644, - SSM_SAVE_HDMIEQ_MODE = 645, - SSM_READ_HDMIEQ_MODE = 646, - SSM_SAVE_HDMIINTERNAL_MODE = 647, - SSM_READ_HDMIINTERNAL_MODE = 648, - SSM_SAVE_DISABLE_3D = 649, - SSM_READ_DISABLE_3D = 650, - SSM_SAVE_GLOBAL_OGOENABLE = 651, - SSM_READ_GLOBAL_OGOENABLE = 652, - SSM_SAVE_LOCAL_DIMING_STATUS = 653, - SSM_READ_LOCAL_DIMING_STATUS = 654, - SSM_SAVE_NON_STANDARD_STATUS = 655, - SSM_READ_NON_STANDARD_STATUS = 656, - SSM_SAVE_ADB_SWITCH_STATUS = 657, - SSM_READ_ADB_SWITCH_STATUS = 658, - SSM_SAVE_SERIAL_CMD_SWITCH_STATUS = 659, - SSM_READ_SERIAL_CMD_SWITCH_STATUS = 660, - SSM_SET_HDCP_KEY = 661, - SSM_SAVE_CHROMA_STATUS = 662, - SSM_SAVE_CA_BUFFER_SIZE = 663, - SSM_READ_CA_BUFFER_SIZE = 664, - SSM_GET_ATV_DATA_START = 665, - SSM_GET_ATV_DATA_LEN = 666, - SSM_GET_VPP_DATA_START = 667, - SSM_GET_VPP_DATA_LEN = 668, - SSM_SAVE_NOISE_GATE_THRESHOLD_STATUS = 669, - SSM_READ_NOISE_GATE_THRESHOLD_STATUS = 670, - SSM_SAVE_PROJECT_ID = 673, - SSM_READ_PROJECT_ID = 674, - SSM_SAVE_HDCPKEY = 675, - SSM_READ_HDCPKEY = 676, - SSM_READ_BLACKOUT_ENABLE = 677, - SSM_REFRESH_HDCPKEY = 678, + // SSM + SSM_INIT_DEVICE = 600, + SSM_SAVE_ONE_BYTE = 601, + SSM_READ_ONE_BYTE = 602, + SSM_SAVE_N_BYTES = 603, + SSM_READ_N_BYTES = 604, + SSM_SAVE_POWER_ON_OFF_CHANNEL = 605, + SSM_READ_POWER_ON_OFF_CHANNEL = 606, + SSM_SAVE_SOURCE_INPUT = 607, + SSM_READ_SOURCE_INPUT = 608, + SSM_SAVE_LAST_SOURCE_INPUT = 609, + SSM_READ_LAST_SOURCE_INPUT = 610, + SSM_SAVE_SYS_LANGUAGE = 611, + SSM_READ_SYS_LANGUAGE = 612, + SSM_SAVE_AGING_MODE = 613, + SSM_READ_AGING_MODE = 614, + SSM_SAVE_PANEL_TYPE = 615, + SSM_READ_PANEL_TYPE = 616, + SSM_SAVE_MAC_ADDR = 617, + SSM_READ_MAC_ADDR = 618, + SSM_SAVE_BAR_CODE = 619, + SSM_READ_BAR_CODE = 620, + SSM_SAVE_POWER_ON_MUSIC_SWITCH = 623, + SSM_READ_POWER_ON_MUSIC_SWITCH = 624, + SSM_SAVE_POWER_ON_MUSIC_VOL = 625, + SSM_READ_POWER_ON_MUSIC_VOL = 626, + SSM_SAVE_SYS_SLEEP_TIMER = 627, + SSM_READ_SYS_SLEEP_TIMER = 628, + SSM_SET_BUS_STATUS = 629, + SSM_GET_BUS_STATUS = 630, + SSM_SAVE_INPUT_SRC_PARENTAL_CTL = 631, + SSM_READ_INPUT_SRC_PARENTAL_CTL = 632, + SSM_SAVE_PARENTAL_CTL_SWITCH = 633, + SSM_READ_PARENTAL_CTL_SWITCH = 634, + SSM_SAVE_PARENTAL_CTL_PASS_WORD = 635, + SSM_READ_PARENTAL_CTL_PASS_WORD = 636, + SSM_SAVE_USING_DEF_HDCP_KEY_FLAG = 637, + SSM_READ_USING_DEF_HDCP_KEY_FLAG = 638, + SSM_GET_CUSTOMER_DATA_START = 639, + SSM_GET_CUSTOMER_DATA_LEN = 640, + SSM_SAVE_STANDBY_MODE = 641, + SSM_READ_STANDBY_MODE = 642, + SSM_SAVE_LOGO_ON_OFF_FLAG = 643, + SSM_READ_LOGO_ON_OFF_FLAG = 644, + SSM_SAVE_HDMIEQ_MODE = 645, + SSM_READ_HDMIEQ_MODE = 646, + SSM_SAVE_HDMIINTERNAL_MODE = 647, + SSM_READ_HDMIINTERNAL_MODE = 648, + SSM_SAVE_DISABLE_3D = 649, + SSM_READ_DISABLE_3D = 650, + SSM_SAVE_GLOBAL_OGOENABLE = 651, + SSM_READ_GLOBAL_OGOENABLE = 652, + SSM_SAVE_LOCAL_DIMING_STATUS = 653, + SSM_READ_LOCAL_DIMING_STATUS = 654, + SSM_SAVE_NON_STANDARD_STATUS = 655, + SSM_READ_NON_STANDARD_STATUS = 656, + SSM_SAVE_ADB_SWITCH_STATUS = 657, + SSM_READ_ADB_SWITCH_STATUS = 658, + SSM_SAVE_SERIAL_CMD_SWITCH_STATUS = 659, + SSM_READ_SERIAL_CMD_SWITCH_STATUS = 660, + SSM_SET_HDCP_KEY = 661, + SSM_SAVE_CHROMA_STATUS = 662, + SSM_SAVE_CA_BUFFER_SIZE = 663, + SSM_READ_CA_BUFFER_SIZE = 664, + SSM_GET_ATV_DATA_START = 665, + SSM_GET_ATV_DATA_LEN = 666, + SSM_GET_VPP_DATA_START = 667, + SSM_GET_VPP_DATA_LEN = 668, + SSM_SAVE_NOISE_GATE_THRESHOLD_STATUS = 669, + SSM_READ_NOISE_GATE_THRESHOLD_STATUS = 670, + SSM_SAVE_PROJECT_ID = 673, + SSM_READ_PROJECT_ID = 674, + SSM_SAVE_HDCPKEY = 675, + SSM_READ_HDCPKEY = 676, + SSM_READ_BLACKOUT_ENABLE = 677, + SSM_REFRESH_HDCPKEY = 678, - // Misc - MISC_PROP_SET = 701, - MISC_PROP_GET = 702, - MISC_CFG_SET = 703, - MISC_CFG_GET = 704, - MISC_READ_ADC_VAL = 707, - MISC_SET_WDT_USER_PET = 708, - MISC_SET_WDT_USER_COUNTER = 709, - MISC_SET_WDT_USER_PET_RESET_ENABLE = 710, - MISC_GET_TV_API_VERSION = 713, - MISC_GET_DVB_API_VERSION = 714, - MISC_SERIAL_SWITCH = 715, - MISC_SERIAL_SEND_DATA = 716, - MISC_CHANNEL_EXPORT = 721, - MISC_CHANNEL_IMPORT = 722, - MISC_GET_PROJECT_INFO = 723, - MISC_GET_PLATFORM_TYPE = 724, + // Misc + MISC_PROP_SET = 701, + MISC_PROP_GET = 702, + MISC_CFG_SET = 703, + MISC_CFG_GET = 704, + MISC_READ_ADC_VAL = 707, + MISC_SET_WDT_USER_PET = 708, + MISC_SET_WDT_USER_COUNTER = 709, + MISC_SET_WDT_USER_PET_RESET_ENABLE = 710, + MISC_GET_TV_API_VERSION = 713, + MISC_GET_DVB_API_VERSION = 714, + MISC_SERIAL_SWITCH = 715, + MISC_SERIAL_SEND_DATA = 716, + MISC_CHANNEL_EXPORT = 721, + MISC_CHANNEL_IMPORT = 722, + MISC_GET_PROJECT_INFO = 723, + MISC_GET_PLATFORM_TYPE = 724, - //Extra - FORMAT_PARTITION = 801, - DELETE_DIR_FILES = 802, - REQUEST_RESOURCES = 803, - RELEASED_RESOURCES = 804, - SET_LISTEN_TO_RESOURCE = 805, - QUERY_RESOURCE_STATE = 806, - GET_DISPLAY_RESOLUTION_CONFIG = 808, - GET_DISPLAY_RESOLUTION_INFO = 809, - HDMIRX_CEC_SEND_CUSTOM_MESSAGE = 810, - HDMIRX_CEC_SEND_CUSTOM_WAIT_REPLY_MESSAGE = 811, - HDMIRX_CEC_SEND_BROADCAST_STANDBY_MESSAGE = 812, - HDMIRX_CEC_SEND_GIVE_CEC_VERSION_MESSAGE = 813, - HDMIRX_CEC_SEND_GIVE_DEV_VENDOR_ID_MESSAGE = 814, - HDMIRX_CEC_SEND_GIVE_OSD_NAME_MESSAGE = 815, - GET_HDMI_KSV_INFO = 816, - HDMI_OUT_TOWHAT = 817, - SET_DEBUG_SERIAL_PORT_ONOFF = 818, - GET_DEBUG_SERIAL_PORT_ONOFF = 819, - DO_SUSPEND = 820, - DO_RESUME = 821, + //Extra + FORMAT_PARTITION = 801, + DELETE_DIR_FILES = 802, + REQUEST_RESOURCES = 803, + RELEASED_RESOURCES = 804, + SET_LISTEN_TO_RESOURCE = 805, + QUERY_RESOURCE_STATE = 806, + GET_DISPLAY_RESOLUTION_CONFIG = 808, + GET_DISPLAY_RESOLUTION_INFO = 809, + HDMIRX_CEC_SEND_CUSTOM_MESSAGE = 810, + HDMIRX_CEC_SEND_CUSTOM_WAIT_REPLY_MESSAGE = 811, + HDMIRX_CEC_SEND_BROADCAST_STANDBY_MESSAGE = 812, + HDMIRX_CEC_SEND_GIVE_CEC_VERSION_MESSAGE = 813, + HDMIRX_CEC_SEND_GIVE_DEV_VENDOR_ID_MESSAGE = 814, + HDMIRX_CEC_SEND_GIVE_OSD_NAME_MESSAGE = 815, + GET_HDMI_KSV_INFO = 816, + HDMI_OUT_TOWHAT = 817, + SET_DEBUG_SERIAL_PORT_ONOFF = 818, + GET_DEBUG_SERIAL_PORT_ONOFF = 819, + DO_SUSPEND = 820, + DO_RESUME = 821, - //Fac_FBC - FACTORY_FBC_UPGRADE = 900, - FACTORY_FBC_SET_BRIGHTNESS = 901, - FACTORY_FBC_GET_BRIGHTNESS = 902, - FACTORY_FBC_SET_CONTRAST = 903, - FACTORY_FBC_GET_CONTRAST = 904, - FACTORY_FBC_SET_SATURATION = 905, - FACTORY_FBC_GET_SATURATION = 906, - FACTORY_FBC_SET_HUE = 907, - FACTORY_FBC_GET_HUE = 908, - FACTORY_FBC_SET_BACKLIGHT = 909, - FACTORY_FBC_GET_BACKLIGHT = 910, - FACTORY_FBC_SET_PIC_MODE = 911, - FACTORY_FBC_GET_PIC_MODE = 912, - FACTORY_FBC_SET_GAIN_RED = 913, - FACTORY_FBC_GET_GAIN_RED = 914, - FACTORY_FBC_SET_GAIN_GREEN = 915, - FACTORY_FBC_GET_GAIN_GREEN = 916, - FACTORY_FBC_SET_GAIN_BLUE = 917, - FACTORY_FBC_GET_GAIN_BLUE = 918, - FACTORY_FBC_SET_OFFSET_RED = 919, - FACTORY_FBC_GET_OFFSET_RED = 920, - FACTORY_FBC_SET_OFFSET_GREEN = 921, - FACTORY_FBC_GET_OFFSET_GREEN = 922, - FACTORY_FBC_SET_OFFSET_BLUE = 923, - FACTORY_FBC_GET_OFFSET_BLUE = 924, - FACTORY_FBC_SET_COLORTEMP_MODE = 925, - FACTORY_FBC_GET_COLORTEMP_MODE = 926, - FACTORY_FBC_SET_WB_INIT = 927, - FACTORY_FBC_GET_WB_INIT = 928, - FACTORY_FBC_SET_TEST_PATTERN = 929, - FACTORY_FBC_GET_TEST_PATTERN = 930, - FACTORY_FBC_SET_BACKLIGHT_EN = 931, - FACTORY_FBC_GET_BACKLIGHT_EN = 932, - FACTORY_FBC_SET_LVDS_SSG = 933, - FACTORY_FBC_SET_ELEC_MODE = 934, - FACTORY_FBC_GET_MAINCODE_VERSION = 935, - FACTORY_FBC_PANEL_POWER_SWITCH = 936, - FACTORY_FBC_PANEL_GET_INFO = 937, - FACTORY_FBC_PANEL_SUSPEND = 938, - FACTORY_FBC_SEND_KEY_TO_FBC = 939, - FACTORY_FBC_POWER_REBOOT = 940, - FACTORY_FBC_GET_ELEC_MODE = 941, - FACTORY_FBC_PANEL_USER_SETTING_DEFAULT = 942, - FACTORY_FBC_SET_BACKLIGHT_N360 = 943, - FACTORY_FBC_GET_BACKLIGHT_N360 = 944, - FACTORY_FBC_SET_COLORTEMP_MODE_N360 = 945, - FACTORY_FBC_GET_COLORTEMP_MODE_N360 = 946, - FACTORY_FBC_SET_LOCKN_STATE_N360 = 947, - FACTORY_FBC_TEST_PATTERN = 950, - FACTORY_FBC_VIDEO_MUTE = 951, + //Fac_FBC + FACTORY_FBC_UPGRADE = 900, + FACTORY_FBC_SET_BRIGHTNESS = 901, + FACTORY_FBC_GET_BRIGHTNESS = 902, + FACTORY_FBC_SET_CONTRAST = 903, + FACTORY_FBC_GET_CONTRAST = 904, + FACTORY_FBC_SET_SATURATION = 905, + FACTORY_FBC_GET_SATURATION = 906, + FACTORY_FBC_SET_HUE = 907, + FACTORY_FBC_GET_HUE = 908, + FACTORY_FBC_SET_BACKLIGHT = 909, + FACTORY_FBC_GET_BACKLIGHT = 910, + FACTORY_FBC_SET_PIC_MODE = 911, + FACTORY_FBC_GET_PIC_MODE = 912, + FACTORY_FBC_SET_GAIN_RED = 913, + FACTORY_FBC_GET_GAIN_RED = 914, + FACTORY_FBC_SET_GAIN_GREEN = 915, + FACTORY_FBC_GET_GAIN_GREEN = 916, + FACTORY_FBC_SET_GAIN_BLUE = 917, + FACTORY_FBC_GET_GAIN_BLUE = 918, + FACTORY_FBC_SET_OFFSET_RED = 919, + FACTORY_FBC_GET_OFFSET_RED = 920, + FACTORY_FBC_SET_OFFSET_GREEN = 921, + FACTORY_FBC_GET_OFFSET_GREEN = 922, + FACTORY_FBC_SET_OFFSET_BLUE = 923, + FACTORY_FBC_GET_OFFSET_BLUE = 924, + FACTORY_FBC_SET_COLORTEMP_MODE = 925, + FACTORY_FBC_GET_COLORTEMP_MODE = 926, + FACTORY_FBC_SET_WB_INIT = 927, + FACTORY_FBC_GET_WB_INIT = 928, + FACTORY_FBC_SET_TEST_PATTERN = 929, + FACTORY_FBC_GET_TEST_PATTERN = 930, + FACTORY_FBC_SET_BACKLIGHT_EN = 931, + FACTORY_FBC_GET_BACKLIGHT_EN = 932, + FACTORY_FBC_SET_LVDS_SSG = 933, + FACTORY_FBC_SET_ELEC_MODE = 934, + FACTORY_FBC_GET_MAINCODE_VERSION = 935, + FACTORY_FBC_PANEL_POWER_SWITCH = 936, + FACTORY_FBC_PANEL_GET_INFO = 937, + FACTORY_FBC_PANEL_SUSPEND = 938, + FACTORY_FBC_SEND_KEY_TO_FBC = 939, + FACTORY_FBC_POWER_REBOOT = 940, + FACTORY_FBC_GET_ELEC_MODE = 941, + FACTORY_FBC_PANEL_USER_SETTING_DEFAULT = 942, + FACTORY_FBC_SET_BACKLIGHT_N360 = 943, + FACTORY_FBC_GET_BACKLIGHT_N360 = 944, + FACTORY_FBC_SET_COLORTEMP_MODE_N360 = 945, + FACTORY_FBC_GET_COLORTEMP_MODE_N360 = 946, + FACTORY_FBC_SET_LOCKN_STATE_N360 = 947, + FACTORY_FBC_TEST_PATTERN = 950, + FACTORY_FBC_VIDEO_MUTE = 951, - //T868 for cvt - FACTORY_SETBACKLIGHT_PWM_FREQUENCY = 1000, - FACTORY_GETBACKLIGHT_PWM_FREQUENCY = 1001, - FACTORY_SETBACKLIGHT_SWITCH_STATUS = 1002, - FACTORY_GETBACKLIGHT_SWITCH_STATUS = 1003, - FACTORY_SETBACKLIGHT_PWM_DUTY = 1004, - FACTORY_GETBACKLIGHT_PWM_DUTY = 1005, - FACTORY_SETLVDS_COLOR_DEPTH = 1006, - FACTORY_GETLVDS_COLOR_DEPTH = 1007, - FACTORY_SETLVDS_DITHER_STATUS = 1008, - FACTORY_GETLVDS_DITHER_STATUS = 1009, - FACTORY_SETLVDS_MAPPING_STATUS = 1010, - FACTORY_GETLVDS_MAPPING_STATUS = 1011, - FACTORY_SETLVDS_PORT_SWAP_STATUS = 1012, - FACTORY_GETLVDS_PORT_SWAP_STATUS = 1013, - FACTORY_SET_SN = 1014, - FACTORY_GET_SN = 1015, + //T868 for cvt + FACTORY_SETBACKLIGHT_PWM_FREQUENCY = 1000, + FACTORY_GETBACKLIGHT_PWM_FREQUENCY = 1001, + FACTORY_SETBACKLIGHT_SWITCH_STATUS = 1002, + FACTORY_GETBACKLIGHT_SWITCH_STATUS = 1003, + FACTORY_SETBACKLIGHT_PWM_DUTY = 1004, + FACTORY_GETBACKLIGHT_PWM_DUTY = 1005, + FACTORY_SETLVDS_COLOR_DEPTH = 1006, + FACTORY_GETLVDS_COLOR_DEPTH = 1007, + FACTORY_SETLVDS_DITHER_STATUS = 1008, + FACTORY_GETLVDS_DITHER_STATUS = 1009, + FACTORY_SETLVDS_MAPPING_STATUS = 1010, + FACTORY_GETLVDS_MAPPING_STATUS = 1011, + FACTORY_SETLVDS_PORT_SWAP_STATUS = 1012, + FACTORY_GETLVDS_PORT_SWAP_STATUS = 1013, + FACTORY_SET_SN = 1014, + FACTORY_GET_SN = 1015, - //Uniform White Balance - FACTORY_WHITE_BALANCE_SET_GAIN_RED = 1100, - FACTORY_WHITE_BALANCE_GET_GAIN_RED = 1101, - FACTORY_WHITE_BALANCE_SET_GAIN_GREEN = 1102, - FACTORY_WHITE_BALANCE_GET_GAIN_GREEN = 1103, - FACTORY_WHITE_BALANCE_SET_GAIN_BLUE = 1104, - FACTORY_WHITE_BALANCE_GET_GAIN_BLUE = 1105, - FACTORY_WHITE_BALANCE_SET_OFFSET_RED = 1106, - FACTORY_WHITE_BALANCE_GET_OFFSET_RED = 1107, - FACTORY_WHITE_BALANCE_SET_OFFSET_GREEN = 1108, - FACTORY_WHITE_BALANCE_GET_OFFSET_GREEN = 1109, - FACTORY_WHITE_BALANCE_SET_OFFSET_BLUE = 1110, - FACTORY_WHITE_BALANCE_GET_OFFSET_BLUE = 1111, - FACTORY_WHITE_BALANCE_GET_COLOR_TMP = 1112, - FACTORY_WHITE_BALANCE_SET_COLOR_TMP = 1113, - FACTORY_WHITE_BALANCE_SAVE_PRAMAS = 1114, - FACTORY_WHITE_BALANCE_SET_WB_INIT = 1115, - FACTORY_WHITE_BALANCE_GET_WB_INIT = 1116, - FACTORY_WHITE_BALANCE_SET_GRAY_PATTERN = 1117, - FACTORY_WHITE_BALANCE_GET_GRAY_PATTERN = 1118, - FACTORY_WHITE_BALANCE_OPEN_GRAY_PATTERN = 1119, - FACTORY_WHITE_BALANCE_CLOSE_GRAY_PATTERN = 1120, - FACTORY_WHITE_BALANCE_GET_ALL_PRAMAS = 1121, + //Uniform White Balance + FACTORY_WHITE_BALANCE_SET_GAIN_RED = 1100, + FACTORY_WHITE_BALANCE_GET_GAIN_RED = 1101, + FACTORY_WHITE_BALANCE_SET_GAIN_GREEN = 1102, + FACTORY_WHITE_BALANCE_GET_GAIN_GREEN = 1103, + FACTORY_WHITE_BALANCE_SET_GAIN_BLUE = 1104, + FACTORY_WHITE_BALANCE_GET_GAIN_BLUE = 1105, + FACTORY_WHITE_BALANCE_SET_OFFSET_RED = 1106, + FACTORY_WHITE_BALANCE_GET_OFFSET_RED = 1107, + FACTORY_WHITE_BALANCE_SET_OFFSET_GREEN = 1108, + FACTORY_WHITE_BALANCE_GET_OFFSET_GREEN = 1109, + FACTORY_WHITE_BALANCE_SET_OFFSET_BLUE = 1110, + FACTORY_WHITE_BALANCE_GET_OFFSET_BLUE = 1111, + FACTORY_WHITE_BALANCE_GET_COLOR_TMP = 1112, + FACTORY_WHITE_BALANCE_SET_COLOR_TMP = 1113, + FACTORY_WHITE_BALANCE_SAVE_PRAMAS = 1114, + FACTORY_WHITE_BALANCE_SET_WB_INIT = 1115, + FACTORY_WHITE_BALANCE_GET_WB_INIT = 1116, + FACTORY_WHITE_BALANCE_SET_GRAY_PATTERN = 1117, + FACTORY_WHITE_BALANCE_GET_GRAY_PATTERN = 1118, + FACTORY_WHITE_BALANCE_OPEN_GRAY_PATTERN = 1119, + FACTORY_WHITE_BALANCE_CLOSE_GRAY_PATTERN = 1120, + FACTORY_WHITE_BALANCE_GET_ALL_PRAMAS = 1121, - //dtv - DTV_GET_SUBTITLE_SWITCH = 1380, - DTV_SUBTITLE_INIT = 1381, - DTV_SUBTITLE_LOCK = 1382, - DTV_SUBTITLE_UNLOCK = 1383, - DTV_START_SUBTITLE = 1384, - DTV_STOP_SUBTITLE = 1385, - DTV_GET_SUBTITLE_INDEX = 1386, - DTV_SET_SUBTITLE_INDEX = 1387, - ATV_GET_CURRENT_PROGRAM_ID = 1389, - DTV_GET_CURRENT_PROGRAM_ID = 1390, - ATV_SAVE_PROGRAM_ID = 1391, - DTV_SCAN_MANUAL_BETWEEN_FREQ = 1392, - ATV_GET_MIN_MAX_FREQ = 1393, - DTV_GET_SCAN_FREQUENCY_LIST = 1394, - DTV_GET_CHANNEL_INFO = 1395, - ATV_GET_CHANNEL_INFO = 1396, - ATV_SCAN_MANUAL = 1397, - ATV_SCAN_AUTO = 1398, - DTV_SCAN_MANUAL = 1399, - DTV_SCAN_AUTO = 1400, - TV_SUBTITLE_DRAW_END = 1401, - PLAY_PROGRAM = 1402, - STOP_PROGRAM_PLAY = 1403, - GET_PROGRAM_LIST = 1404, - STOP_SCAN = 1405, - DTV_GET_SNR = 1406, - DTV_GET_BER = 1407, - DTV_GET_STRENGTH = 1408, - DTV_GET_AUDIO_TRACK_NUM = 1409, - DTV_GET_AUDIO_TRACK_INFO = 1410, - DTV_SWITCH_AUDIO_TRACK = 1411, - DTV_GET_EPG_UTC_TIME = 1412, - DTV_GET_CUR_FREQ = 1413, - DTV_GET_EPG_INFO_POINT_IN_TIME = 1414, - DTV_GET_EPG_INFO_DURATION = 1415, - SET_FRONTEND_PARA = 1416, - DTV_SET_PROGRAM_NAME = 1417, - DTV_SET_PROGRAM_SKIPPED = 1418, - DTV_SET_PROGRAM_FAVORITE = 1419, - DTV_DETELE_PROGRAM = 1420, - DTV_SWAP_PROGRAM = 1421, - DTV_SET_PROGRAM_LOCKED = 1422, - DTV_SET_BOOKING_FLAG = 1423, - DTV_GET_BOOKED_EVENT = 1424, - DTV_GET_CURR_AUDIO_TRACK_INDEX = 1425, - DTV_SET_AUDIO_CHANNEL_MOD = 1426, - DTV_GET_AUDIO_CHANNEL_MOD = 1427, - DTV_GET_FREQ_BY_PROG_ID = 1428, - DTV_GET_VIDEO_FMT_INFO = 1429, - DTV_START_RECORD = 1430, - DTV_STOP_RECORD = 1431, - DTV_SET_RECORD_ALL_TS = 1432, - DTV_SCAN_AUTO_ATSC = 1433, - DTV_TEST_1 = 1451, - DTV_TEST_2 = 1452, - DTV_TEST_3 = 1453, - TV_CLEAR_ALL_PROGRAM = 1454, - SET_BLACKOUT_ENABLE = 1455, - START_AUTO_BACKLIGHT = 1456, - STOP_AUTO_BACKLIGHT = 1457, - IS_AUTO_BACKLIGHTING = 1458, - HDMIAV_HOTPLUGDETECT_ONOFF = 1459, - GET_AVERAGE_LUMA = 1480, - GET_AUTO_BACKLIGHT_DATA = 1481, - SET_AUTO_BACKLIGHT_DATA = 1482, - TV_PRINT_DEBUG_INFO = 2000, + //dtv + DTV_GET_SUBTITLE_SWITCH = 1380, + DTV_SUBTITLE_INIT = 1381, + DTV_SUBTITLE_LOCK = 1382, + DTV_SUBTITLE_UNLOCK = 1383, + DTV_START_SUBTITLE = 1384, + DTV_STOP_SUBTITLE = 1385, + DTV_GET_SUBTITLE_INDEX = 1386, + DTV_SET_SUBTITLE_INDEX = 1387, + ATV_GET_CURRENT_PROGRAM_ID = 1389, + DTV_GET_CURRENT_PROGRAM_ID = 1390, + ATV_SAVE_PROGRAM_ID = 1391, + DTV_SCAN_MANUAL_BETWEEN_FREQ = 1392, + ATV_GET_MIN_MAX_FREQ = 1393, + DTV_GET_SCAN_FREQUENCY_LIST = 1394, + DTV_GET_CHANNEL_INFO = 1395, + ATV_GET_CHANNEL_INFO = 1396, + ATV_SCAN_MANUAL = 1397, + ATV_SCAN_AUTO = 1398, + DTV_SCAN_MANUAL = 1399, + DTV_SCAN_AUTO = 1400, + TV_SUBTITLE_DRAW_END = 1401, + PLAY_PROGRAM = 1402, + STOP_PROGRAM_PLAY = 1403, + GET_PROGRAM_LIST = 1404, + STOP_SCAN = 1405, + DTV_GET_SNR = 1406, + DTV_GET_BER = 1407, + DTV_GET_STRENGTH = 1408, + DTV_GET_AUDIO_TRACK_NUM = 1409, + DTV_GET_AUDIO_TRACK_INFO = 1410, + DTV_SWITCH_AUDIO_TRACK = 1411, + DTV_GET_EPG_UTC_TIME = 1412, + DTV_GET_CUR_FREQ = 1413, + DTV_GET_EPG_INFO_POINT_IN_TIME = 1414, + DTV_GET_EPG_INFO_DURATION = 1415, + SET_FRONTEND_PARA = 1416, + DTV_SET_PROGRAM_NAME = 1417, + DTV_SET_PROGRAM_SKIPPED = 1418, + DTV_SET_PROGRAM_FAVORITE = 1419, + DTV_DETELE_PROGRAM = 1420, + DTV_SWAP_PROGRAM = 1421, + DTV_SET_PROGRAM_LOCKED = 1422, + DTV_SET_BOOKING_FLAG = 1423, + DTV_GET_BOOKED_EVENT = 1424, + DTV_GET_CURR_AUDIO_TRACK_INDEX = 1425, + DTV_SET_AUDIO_CHANNEL_MOD = 1426, + DTV_GET_AUDIO_CHANNEL_MOD = 1427, + DTV_GET_FREQ_BY_PROG_ID = 1428, + DTV_GET_VIDEO_FMT_INFO = 1429, + DTV_START_RECORD = 1430, + DTV_STOP_RECORD = 1431, + DTV_SET_RECORD_ALL_TS = 1432, + DTV_SCAN_AUTO_ATSC = 1433, + DTV_TEST_1 = 1451, + DTV_TEST_2 = 1452, + DTV_TEST_3 = 1453, + TV_CLEAR_ALL_PROGRAM = 1454, + SET_BLACKOUT_ENABLE = 1455, + START_AUTO_BACKLIGHT = 1456, + STOP_AUTO_BACKLIGHT = 1457, + IS_AUTO_BACKLIGHTING = 1458, + HDMIAV_HOTPLUGDETECT_ONOFF = 1459, + GET_AVERAGE_LUMA = 1480, + GET_AUTO_BACKLIGHT_DATA = 1481, + SET_AUTO_BACKLIGHT_DATA = 1482, + TV_PRINT_DEBUG_INFO = 2000, - //customer interface - FACTROY_FBC_SET_LIGHT_SENSOR_STATUS_N310 = 3000, - FACTROY_FBC_GET_LIGHT_SENSOR_STATUS_N310 = 3001, - FACTROY_FBC_SET_DREAM_PANEL_STATUS_N310 = 3002, - FACTROY_FBC_GET_DREAM_PANEL_STATUS_N310 = 3003, - SSM_EEPROM_SAVE_ONE_BYTE_N310_N311 = 3004, - SSM_EEPROM_READ_ONE_BYTE_N310_N311 = 3005, - SSM_EEPROM_SAVE_N_BYTES_N310_N311 = 3006, - SSM_EEPROM_READ_N_BYTES_N310_N311 = 3007, - SSM_FLASH_SAVE_ONE_BYTE_N310_N311 = 3008, - SSM_FLASH_READ_ONE_BYTE_N310_N311 = 3009, - SSM_FLASH_SAVE_N_BYTES_N310_N311 = 3010, - SSM_FLASH_READ_N_BYTES_N310_N311 = 3011, - FACTROY_FBC_SET_MULT_PQ_STATUS_N310 = 3012, - FACTROY_FBC_GET_MULT_PQ_STATUS_N310 = 3013, - FACTROY_FBC_SET_MEMC_STATUS_N310 = 3014, - FACTROY_FBC_GET_MEMC_STATUS_N310 = 3015, - FACTROY_FBC_SET_BACKLIGNT_N310 = 3016, - FACTROY_FBC_GET_BACKLIGNT_N310 = 3017, - FACTROY_FBC_SET_COLORTEMP_MODE_N310 = 3018, - FACTROY_FBC_GET_COLORTEMP_MODE_N310 = 3019, - FACTROY_SET_VBYONE_SPREAD_SPECTRUM_N311 = 3020, - FACTROY_GET_VBYONE_SPREAD_SPECTRUM_N311 = 3021, - GET_HISTGRAM_N311 = 3022, - FACTROY_SET_IIC_BUS_ONOFF_N311 = 3023, - FACTROY_GET_IIC_BUS_ONOFF_N311 = 3024, - SET_SPLIT_SCREEN_DEMO_ONOFF_N390 = 3025, - GET_SPLIT_SCREEN_DEMO_ONOFF_N390 = 3026, - FACTROY_FBC_SET_BLUETOOTH_IIS_N310 = 3027, - FACTROY_FBC_GET_BLUETOOTH_IIS_N310 = 3028, - FACTROY_FBC_SET_LED_N310 = 3029, - MISC_SET_2K_TO_4K_SCALE_UP_MODE = 3030, - MISC_GET_2K_TO_4K_SCALE_UP_MODE = 3031, - MISC_SET_FBC_AP_STANDBY_N310 = 3032, - MISC_GET_FBC_AP_STANDBY_N310 = 3033, - MISC_SET_BLUETOOTH_VOL_N311_N310 = 3034, - MISC_GET_BLUETOOTH_VOL_N311_N310 = 3035, + //customer interface + FACTROY_FBC_SET_LIGHT_SENSOR_STATUS_N310 = 3000, + FACTROY_FBC_GET_LIGHT_SENSOR_STATUS_N310 = 3001, + FACTROY_FBC_SET_DREAM_PANEL_STATUS_N310 = 3002, + FACTROY_FBC_GET_DREAM_PANEL_STATUS_N310 = 3003, + SSM_EEPROM_SAVE_ONE_BYTE_N310_N311 = 3004, + SSM_EEPROM_READ_ONE_BYTE_N310_N311 = 3005, + SSM_EEPROM_SAVE_N_BYTES_N310_N311 = 3006, + SSM_EEPROM_READ_N_BYTES_N310_N311 = 3007, + SSM_FLASH_SAVE_ONE_BYTE_N310_N311 = 3008, + SSM_FLASH_READ_ONE_BYTE_N310_N311 = 3009, + SSM_FLASH_SAVE_N_BYTES_N310_N311 = 3010, + SSM_FLASH_READ_N_BYTES_N310_N311 = 3011, + FACTROY_FBC_SET_MULT_PQ_STATUS_N310 = 3012, + FACTROY_FBC_GET_MULT_PQ_STATUS_N310 = 3013, + FACTROY_FBC_SET_MEMC_STATUS_N310 = 3014, + FACTROY_FBC_GET_MEMC_STATUS_N310 = 3015, + FACTROY_FBC_SET_BACKLIGNT_N310 = 3016, + FACTROY_FBC_GET_BACKLIGNT_N310 = 3017, + FACTROY_FBC_SET_COLORTEMP_MODE_N310 = 3018, + FACTROY_FBC_GET_COLORTEMP_MODE_N310 = 3019, + FACTROY_SET_VBYONE_SPREAD_SPECTRUM_N311 = 3020, + FACTROY_GET_VBYONE_SPREAD_SPECTRUM_N311 = 3021, + GET_HISTGRAM_N311 = 3022, + FACTROY_SET_IIC_BUS_ONOFF_N311 = 3023, + FACTROY_GET_IIC_BUS_ONOFF_N311 = 3024, + SET_SPLIT_SCREEN_DEMO_ONOFF_N390 = 3025, + GET_SPLIT_SCREEN_DEMO_ONOFF_N390 = 3026, + FACTROY_FBC_SET_BLUETOOTH_IIS_N310 = 3027, + FACTROY_FBC_GET_BLUETOOTH_IIS_N310 = 3028, + FACTROY_FBC_SET_LED_N310 = 3029, + MISC_SET_2K_TO_4K_SCALE_UP_MODE = 3030, + MISC_GET_2K_TO_4K_SCALE_UP_MODE = 3031, + MISC_SET_FBC_AP_STANDBY_N310 = 3032, + MISC_GET_FBC_AP_STANDBY_N310 = 3033, + MISC_SET_BLUETOOTH_VOL_N311_N310 = 3034, + MISC_GET_BLUETOOTH_VOL_N311_N310 = 3035, - // 2.4G headset - START_OPEN_HEADSET_DETECT = 4000, + // 2.4G headset + START_OPEN_HEADSET_DETECT = 4000, }; diff --git a/tvapi/android/jni/cfbc_jni.cpp b/tvapi/android/jni/cfbc_jni.cpp index e531de7..7ec7d86 100644 --- a/tvapi/android/jni/cfbc_jni.cpp +++ b/tvapi/android/jni/cfbc_jni.cpp @@ -23,145 +23,145 @@ static CFbcCommunication *g_cfbc_handle = NULL; JNIEnv *getJNIEnv(bool *needsDetach) { - JNIEnv *env = NULL; - jint result = -1; - if (m_vm->GetEnv((void **) &env, JNI_VERSION_1_4) != JNI_OK) { - __android_log_print(ANDROID_LOG_INFO, TAG, "ERROR: GetEnv failed\n"); - - int status = m_vm->AttachCurrentThread(&env, NULL); - if (status < 0) { - __android_log_print(ANDROID_LOG_INFO, TAG, "callback_handler: failed to attach current thread"); - return NULL; - } - - *needsDetach = true; - } - - __android_log_print(ANDROID_LOG_INFO, TAG, "GetEnv Success"); - return env; + JNIEnv *env = NULL; + jint result = -1; + if (m_vm->GetEnv((void **) &env, JNI_VERSION_1_4) != JNI_OK) { + __android_log_print(ANDROID_LOG_INFO, TAG, "ERROR: GetEnv failed\n"); + + int status = m_vm->AttachCurrentThread(&env, NULL); + if (status < 0) { + __android_log_print(ANDROID_LOG_INFO, TAG, "callback_handler: failed to attach current thread"); + return NULL; + } + + *needsDetach = true; + } + + __android_log_print(ANDROID_LOG_INFO, TAG, "GetEnv Success"); + return env; } void detachJNI() { - int result = m_vm->DetachCurrentThread(); - if (result != JNI_OK) { - __android_log_print(ANDROID_LOG_INFO, TAG, "thread detach failed: %#x", result); - } + int result = m_vm->DetachCurrentThread(); + if (result != JNI_OK) { + __android_log_print(ANDROID_LOG_INFO, TAG, "thread detach failed: %#x", result); + } } //this data buf is same as cmd buf void java_jni_callback(char *str, int cnt, int data_buf[]) { - char temp_str[MAX_CNT]; - int idx = 0; - if (str != NULL && cnt > 0) { - memset(temp_str, 0, sizeof(temp_str)); - JNI_DBG("java jni string is:\n%s, cnt:%d.", str, cnt); - //strcpy(temp_str, "Call From C/C++!"); - memcpy(temp_str, str, strlen(str) % MAX_CNT); - - if (NULL != jni_local_obj) { - bool needsDetach = false; - jint j_cnt = data_buf[1]; - jint j_data_buf[MAX_CNT]; - for (idx = 0; idx < j_cnt; idx++) { - idx %= MAX_CNT; - j_data_buf[idx] = data_buf[idx]; - JNI_DBG("java_jni_callback the %d data is:0x%x, %d.", idx, j_data_buf[idx], data_buf[idx]); - } - - //jobject obj; - jni_local_env = getJNIEnv(&needsDetach); - //obj = (*jni_local_env)->NewGlobalRef(jni_local_env,jni_local_obj); - jni_local_clz = jni_local_env->GetObjectClass(jni_local_obj); - //this func name and parameters should be same as the callback defined in java code - jni_local_mid = jni_local_env->GetMethodID(jni_local_clz, "android_java_callback", "(Ljava/lang/String;[I)I"); - - jstring str1 = jni_local_env->NewStringUTF(temp_str); - - jintArray cc_data_arr = jni_local_env->NewIntArray(j_cnt); - jni_local_env->SetIntArrayRegion(cc_data_arr, 0, cnt, j_data_buf); - //jint *temp_data = jni_local_env->GetIntArrayElements(cc_data_arr, NULL); - - jint cnt = jni_local_env->CallIntMethod(jni_local_obj, jni_local_mid, str1, cc_data_arr); - - //jni_local_env->ReleaseIntArrayElements(cc_data_arr, temp_data, 0); - //jni_local_env->ReleaseIntArrayElements(cc_cmd_arr, temp_cmd, 0); - JNI_DBG("%s %d be called.", __FUNCTION__, __LINE__); - - if (needsDetach) { - detachJNI(); - } - } - } + char temp_str[MAX_CNT]; + int idx = 0; + if (str != NULL && cnt > 0) { + memset(temp_str, 0, sizeof(temp_str)); + JNI_DBG("java jni string is:\n%s, cnt:%d.", str, cnt); + //strcpy(temp_str, "Call From C/C++!"); + memcpy(temp_str, str, strlen(str) % MAX_CNT); + + if (NULL != jni_local_obj) { + bool needsDetach = false; + jint j_cnt = data_buf[1]; + jint j_data_buf[MAX_CNT]; + for (idx = 0; idx < j_cnt; idx++) { + idx %= MAX_CNT; + j_data_buf[idx] = data_buf[idx]; + JNI_DBG("java_jni_callback the %d data is:0x%x, %d.", idx, j_data_buf[idx], data_buf[idx]); + } + + //jobject obj; + jni_local_env = getJNIEnv(&needsDetach); + //obj = (*jni_local_env)->NewGlobalRef(jni_local_env,jni_local_obj); + jni_local_clz = jni_local_env->GetObjectClass(jni_local_obj); + //this func name and parameters should be same as the callback defined in java code + jni_local_mid = jni_local_env->GetMethodID(jni_local_clz, "android_java_callback", "(Ljava/lang/String;[I)I"); + + jstring str1 = jni_local_env->NewStringUTF(temp_str); + + jintArray cc_data_arr = jni_local_env->NewIntArray(j_cnt); + jni_local_env->SetIntArrayRegion(cc_data_arr, 0, cnt, j_data_buf); + //jint *temp_data = jni_local_env->GetIntArrayElements(cc_data_arr, NULL); + + jint cnt = jni_local_env->CallIntMethod(jni_local_obj, jni_local_mid, str1, cc_data_arr); + + //jni_local_env->ReleaseIntArrayElements(cc_data_arr, temp_data, 0); + //jni_local_env->ReleaseIntArrayElements(cc_cmd_arr, temp_cmd, 0); + JNI_DBG("%s %d be called.", __FUNCTION__, __LINE__); + + if (needsDetach) { + detachJNI(); + } + } + } } //here we needn't to match the java package name static jint jni_java_exec_cmd(JNIEnv *env, jobject obj, jintArray cmdArray) { - jint *arry = env->GetIntArrayElements(cmdArray, NULL); - jint length = env->GetArrayLength(cmdArray); + jint *arry = env->GetIntArrayElements(cmdArray, NULL); + jint length = env->GetArrayLength(cmdArray); - int cmd_cnt = arry[1], idx = 0; - int cmd_array[MAX_CNT]; - memset(cmd_array, 0, sizeof(cmd_array)); - for (idx = 0; idx < cmd_cnt; idx++) - cmd_array[idx] = arry[idx]; + int cmd_cnt = arry[1], idx = 0; + int cmd_array[MAX_CNT]; + memset(cmd_array, 0, sizeof(cmd_array)); + for (idx = 0; idx < cmd_cnt; idx++) + cmd_array[idx] = arry[idx]; - JNI_DBG("%s %s %d be called.", __FILE__, __FUNCTION__, __LINE__); + JNI_DBG("%s %s %d be called.", __FILE__, __FUNCTION__, __LINE__); - if (g_cfbc_handle == NULL) { - g_cfbc_handle = new CFbcCommunication(); - g_cfbc_handle->run("cfbc_thread", 0, 0); - } + if (g_cfbc_handle == NULL) { + g_cfbc_handle = new CFbcCommunication(); + g_cfbc_handle->run("cfbc_thread", 0, 0); + } - //g_cfbc_handle->handleCmd(COMM_DEV_CEC, cmd_array); - //c_exec_cmd(cmd_array); + //g_cfbc_handle->handleCmd(COMM_DEV_CEC, cmd_array); + //c_exec_cmd(cmd_array); - if (NULL == jni_local_obj) { - jni_local_obj = env->NewGlobalRef(obj); - } + if (NULL == jni_local_obj) { + jni_local_obj = env->NewGlobalRef(obj); + } #if 0 - /* this is used to terminate the jni call if needed - ** and we should handle the pthread we create in c layer - */ - if (cmd_array[0] == 0x1002) { - if (NULL != jni_local_obj) - env->DeleteGlobalRef(jni_local_obj); - } + /* this is used to terminate the jni call if needed + ** and we should handle the pthread we create in c layer + */ + if (cmd_array[0] == 0x1002) { + if (NULL != jni_local_obj) + env->DeleteGlobalRef(jni_local_obj); + } #endif - return 0; + return 0; } //the name of 'exec_cmd' should be same as the native func in java code static JNINativeMethod gMethods[] = { - {"exec_cmd", "([I)I", (void *)jni_java_exec_cmd}, + {"exec_cmd", "([I)I", (void *)jni_java_exec_cmd}, }; static int register_android_MyFunc(JNIEnv *env) { - JNI_DBG("%s %s %d be called.", __FILE__, __FUNCTION__, __LINE__); - //the name below should be same as the class name in which native method declared in Java layer - return android::AndroidRuntime::registerNativeMethods(env, "com/fbc/MyFunc", gMethods, NELEM(gMethods)); + JNI_DBG("%s %s %d be called.", __FILE__, __FUNCTION__, __LINE__); + //the name below should be same as the class name in which native method declared in Java layer + return android::AndroidRuntime::registerNativeMethods(env, "com/fbc/MyFunc", gMethods, NELEM(gMethods)); } jint JNI_OnLoad(JavaVM *vm, void *reserved) { - JNIEnv *env = NULL; - JNI_DBG("%s %s %d be called.", __FILE__, __FUNCTION__, __LINE__); - //c_set_callback(&java_jni_callback); - if (vm->GetEnv((void **)&env, JNI_VERSION_1_4) != JNI_OK) { - JNI_DBG("Error GetEnv\n"); - return -1; - } - - assert(env != NULL); - if (register_android_MyFunc(env) < 0) { - JNI_DBG("register_android_test_hdi error.\n"); - return -1; - } - - m_vm = vm; - return JNI_VERSION_1_4; + JNIEnv *env = NULL; + JNI_DBG("%s %s %d be called.", __FILE__, __FUNCTION__, __LINE__); + //c_set_callback(&java_jni_callback); + if (vm->GetEnv((void **)&env, JNI_VERSION_1_4) != JNI_OK) { + JNI_DBG("Error GetEnv\n"); + return -1; + } + + assert(env != NULL); + if (register_android_MyFunc(env) < 0) { + JNI_DBG("register_android_test_hdi error.\n"); + return -1; + } + + m_vm = vm; + return JNI_VERSION_1_4; } diff --git a/tvapi/android/jni/cfbc_test.cpp b/tvapi/android/jni/cfbc_test.cpp index 00efa84..ecba2e6 100644 --- a/tvapi/android/jni/cfbc_test.cpp +++ b/tvapi/android/jni/cfbc_test.cpp @@ -4,40 +4,40 @@ int main(int argc, char **argv) { - int idx = 0, send_buf[128], recv_buf[128], cmd_value = 1, run_flag = 0, run_cnt = 0, cmd_type = 0, read_flag = 0; - printf("run begin.......\n"); - if (argc < 4) { - printf("usage:./libcfbc_jni cmd_type cmd_value run_cnt(all hex mode)\n"); - return 0; - } + int idx = 0, send_buf[128], recv_buf[128], cmd_value = 1, run_flag = 0, run_cnt = 0, cmd_type = 0, read_flag = 0; + printf("run begin.......\n"); + if (argc < 4) { + printf("usage:./libcfbc_jni cmd_type cmd_value run_cnt(all hex mode)\n"); + return 0; + } - cmd_type = strtol(argv[1], NULL, 16); - cmd_value = strtol(argv[2], NULL, 16); - run_cnt = strtol(argv[3], NULL, 16); + cmd_type = strtol(argv[1], NULL, 16); + cmd_value = strtol(argv[2], NULL, 16); + run_cnt = strtol(argv[3], NULL, 16); - CFbcCommunication *cfbcHandle = new CFbcCommunication(); - printf("to test.......\n"); - cfbcHandle->run(); - sleep(0.2); + CFbcCommunication *cfbcHandle = new CFbcCommunication(); + printf("to test.......\n"); + cfbcHandle->run(); + sleep(0.2); - switch (cmd_type) { - default: - for (idx = 0; idx < run_cnt; idx++) { - memset(send_buf, 0, sizeof(send_buf)); - memset(recv_buf, 0, sizeof(recv_buf)); - send_buf[0] = cmd_type; - send_buf[1] = 3; - send_buf[2] = cmd_value; - printf("\n\n======%d to set value is:0x%02x\n", idx, cmd_value); - cfbcHandle->handleCmd(COMM_DEV_SERIAL, send_buf, recv_buf); - sleep(1); - } - break; - } + switch (cmd_type) { + default: + for (idx = 0; idx < run_cnt; idx++) { + memset(send_buf, 0, sizeof(send_buf)); + memset(recv_buf, 0, sizeof(recv_buf)); + send_buf[0] = cmd_type; + send_buf[1] = 3; + send_buf[2] = cmd_value; + printf("\n\n======%d to set value is:0x%02x\n", idx, cmd_value); + cfbcHandle->handleCmd(COMM_DEV_SERIAL, send_buf, recv_buf); + sleep(1); + } + break; + } - printf("wait to exit......\n"); - cfbcHandle->requestExitAndWait(); - delete cfbcHandle; - printf("program exited\n"); - return 0; + printf("wait to exit......\n"); + cfbcHandle->requestExitAndWait(); + delete cfbcHandle; + printf("program exited\n"); + return 0; } diff --git a/tvapi/android/jni/com_droidlogic_app_tv_TvControlManager.cpp b/tvapi/android/jni/com_droidlogic_app_tv_TvControlManager.cpp index 0f815f2..f0fb381 100644 --- a/tvapi/android/jni/com_droidlogic_app_tv_TvControlManager.cpp +++ b/tvapi/android/jni/com_droidlogic_app_tv_TvControlManager.cpp @@ -18,8 +18,8 @@ using namespace android; struct fields_t { - jfieldID context; - jmethodID post_event; + jfieldID context; + jmethodID post_event; }; #ifdef LOG_TAG @@ -31,444 +31,444 @@ static fields_t fields; static Mutex sLock; class JNITvContext: public TvListener { public: - JNITvContext(JNIEnv *env, jobject weak_this, jclass clazz, const sp &tv); - ~JNITvContext() - { - release(); - } - virtual void notify(int32_t msgType, const Parcel &p); - void addCallbackBuffer(JNIEnv *env, jbyteArray cbb); - sp getTv() - { - Mutex::Autolock _l(mLock); - return mTv; - } - void release(); - Parcel *mExtParcel; - SkBitmap *pSubBmp;//for UI subtitle Bitmap - sp mSubMemBase;//for subtitle shar memory to tvapi + JNITvContext(JNIEnv *env, jobject weak_this, jclass clazz, const sp &tv); + ~JNITvContext() + { + release(); + } + virtual void notify(int32_t msgType, const Parcel &p); + void addCallbackBuffer(JNIEnv *env, jbyteArray cbb); + sp getTv() + { + Mutex::Autolock _l(mLock); + return mTv; + } + void release(); + Parcel *mExtParcel; + SkBitmap *pSubBmp;//for UI subtitle Bitmap + sp mSubMemBase;//for subtitle shar memory to tvapi private: - jobject mTvJObjectWeak; // weak reference to java object - jclass mTvJClass; // strong reference to java class - sp mTv; // strong reference to native object - Mutex mLock; - - Vector mCallbackBuffers; // Global reference application managed byte[] - bool mManualBufferMode; // Whether to use application managed buffers. - bool mManualTvCallbackSet; // Whether the callback has been set, used to reduce unnecessary calls to set the callback. + jobject mTvJObjectWeak; // weak reference to java object + jclass mTvJClass; // strong reference to java class + sp mTv; // strong reference to native object + Mutex mLock; + + Vector mCallbackBuffers; // Global reference application managed byte[] + bool mManualBufferMode; // Whether to use application managed buffers. + bool mManualTvCallbackSet; // Whether the callback has been set, used to reduce unnecessary calls to set the callback. }; sp get_native_tv(JNIEnv *env, jobject thiz, JNITvContext **pContext) { - sp tv; - Mutex::Autolock _l(sLock); - JNITvContext *context = reinterpret_cast(env->GetIntField(thiz, fields.context)); - if (context != NULL) { - tv = context->getTv(); - } - if (tv == 0) { - jniThrowException(env, "java/lang/RuntimeException", "Method called after release()"); - } - - if (pContext != NULL) *pContext = context; - return tv; + sp tv; + Mutex::Autolock _l(sLock); + JNITvContext *context = reinterpret_cast(env->GetIntField(thiz, fields.context)); + if (context != NULL) { + tv = context->getTv(); + } + if (tv == 0) { + jniThrowException(env, "java/lang/RuntimeException", "Method called after release()"); + } + + if (pContext != NULL) *pContext = context; + return tv; } JNITvContext::JNITvContext(JNIEnv *env, jobject weak_this, jclass clazz, const sp &tv) { - mTvJObjectWeak = env->NewGlobalRef(weak_this); - mTvJClass = (jclass)env->NewGlobalRef(clazz); - mTv = tv; - ALOGD("tvjni----------------------JNITvContext::JNITvContext("); - mManualBufferMode = false; - mManualTvCallbackSet = false; - pSubBmp = NULL; - mSubMemBase = NULL; - //mExtParcel = parcelForJavaObject(env, ext_parcel); + mTvJObjectWeak = env->NewGlobalRef(weak_this); + mTvJClass = (jclass)env->NewGlobalRef(clazz); + mTv = tv; + ALOGD("tvjni----------------------JNITvContext::JNITvContext("); + mManualBufferMode = false; + mManualTvCallbackSet = false; + pSubBmp = NULL; + mSubMemBase = NULL; + //mExtParcel = parcelForJavaObject(env, ext_parcel); } void JNITvContext::release() { - ALOGD("release"); - Mutex::Autolock _l(mLock); - JNIEnv *env = AndroidRuntime::getJNIEnv(); - - if (mTvJObjectWeak != NULL) { - env->DeleteGlobalRef(mTvJObjectWeak); - mTvJObjectWeak = NULL; - } - if (mTvJClass != NULL) { - env->DeleteGlobalRef(mTvJClass); - mTvJClass = NULL; - } - if (pSubBmp != NULL) { - pSubBmp = NULL; - } - mTv.clear(); + ALOGD("release"); + Mutex::Autolock _l(mLock); + JNIEnv *env = AndroidRuntime::getJNIEnv(); + + if (mTvJObjectWeak != NULL) { + env->DeleteGlobalRef(mTvJObjectWeak); + mTvJObjectWeak = NULL; + } + if (mTvJClass != NULL) { + env->DeleteGlobalRef(mTvJClass); + mTvJClass = NULL; + } + if (pSubBmp != NULL) { + pSubBmp = NULL; + } + mTv.clear(); } // connect to tv service static void com_droidlogic_app_tv_TvControlManager_native_setup(JNIEnv *env, jobject thiz, jobject weak_this) { - sp tv = TvClient::connect(); + sp tv = TvClient::connect(); - ALOGD("com_droidlogic_app_tv_TvControlManager_native_setup."); + ALOGD("com_droidlogic_app_tv_TvControlManager_native_setup."); - if (tv == NULL) { - jniThrowException(env, "java/lang/RuntimeException", "Fail to connect to tv service"); - return; - } + if (tv == NULL) { + jniThrowException(env, "java/lang/RuntimeException", "Fail to connect to tv service"); + return; + } - // make sure tv amlogic is alive - if (tv->getStatus() != NO_ERROR) { - jniThrowException(env, "java/lang/RuntimeException", "Tv initialization failed!"); - return; - } + // make sure tv amlogic is alive + if (tv->getStatus() != NO_ERROR) { + jniThrowException(env, "java/lang/RuntimeException", "Tv initialization failed!"); + return; + } - jclass clazz = env->GetObjectClass(thiz); - if (clazz == NULL) { - jniThrowException(env, "java/lang/RuntimeException", "Can't find com/droidlogic/app/tv/TvControlManager!"); - return; - } + jclass clazz = env->GetObjectClass(thiz); + if (clazz == NULL) { + jniThrowException(env, "java/lang/RuntimeException", "Can't find com/droidlogic/app/tv/TvControlManager!"); + return; + } - sp context = new JNITvContext(env, weak_this, clazz, tv); - context->incStrong(thiz); - tv->setListener(context); + sp context = new JNITvContext(env, weak_this, clazz, tv); + context->incStrong(thiz); + tv->setListener(context); - env->SetIntField(thiz, fields.context, (int)context.get()); + env->SetIntField(thiz, fields.context, (int)context.get()); } static void com_droidlogic_app_tv_TvControlManager_release(JNIEnv *env, jobject thiz) { - // TODO: Change to LOGE - JNITvContext *context = NULL; - sp tv; - { - Mutex::Autolock _l(sLock); - context = reinterpret_cast(env->GetIntField(thiz, fields.context)); - - // Make sure we do not attempt to callback on a deleted Java object. - env->SetIntField(thiz, fields.context, 0); - } - - ALOGD("release tv"); - - // clean up if release has not been called before - if (context != NULL) { - tv = context->getTv(); - context->release(); - ALOGD("native_release: context=%p tv=%p", context, tv.get()); - - // clear callbacks - if (tv != NULL) { - //tv->setPreviewCallbackFlags(FRAME_CALLBACK_FLAG_NOOP); - tv->disconnect(); - } - - // remove context to prevent further Java access - context->decStrong(thiz); - } + // TODO: Change to LOGE + JNITvContext *context = NULL; + sp tv; + { + Mutex::Autolock _l(sLock); + context = reinterpret_cast(env->GetIntField(thiz, fields.context)); + + // Make sure we do not attempt to callback on a deleted Java object. + env->SetIntField(thiz, fields.context, 0); + } + + ALOGD("release tv"); + + // clean up if release has not been called before + if (context != NULL) { + tv = context->getTv(); + context->release(); + ALOGD("native_release: context=%p tv=%p", context, tv.get()); + + // clear callbacks + if (tv != NULL) { + //tv->setPreviewCallbackFlags(FRAME_CALLBACK_FLAG_NOOP); + tv->disconnect(); + } + + // remove context to prevent further Java access + context->decStrong(thiz); + } } void JNITvContext::notify(int32_t msgType, const Parcel &p) { - // VM pointer will be NULL if object is released - Mutex::Autolock _l(mLock); - if (mTvJObjectWeak == NULL) { - ALOGW("callback on dead tv object"); - return; - } - if (msgType == SUBTITLE_UPDATE_CALLBACK) { - if (pSubBmp) { - SkAutoLockPixels alp(*pSubBmp); - char *pDst = (char *) pSubBmp->getPixels(); - char *pBuf = (char *) mSubMemBase->pointer(); - for (int i = 0; i < pSubBmp->width() * pSubBmp->height() * 4; i++) { - pDst[i] = pBuf[i]; - } - pSubBmp->notifyPixelsChanged(); - } - } - - JNIEnv *env = AndroidRuntime::getJNIEnv(); - - jobject jParcel = createJavaParcelObject(env); - if (jParcel != NULL) { - Parcel *nativeParcel = parcelForJavaObject(env, jParcel); - nativeParcel->write(p.data(), p.dataSize()); - env->CallStaticVoidMethod(mTvJClass, fields.post_event, mTvJObjectWeak, msgType, jParcel); - env->DeleteLocalRef(jParcel); - } + // VM pointer will be NULL if object is released + Mutex::Autolock _l(mLock); + if (mTvJObjectWeak == NULL) { + ALOGW("callback on dead tv object"); + return; + } + if (msgType == SUBTITLE_UPDATE_CALLBACK) { + if (pSubBmp) { + SkAutoLockPixels alp(*pSubBmp); + char *pDst = (char *) pSubBmp->getPixels(); + char *pBuf = (char *) mSubMemBase->pointer(); + for (int i = 0; i < pSubBmp->width() * pSubBmp->height() * 4; i++) { + pDst[i] = pBuf[i]; + } + pSubBmp->notifyPixelsChanged(); + } + } + + JNIEnv *env = AndroidRuntime::getJNIEnv(); + + jobject jParcel = createJavaParcelObject(env); + if (jParcel != NULL) { + Parcel *nativeParcel = parcelForJavaObject(env, jParcel); + nativeParcel->write(p.data(), p.dataSize()); + env->CallStaticVoidMethod(mTvJClass, fields.post_event, mTvJObjectWeak, msgType, jParcel); + env->DeleteLocalRef(jParcel); + } } void JNITvContext::addCallbackBuffer(JNIEnv *env, jbyteArray cbb) { - if (cbb != NULL) { - Mutex::Autolock _l(mLock); - jbyteArray callbackBuffer = (jbyteArray)env->NewGlobalRef(cbb); - mCallbackBuffers.push(cbb); - ALOGD("Adding callback buffer to queue, %d total", mCallbackBuffers.size()); - } else { - ALOGE("Null byte array!"); - } + if (cbb != NULL) { + Mutex::Autolock _l(mLock); + jbyteArray callbackBuffer = (jbyteArray)env->NewGlobalRef(cbb); + mCallbackBuffers.push(cbb); + ALOGD("Adding callback buffer to queue, %d total", mCallbackBuffers.size()); + } else { + ALOGE("Null byte array!"); + } } static jint com_droidlogic_app_tv_TvControlManager_processCmd(JNIEnv *env, jobject thiz, jobject pObj, jobject rObj) { - sp tv = get_native_tv(env, thiz, NULL); - if (tv == 0) return -1; + sp tv = get_native_tv(env, thiz, NULL); + if (tv == 0) return -1; - Parcel *p = parcelForJavaObject(env, pObj); - //jclass clazz; - //clazz = env->FindClass("android/os/Parcel"); - //LOG_FATAL_IF(clazz == NULL, "Unable to find class android.os.Parcel"); + Parcel *p = parcelForJavaObject(env, pObj); + //jclass clazz; + //clazz = env->FindClass("android/os/Parcel"); + //LOG_FATAL_IF(clazz == NULL, "Unable to find class android.os.Parcel"); - //jmethodID mConstructor = env->GetMethodID(clazz, "", "(I)V"); - //jobject replayobj = env->NewObject(clazz, mConstructor, 0); - Parcel *r = parcelForJavaObject(env, rObj); + //jmethodID mConstructor = env->GetMethodID(clazz, "", "(I)V"); + //jobject replayobj = env->NewObject(clazz, mConstructor, 0); + Parcel *r = parcelForJavaObject(env, rObj); - return tv->processCmd(*p, r); - //if ( != NO_ERROR) { - // jniThrowException(env, "java/lang/RuntimeException", "StartTv failed"); - // return -1; - // } - //return 0; + return tv->processCmd(*p, r); + //if ( != NO_ERROR) { + // jniThrowException(env, "java/lang/RuntimeException", "StartTv failed"); + // return -1; + // } + //return 0; } static void com_droidlogic_app_tv_TvControlManager_addCallbackBuffer(JNIEnv *env, jobject thiz, jbyteArray bytes) { - JNITvContext *context = reinterpret_cast(env->GetIntField(thiz, fields.context)); + JNITvContext *context = reinterpret_cast(env->GetIntField(thiz, fields.context)); - ALOGD("addCallbackBuffer"); - if (context != NULL) { - context->addCallbackBuffer(env, bytes); - } + ALOGD("addCallbackBuffer"); + if (context != NULL) { + context->addCallbackBuffer(env, bytes); + } } static void com_droidlogic_app_tv_TvControlManager_reconnect(JNIEnv *env, jobject thiz) { - sp tv = get_native_tv(env, thiz, NULL); - if (tv == 0) return; + sp tv = get_native_tv(env, thiz, NULL); + if (tv == 0) return; - if (tv->reconnect() != NO_ERROR) { - jniThrowException(env, "java/io/IOException", "reconnect failed"); - return; - } + if (tv->reconnect() != NO_ERROR) { + jniThrowException(env, "java/io/IOException", "reconnect failed"); + return; + } } static void com_droidlogic_app_tv_TvControlManager_lock(JNIEnv *env, jobject thiz) { - sp tv = get_native_tv(env, thiz, NULL); - if (tv == 0) return; + sp tv = get_native_tv(env, thiz, NULL); + if (tv == 0) return; - ALOGD("lock"); + ALOGD("lock"); - if (tv->lock() != NO_ERROR) { - jniThrowException(env, "java/lang/RuntimeException", "lock failed"); - } + if (tv->lock() != NO_ERROR) { + jniThrowException(env, "java/lang/RuntimeException", "lock failed"); + } } static void com_droidlogic_app_tv_TvControlManager_unlock(JNIEnv *env, jobject thiz) { - sp tv = get_native_tv(env, thiz, NULL); - if (tv == 0) return; + sp tv = get_native_tv(env, thiz, NULL); + if (tv == 0) return; - ALOGD("unlock"); + ALOGD("unlock"); - if (tv->unlock() != NO_ERROR) { - jniThrowException(env, "java/lang/RuntimeException", "unlock failed"); - } + if (tv->unlock() != NO_ERROR) { + jniThrowException(env, "java/lang/RuntimeException", "unlock failed"); + } } static void com_droidlogic_app_tv_TvControlManager_create_subtitle_bitmap(JNIEnv *env, jobject thiz, jobject bmpobj) { - ALOGD("create subtitle bmp"); - JNITvContext *context = reinterpret_cast(env->GetIntField(thiz, fields.context)); - sp tv = get_native_tv(env, thiz, NULL); - if (tv == 0) return; - - //get skbitmap - jclass bmp_clazz; - jfieldID skbmp_fid; - jint hbmp; - bmp_clazz = env->FindClass("android/graphics/Bitmap"); - skbmp_fid = env->GetFieldID(bmp_clazz, "mNativeBitmap", "I"); - hbmp = env->GetIntField(bmpobj, skbmp_fid); - context->pSubBmp = reinterpret_cast(hbmp); - env->DeleteLocalRef(bmp_clazz); - - //alloc share mem - sp MemHeap = new MemoryHeapBase(context->pSubBmp->width()*context->pSubBmp->height() * 4, 0, "subtitle bmp"); - ALOGD("heap id = %d", MemHeap->getHeapID()); - if (MemHeap->getHeapID() < 0) { - return; - } - context->pSubBmp->lockPixels(); - context->mSubMemBase = new MemoryBase(MemHeap, 0, context->pSubBmp->width()*context->pSubBmp->height() * 4); - - - //send share mem to server - tv->createSubtitle(context->mSubMemBase); - return; + ALOGD("create subtitle bmp"); + JNITvContext *context = reinterpret_cast(env->GetIntField(thiz, fields.context)); + sp tv = get_native_tv(env, thiz, NULL); + if (tv == 0) return; + + //get skbitmap + jclass bmp_clazz; + jfieldID skbmp_fid; + jint hbmp; + bmp_clazz = env->FindClass("android/graphics/Bitmap"); + skbmp_fid = env->GetFieldID(bmp_clazz, "mNativeBitmap", "I"); + hbmp = env->GetIntField(bmpobj, skbmp_fid); + context->pSubBmp = reinterpret_cast(hbmp); + env->DeleteLocalRef(bmp_clazz); + + //alloc share mem + sp MemHeap = new MemoryHeapBase(context->pSubBmp->width()*context->pSubBmp->height() * 4, 0, "subtitle bmp"); + ALOGD("heap id = %d", MemHeap->getHeapID()); + if (MemHeap->getHeapID() < 0) { + return; + } + context->pSubBmp->lockPixels(); + context->mSubMemBase = new MemoryBase(MemHeap, 0, context->pSubBmp->width()*context->pSubBmp->height() * 4); + + + //send share mem to server + tv->createSubtitle(context->mSubMemBase); + return; } static void com_droidlogic_app_tv_TvControlManager_create_video_frame_bitmap(JNIEnv *env, jobject thiz, jobject bmpobj, jint inputSourceMode, jint iCapVideoLayer ) { - ALOGD("create video frame bmp"); - sp tv = get_native_tv(env, thiz, NULL); - if (tv == 0) return; - - //get skbitmap - jclass bmp_clazz; - jfieldID skbmp_fid; - jint hbmp; - bmp_clazz = env->FindClass("android/graphics/Bitmap"); - skbmp_fid = env->GetFieldID(bmp_clazz, "mNativeBitmap", "I"); - hbmp = env->GetIntField(bmpobj, skbmp_fid); - SkBitmap *pSkBmp = reinterpret_cast(hbmp); - ALOGD("pSkBmp = %d", hbmp); - ALOGD("bmp width = %d height = %d", pSkBmp->width(), pSkBmp->height()); - env->DeleteLocalRef(bmp_clazz); - - //alloc share mem - sp MemHeap = new MemoryHeapBase(1920 * 1080 * 4, 0, "video frame bmp"); - ALOGD("heap id = %d", MemHeap->getHeapID()); - if (MemHeap->getHeapID() < 0) { - return; - } - sp MemBase = new MemoryBase(MemHeap, 0, 1920 * 1080 * 4); - pSkBmp->setPixels(MemBase->pointer()); - - - //send share mem to server - tv->createVideoFrame(MemBase, inputSourceMode, iCapVideoLayer); - return; + ALOGD("create video frame bmp"); + sp tv = get_native_tv(env, thiz, NULL); + if (tv == 0) return; + + //get skbitmap + jclass bmp_clazz; + jfieldID skbmp_fid; + jint hbmp; + bmp_clazz = env->FindClass("android/graphics/Bitmap"); + skbmp_fid = env->GetFieldID(bmp_clazz, "mNativeBitmap", "I"); + hbmp = env->GetIntField(bmpobj, skbmp_fid); + SkBitmap *pSkBmp = reinterpret_cast(hbmp); + ALOGD("pSkBmp = %d", hbmp); + ALOGD("bmp width = %d height = %d", pSkBmp->width(), pSkBmp->height()); + env->DeleteLocalRef(bmp_clazz); + + //alloc share mem + sp MemHeap = new MemoryHeapBase(1920 * 1080 * 4, 0, "video frame bmp"); + ALOGD("heap id = %d", MemHeap->getHeapID()); + if (MemHeap->getHeapID() < 0) { + return; + } + sp MemBase = new MemoryBase(MemHeap, 0, 1920 * 1080 * 4); + pSkBmp->setPixels(MemBase->pointer()); + + + //send share mem to server + tv->createVideoFrame(MemBase, inputSourceMode, iCapVideoLayer); + return; } //------------------------------------------------- static JNINativeMethod camMethods[] = { - { - "native_setup", - "(Ljava/lang/Object;)V", - (void *)com_droidlogic_app_tv_TvControlManager_native_setup - }, - { - "native_release", - "()V", - (void *)com_droidlogic_app_tv_TvControlManager_release - }, - { - "processCmd", - "(Landroid/os/Parcel;Landroid/os/Parcel;)I", - (void *)com_droidlogic_app_tv_TvControlManager_processCmd - }, - { - "addCallbackBuffer", - "([B)V", - (void *)com_droidlogic_app_tv_TvControlManager_addCallbackBuffer - }, - { - "reconnect", - "()V", - (void *)com_droidlogic_app_tv_TvControlManager_reconnect - }, - { - "lock", - "()V", - (void *)com_droidlogic_app_tv_TvControlManager_lock - }, - { - "unlock", - "()V", - (void *)com_droidlogic_app_tv_TvControlManager_unlock - }, - { - "native_create_subtitle_bitmap", - "(Ljava/lang/Object;)V", - (void *)com_droidlogic_app_tv_TvControlManager_create_subtitle_bitmap - }, - { - "native_create_video_frame_bitmap", - "(Ljava/lang/Object;)V", - (void *)com_droidlogic_app_tv_TvControlManager_create_video_frame_bitmap - }, + { + "native_setup", + "(Ljava/lang/Object;)V", + (void *)com_droidlogic_app_tv_TvControlManager_native_setup + }, + { + "native_release", + "()V", + (void *)com_droidlogic_app_tv_TvControlManager_release + }, + { + "processCmd", + "(Landroid/os/Parcel;Landroid/os/Parcel;)I", + (void *)com_droidlogic_app_tv_TvControlManager_processCmd + }, + { + "addCallbackBuffer", + "([B)V", + (void *)com_droidlogic_app_tv_TvControlManager_addCallbackBuffer + }, + { + "reconnect", + "()V", + (void *)com_droidlogic_app_tv_TvControlManager_reconnect + }, + { + "lock", + "()V", + (void *)com_droidlogic_app_tv_TvControlManager_lock + }, + { + "unlock", + "()V", + (void *)com_droidlogic_app_tv_TvControlManager_unlock + }, + { + "native_create_subtitle_bitmap", + "(Ljava/lang/Object;)V", + (void *)com_droidlogic_app_tv_TvControlManager_create_subtitle_bitmap + }, + { + "native_create_video_frame_bitmap", + "(Ljava/lang/Object;)V", + (void *)com_droidlogic_app_tv_TvControlManager_create_video_frame_bitmap + }, }; struct field { - const char *class_name; - const char *field_name; - const char *field_type; - jfieldID *jfield; + const char *class_name; + const char *field_name; + const char *field_type; + jfieldID *jfield; }; static int find_fields(JNIEnv *env, field *fields, int count) { - for (int i = 0; i < count; i++) { - field *f = &fields[i]; - jclass clazz = env->FindClass(f->class_name); - if (clazz == NULL) { - ALOGE("Can't find %s", f->class_name); - return -1; - } - - jfieldID field = env->GetFieldID(clazz, f->field_name, f->field_type); - if (field == NULL) { - ALOGE("Can't find %s.%s", f->class_name, f->field_name); - return -1; - } - - *(f->jfield) = field; - } - - return 0; + for (int i = 0; i < count; i++) { + field *f = &fields[i]; + jclass clazz = env->FindClass(f->class_name); + if (clazz == NULL) { + ALOGE("Can't find %s", f->class_name); + return -1; + } + + jfieldID field = env->GetFieldID(clazz, f->field_name, f->field_type); + if (field == NULL) { + ALOGE("Can't find %s.%s", f->class_name, f->field_name); + return -1; + } + + *(f->jfield) = field; + } + + return 0; } // Get all the required offsets in java class and register native functions int register_com_droidlogic_app_tv_TvControlManager(JNIEnv *env) { - field fields_to_find[] = { - { "com/droidlogic/app/tv/TvControlManager", "mNativeContext", "I", &fields.context } - }; + field fields_to_find[] = { + { "com/droidlogic/app/tv/TvControlManager", "mNativeContext", "I", &fields.context } + }; - ALOGD("register_com_droidlogic_app_tv_TvControlManager."); + ALOGD("register_com_droidlogic_app_tv_TvControlManager."); - if (find_fields(env, fields_to_find, NELEM(fields_to_find)) < 0) - return -1; + if (find_fields(env, fields_to_find, NELEM(fields_to_find)) < 0) + return -1; - jclass clazz = env->FindClass("com/droidlogic/app/tv/TvControlManager"); - fields.post_event = env->GetStaticMethodID(clazz, "postEventFromNative", "(Ljava/lang/Object;ILandroid/os/Parcel;)V"); - if (fields.post_event == NULL) { - ALOGE("Can't find com/droidlogic/app/tv/TvControlManager.postEventFromNative"); - return -1; - } + jclass clazz = env->FindClass("com/droidlogic/app/tv/TvControlManager"); + fields.post_event = env->GetStaticMethodID(clazz, "postEventFromNative", "(Ljava/lang/Object;ILandroid/os/Parcel;)V"); + if (fields.post_event == NULL) { + ALOGE("Can't find com/droidlogic/app/tv/TvControlManager.postEventFromNative"); + return -1; + } - // Register native functions - return AndroidRuntime::registerNativeMethods(env, "com/droidlogic/app/tv/TvControlManager", camMethods, NELEM(camMethods)); + // Register native functions + return AndroidRuntime::registerNativeMethods(env, "com/droidlogic/app/tv/TvControlManager", camMethods, NELEM(camMethods)); } jint JNI_OnLoad(JavaVM *vm, void *reserved) { - JNIEnv *env = NULL; - jint result = -1; + JNIEnv *env = NULL; + jint result = -1; - if (vm->GetEnv((void **) &env, JNI_VERSION_1_4) != JNI_OK) { - ALOGE("ERROR: GetEnv failed\n"); - goto bail; - } - assert(env != NULL); + if (vm->GetEnv((void **) &env, JNI_VERSION_1_4) != JNI_OK) { + ALOGE("ERROR: GetEnv failed\n"); + goto bail; + } + assert(env != NULL); - register_com_droidlogic_app_tv_TvControlManager(env); + register_com_droidlogic_app_tv_TvControlManager(env); - /* success -- return valid version number */ - result = JNI_VERSION_1_4; + /* success -- return valid version number */ + result = JNI_VERSION_1_4; bail: - return result; + return result; } diff --git a/tvapi/android/libtvbinder/ITv.cpp b/tvapi/android/libtvbinder/ITv.cpp index 0be4f87..5988713 100644 --- a/tvapi/android/libtvbinder/ITv.cpp +++ b/tvapi/android/libtvbinder/ITv.cpp @@ -7,142 +7,142 @@ #include enum { - DISCONNECT = IBinder::FIRST_CALL_TRANSACTION, - START_PREVIEW, - SEND_COMMAND, - CONNECT, - LOCK, - UNLOCK, - TV_CMD, - TV_CREATE_SUBTITLE, - TV_CREATE_VIDEO_FRAME, + DISCONNECT = IBinder::FIRST_CALL_TRANSACTION, + START_PREVIEW, + SEND_COMMAND, + CONNECT, + LOCK, + UNLOCK, + TV_CMD, + TV_CREATE_SUBTITLE, + TV_CREATE_VIDEO_FRAME, }; class BpTv: public BpInterface { public: - BpTv(const sp &impl) - : BpInterface(impl) - { - } + BpTv(const sp &impl) + : BpInterface(impl) + { + } - // disconnect from tv service - void disconnect() - { - Parcel data, reply; - data.writeInterfaceToken(ITv::getInterfaceDescriptor()); - remote()->transact(DISCONNECT, data, &reply); - } + // disconnect from tv service + void disconnect() + { + Parcel data, reply; + data.writeInterfaceToken(ITv::getInterfaceDescriptor()); + remote()->transact(DISCONNECT, data, &reply); + } - status_t processCmd(const Parcel &p, Parcel *r) - { - Parcel data, reply; - data.writeInterfaceToken(ITv::getInterfaceDescriptor()); - data.write(p.data(), p.dataSize()); - remote()->transact(TV_CMD, data, &reply); - r->write(reply.data(), reply.dataSize()); - r->setDataPosition(0); - return 0; - } + status_t processCmd(const Parcel &p, Parcel *r) + { + Parcel data, reply; + data.writeInterfaceToken(ITv::getInterfaceDescriptor()); + data.write(p.data(), p.dataSize()); + remote()->transact(TV_CMD, data, &reply); + r->write(reply.data(), reply.dataSize()); + r->setDataPosition(0); + return 0; + } - virtual status_t createVideoFrame(const sp &share_mem, int iSourceMode, int iCapVideoLayerOnly) - { - Parcel data, reply; - data.writeInterfaceToken(ITv::getInterfaceDescriptor()); - data.writeStrongBinder(IInterface::asBinder(share_mem)); - data.writeInt32(iSourceMode); - data.writeInt32(iCapVideoLayerOnly); - remote()->transact(TV_CREATE_VIDEO_FRAME, data, &reply); - return reply.readInt32(); - } + virtual status_t createVideoFrame(const sp &share_mem, int iSourceMode, int iCapVideoLayerOnly) + { + Parcel data, reply; + data.writeInterfaceToken(ITv::getInterfaceDescriptor()); + data.writeStrongBinder(IInterface::asBinder(share_mem)); + data.writeInt32(iSourceMode); + data.writeInt32(iCapVideoLayerOnly); + remote()->transact(TV_CREATE_VIDEO_FRAME, data, &reply); + return reply.readInt32(); + } - virtual status_t createSubtitle(const sp &share_mem) - { - Parcel data, reply; - data.writeInterfaceToken(ITv::getInterfaceDescriptor()); - data.writeStrongBinder(IInterface::asBinder(share_mem)); - remote()->transact(TV_CREATE_SUBTITLE, data, &reply); - return reply.readInt32(); - } - virtual status_t connect(const sp &tvClient) - { - Parcel data, reply; - data.writeInterfaceToken(ITv::getInterfaceDescriptor()); - data.writeStrongBinder(IInterface::asBinder(tvClient)); - remote()->transact(CONNECT, data, &reply); - return reply.readInt32(); - } - virtual status_t lock() - { - Parcel data, reply; - data.writeInterfaceToken(ITv::getInterfaceDescriptor()); - remote()->transact(LOCK, data, &reply); - return reply.readInt32(); - } - virtual status_t unlock() - { - Parcel data, reply; - data.writeInterfaceToken(ITv::getInterfaceDescriptor()); - remote()->transact(UNLOCK, data, &reply); - return reply.readInt32(); - } + virtual status_t createSubtitle(const sp &share_mem) + { + Parcel data, reply; + data.writeInterfaceToken(ITv::getInterfaceDescriptor()); + data.writeStrongBinder(IInterface::asBinder(share_mem)); + remote()->transact(TV_CREATE_SUBTITLE, data, &reply); + return reply.readInt32(); + } + virtual status_t connect(const sp &tvClient) + { + Parcel data, reply; + data.writeInterfaceToken(ITv::getInterfaceDescriptor()); + data.writeStrongBinder(IInterface::asBinder(tvClient)); + remote()->transact(CONNECT, data, &reply); + return reply.readInt32(); + } + virtual status_t lock() + { + Parcel data, reply; + data.writeInterfaceToken(ITv::getInterfaceDescriptor()); + remote()->transact(LOCK, data, &reply); + return reply.readInt32(); + } + virtual status_t unlock() + { + Parcel data, reply; + data.writeInterfaceToken(ITv::getInterfaceDescriptor()); + remote()->transact(UNLOCK, data, &reply); + return reply.readInt32(); + } }; IMPLEMENT_META_INTERFACE(Tv, "android.amlogic.ITv"); status_t BnTv::onTransact( - uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags) + uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags) { - switch (code) { - case DISCONNECT: { - CHECK_INTERFACE(ITv, data, reply); - disconnect(); - return NO_ERROR; - } - break; - case CONNECT: { - CHECK_INTERFACE(ITv, data, reply); - sp tvClient = interface_cast(data.readStrongBinder()); - reply->writeInt32(connect(tvClient)); - return NO_ERROR; - } - break; - case LOCK: { - CHECK_INTERFACE(ITv, data, reply); - reply->writeInt32(lock()); - return NO_ERROR; - } - break; - case UNLOCK: { - CHECK_INTERFACE(ITv, data, reply); - reply->writeInt32(unlock()); - return NO_ERROR; - } - break; - case TV_CMD: { - CHECK_INTERFACE(ITv, data, reply); - processCmd(data, reply); - //reply->write(tmp.data(), tmp.dataSize()); - return NO_ERROR; - } - case TV_CREATE_SUBTITLE: { - CHECK_INTERFACE(ITv, data, reply); - sp buffer = interface_cast(data.readStrongBinder()); - createSubtitle(buffer); - //reply->write(tmp.data(), tmp.dataSize()); - return NO_ERROR; - } - case TV_CREATE_VIDEO_FRAME: { - CHECK_INTERFACE(ITv, data, reply); - sp buffer = interface_cast(data.readStrongBinder()); - int srcMode = data.readInt32(); - int capVideoLayerOnly = data.readInt32(); - createVideoFrame(buffer, srcMode, capVideoLayerOnly); - //reply->write(tmp.data(), tmp.dataSize()); - return NO_ERROR; - } - break; - default: - return BBinder::onTransact(code, data, reply, flags); - } + switch (code) { + case DISCONNECT: { + CHECK_INTERFACE(ITv, data, reply); + disconnect(); + return NO_ERROR; + } + break; + case CONNECT: { + CHECK_INTERFACE(ITv, data, reply); + sp tvClient = interface_cast(data.readStrongBinder()); + reply->writeInt32(connect(tvClient)); + return NO_ERROR; + } + break; + case LOCK: { + CHECK_INTERFACE(ITv, data, reply); + reply->writeInt32(lock()); + return NO_ERROR; + } + break; + case UNLOCK: { + CHECK_INTERFACE(ITv, data, reply); + reply->writeInt32(unlock()); + return NO_ERROR; + } + break; + case TV_CMD: { + CHECK_INTERFACE(ITv, data, reply); + processCmd(data, reply); + //reply->write(tmp.data(), tmp.dataSize()); + return NO_ERROR; + } + case TV_CREATE_SUBTITLE: { + CHECK_INTERFACE(ITv, data, reply); + sp buffer = interface_cast(data.readStrongBinder()); + createSubtitle(buffer); + //reply->write(tmp.data(), tmp.dataSize()); + return NO_ERROR; + } + case TV_CREATE_VIDEO_FRAME: { + CHECK_INTERFACE(ITv, data, reply); + sp buffer = interface_cast(data.readStrongBinder()); + int srcMode = data.readInt32(); + int capVideoLayerOnly = data.readInt32(); + createVideoFrame(buffer, srcMode, capVideoLayerOnly); + //reply->write(tmp.data(), tmp.dataSize()); + return NO_ERROR; + } + break; + default: + return BBinder::onTransact(code, data, reply, flags); + } } diff --git a/tvapi/android/libtvbinder/ITvClient.cpp b/tvapi/android/libtvbinder/ITvClient.cpp index 8ade96e..0c450af 100644 --- a/tvapi/android/libtvbinder/ITvClient.cpp +++ b/tvapi/android/libtvbinder/ITvClient.cpp @@ -5,26 +5,26 @@ #include #include "../include/tvcmd.h" enum { - NOTIFY_CALLBACK = IBinder::FIRST_CALL_TRANSACTION, + NOTIFY_CALLBACK = IBinder::FIRST_CALL_TRANSACTION, }; class BpTvClient: public BpInterface { public: - BpTvClient(const sp &impl) : - BpInterface (impl) - { - } - - // generic callback from tv service to app - void notifyCallback(int32_t msgType, const Parcel &p) - { - ALOGV("BpTvClient notifyCallback datasize = %d pos = %d", p.dataSize(), p.dataPosition()); - Parcel data, reply; - data.writeInterfaceToken(ITvClient::getInterfaceDescriptor()); - data.writeInt32(msgType); - data.write(p.data(), p.dataSize()); - remote()->transact(NOTIFY_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); - } + BpTvClient(const sp &impl) : + BpInterface (impl) + { + } + + // generic callback from tv service to app + void notifyCallback(int32_t msgType, const Parcel &p) + { + ALOGV("BpTvClient notifyCallback datasize = %d pos = %d", p.dataSize(), p.dataPosition()); + Parcel data, reply; + data.writeInterfaceToken(ITvClient::getInterfaceDescriptor()); + data.writeInt32(msgType); + data.write(p.data(), p.dataSize()); + remote()->transact(NOTIFY_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); + } }; IMPLEMENT_META_INTERFACE(TvClient, "android.amlogic.ITvClient"); @@ -32,27 +32,27 @@ IMPLEMENT_META_INTERFACE(TvClient, "android.amlogic.ITvClient"); // ---------------------------------------------------------------------- status_t BnTvClient::onTransact(uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags) { - int i = 0, loop_count = 0; - - switch (code) { - case NOTIFY_CALLBACK: { - CHECK_INTERFACE(ITvClient, data, reply); - Parcel ext; - int32_t msgType = data.readInt32(); - - ext.appendFrom(const_cast(&data), data.dataPosition(), data.dataAvail()); - - - switch (msgType) { - default: - ALOGE("BnTvClient::onTransact NOTIFY_CALLBACK msg type ----= %d", msgType); - break; - } - notifyCallback(msgType, ext); - return NO_ERROR; - } - break; - default: - return BBinder::onTransact(code, data, reply, flags); - } + int i = 0, loop_count = 0; + + switch (code) { + case NOTIFY_CALLBACK: { + CHECK_INTERFACE(ITvClient, data, reply); + Parcel ext; + int32_t msgType = data.readInt32(); + + ext.appendFrom(const_cast(&data), data.dataPosition(), data.dataAvail()); + + + switch (msgType) { + default: + ALOGE("BnTvClient::onTransact NOTIFY_CALLBACK msg type ----= %d", msgType); + break; + } + notifyCallback(msgType, ext); + return NO_ERROR; + } + break; + default: + return BBinder::onTransact(code, data, reply, flags); + } } diff --git a/tvapi/android/libtvbinder/ITvService.cpp b/tvapi/android/libtvbinder/ITvService.cpp index 041f660..a60b032 100644 --- a/tvapi/android/libtvbinder/ITvService.cpp +++ b/tvapi/android/libtvbinder/ITvService.cpp @@ -10,20 +10,20 @@ class BpTvService: public BpInterface { public: - BpTvService(const sp &impl) - : BpInterface(impl) - { - } - - // connect to tv service - virtual sp connect(const sp &tvClient) - { - Parcel data, reply; - data.writeInterfaceToken(ITvService::getInterfaceDescriptor()); - data.writeStrongBinder(IInterface::asBinder(tvClient)); - remote()->transact(BnTvService::CONNECT, data, &reply); - return interface_cast(reply.readStrongBinder()); - } + BpTvService(const sp &impl) + : BpInterface(impl) + { + } + + // connect to tv service + virtual sp connect(const sp &tvClient) + { + Parcel data, reply; + data.writeInterfaceToken(ITvService::getInterfaceDescriptor()); + data.writeStrongBinder(IInterface::asBinder(tvClient)); + remote()->transact(BnTvService::CONNECT, data, &reply); + return interface_cast(reply.readStrongBinder()); + } }; IMPLEMENT_META_INTERFACE(TvService, "android.amlogic.ITvService"); @@ -31,20 +31,20 @@ IMPLEMENT_META_INTERFACE(TvService, "android.amlogic.ITvService"); // ---------------------------------------------------------------------- status_t BnTvService::onTransact( - uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags) + uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags) { - switch (code) { - case CONNECT: { - CHECK_INTERFACE(ITvService, data, reply); - sp tvClient = interface_cast(data.readStrongBinder()); - sp tv = connect(tvClient); - ALOGD("BnTvService::onTransact( sp tv = connect(tvClient);"); - reply->writeStrongBinder(IInterface::asBinder(tv)); - return NO_ERROR; - } - break; - default: - return BBinder::onTransact(code, data, reply, flags); - } + switch (code) { + case CONNECT: { + CHECK_INTERFACE(ITvService, data, reply); + sp tvClient = interface_cast(data.readStrongBinder()); + sp tv = connect(tvClient); + ALOGD("BnTvService::onTransact( sp tv = connect(tvClient);"); + reply->writeStrongBinder(IInterface::asBinder(tv)); + return NO_ERROR; + } + break; + default: + return BBinder::onTransact(code, data, reply, flags); + } } diff --git a/tvapi/android/libtvbinder/TvClient.cpp b/tvapi/android/libtvbinder/TvClient.cpp index 188a964..432be8b 100644 --- a/tvapi/android/libtvbinder/TvClient.cpp +++ b/tvapi/android/libtvbinder/TvClient.cpp @@ -14,7 +14,8 @@ sp TvClient::mTvService; sp TvClient::mDeathNotifier; // establish binder interface to tv service -const sp &TvClient::getTvService() { +const sp &TvClient::getTvService() +{ Mutex::Autolock _l(mLock); if (mTvService.get() == 0) { sp sm = defaultServiceManager(); @@ -36,12 +37,14 @@ const sp &TvClient::getTvService() { return mTvService; } -TvClient::TvClient() { +TvClient::TvClient() +{ init(); } // construct a tv client from an existing tv remote -sp TvClient::create(const sp &tv) { +sp TvClient::create(const sp &tv) +{ ALOGD("create"); if (tv == 0) { ALOGE("tv remote is a NULL pointer"); @@ -57,15 +60,18 @@ sp TvClient::create(const sp &tv) { return c; } -void TvClient::init() { +void TvClient::init() +{ mStatus = UNKNOWN_ERROR; } -TvClient::~TvClient() { +TvClient::~TvClient() +{ disconnect(); } -sp TvClient::connect() { +sp TvClient::connect() +{ ALOGD("Tv::connect------------------------------------------"); sp c = new TvClient(); const sp &cs = getTvService(); @@ -81,7 +87,8 @@ sp TvClient::connect() { return c; } -void TvClient::disconnect() { +void TvClient::disconnect() +{ ALOGD("disconnect"); if (mTv != 0) { mTv->disconnect(); @@ -90,55 +97,64 @@ void TvClient::disconnect() { } } -status_t TvClient::reconnect() { +status_t TvClient::reconnect() +{ ALOGD("reconnect"); sp c = mTv; if (c == 0) return NO_INIT; return c->connect(this); } -sp TvClient::remote() { +sp TvClient::remote() +{ return mTv; } -status_t TvClient::lock() { +status_t TvClient::lock() +{ sp c = mTv; if (c == 0) return NO_INIT; return c->lock(); } -status_t TvClient::unlock() { +status_t TvClient::unlock() +{ sp c = mTv; if (c == 0) return NO_INIT; return c->unlock(); } -status_t TvClient::processCmd(const Parcel &p, Parcel *r) { +status_t TvClient::processCmd(const Parcel &p, Parcel *r) +{ sp c = mTv; if (c == 0) return NO_INIT; return c->processCmd(p, r); } -status_t TvClient::createSubtitle(const sp &share_mem) { +status_t TvClient::createSubtitle(const sp &share_mem) +{ sp c = mTv; if (c == 0) return NO_INIT; return c->createSubtitle(share_mem); } -status_t TvClient::createVideoFrame(const sp &share_mem, int iSourceMode, int iCapVideoLayerOnly) { +status_t TvClient::createVideoFrame(const sp &share_mem, int iSourceMode, int iCapVideoLayerOnly) +{ sp c = mTv; if (c == 0) return NO_INIT; return c->createVideoFrame(share_mem, iSourceMode, iCapVideoLayerOnly); } -void TvClient::setListener(const sp &listener) { +void TvClient::setListener(const sp &listener) +{ ALOGD("tv------------Tv::setListener"); Mutex::Autolock _l(mLock); mListener = listener; } // callback from tv service -void TvClient::notifyCallback(int32_t msgType, const Parcel &p) { +void TvClient::notifyCallback(int32_t msgType, const Parcel &p) +{ int size = p.dataSize(); int pos = p.dataPosition(); p.setDataPosition(0); @@ -152,12 +168,14 @@ void TvClient::notifyCallback(int32_t msgType, const Parcel &p) { } } -void TvClient::binderDied(const wp &who) { +void TvClient::binderDied(const wp &who) +{ ALOGW("ITv died"); //notifyCallback(1, 2, 0); } -void TvClient::DeathNotifier::binderDied(const wp &who) { +void TvClient::DeathNotifier::binderDied(const wp &who) +{ ALOGW("-----------------binderDied"); Mutex::Autolock _l(TvClient::mLock); TvClient::mTvService.clear(); diff --git a/tvapi/android/tv/TvPlay.cpp b/tvapi/android/tv/TvPlay.cpp index b5994d4..8d2ef82 100644 --- a/tvapi/android/tv/TvPlay.cpp +++ b/tvapi/android/tv/TvPlay.cpp @@ -2,42 +2,49 @@ #include "TvPlay.h" #include "../include/tvcmd.h" -TvPlay::TvPlay() { +TvPlay::TvPlay() +{ mpObserver = NULL; tvSession = TvClient::connect(); tvSession->setListener(this); } -TvPlay::~TvPlay() { +TvPlay::~TvPlay() +{ tvSession.clear(); } -int TvPlay::setTvObserver ( TvPlayObserver *ob ) { +int TvPlay::setTvObserver ( TvPlayObserver *ob ) +{ mpObserver = ob; return 0; } -void TvPlay::notify(int32_t msgType, const Parcel &p) { +void TvPlay::notify(int32_t msgType, const Parcel &p) +{ ALOGD("TvPlay-------notify-------"); if (mpObserver != NULL) mpObserver->onTvEvent(msgType, p); } -int TvPlay::StartTv() { +int TvPlay::StartTv() +{ Parcel p, r; p.writeInt32(START_TV); tvSession->processCmd(p, &r); return r.readInt32(); } -int TvPlay::StopTv() { +int TvPlay::StopTv() +{ Parcel p, r; p.writeInt32(STOP_TV); tvSession->processCmd(p, &r); return r.readInt32(); } -int TvPlay::SwitchSourceInput(tv_source_input_t source_input) { +int TvPlay::SwitchSourceInput(tv_source_input_t source_input) +{ Parcel p, r; p.writeInt32(SET_SOURCE_INPUT); p.writeInt32(source_input); @@ -45,7 +52,8 @@ int TvPlay::SwitchSourceInput(tv_source_input_t source_input) { return r.readInt32(); } -int TvPlay::DoSuspend(int type) { +int TvPlay::DoSuspend(int type) +{ Parcel p, r; p.writeInt32(DO_SUSPEND); p.writeInt32(type); @@ -53,7 +61,8 @@ int TvPlay::DoSuspend(int type) { return r.readInt32(); } -int TvPlay::DoResume(int type) { +int TvPlay::DoResume(int type) +{ Parcel p, r; p.writeInt32(DO_RESUME); p.writeInt32(type); @@ -61,7 +70,8 @@ int TvPlay::DoResume(int type) { return r.readInt32(); } -int TvPlay::GetSourceConnectStatus(tv_source_input_t source_input) { +int TvPlay::GetSourceConnectStatus(tv_source_input_t source_input) +{ Parcel p, r; p.writeInt32(GET_SOURCE_CONNECT_STATUS); p.writeInt32(source_input); @@ -69,14 +79,16 @@ int TvPlay::GetSourceConnectStatus(tv_source_input_t source_input) { return r.readInt32(); } -int TvPlay::GetCurrentSourceInput() { +int TvPlay::GetCurrentSourceInput() +{ Parcel p, r; p.writeInt32(SSM_READ_SOURCE_INPUT); tvSession->processCmd(p, &r); return r.readInt32(); } -int TvPlay::GetHdmiAvHotplugDetectOnoff() { +int TvPlay::GetHdmiAvHotplugDetectOnoff() +{ Parcel p, r; p.writeInt32(HDMIAV_HOTPLUGDETECT_ONOFF); tvSession->processCmd(p, &r); diff --git a/tvapi/android/tv/TvPlay.h b/tvapi/android/tv/TvPlay.h index cbab849..d30522d 100644 --- a/tvapi/android/tv/TvPlay.h +++ b/tvapi/android/tv/TvPlay.h @@ -33,7 +33,7 @@ public: virtual void onTvEvent (int32_t msgType, const Parcel &p) = 0; }; -class TvPlay : public TvListener{ +class TvPlay : public TvListener { public: TvPlay(); ~TvPlay(); diff --git a/tvapi/android/tvserver/TvService.cpp b/tvapi/android/tvserver/TvService.cpp index 56dbe48..6568003 100644 --- a/tvapi/android/tvserver/TvService.cpp +++ b/tvapi/android/tvserver/TvService.cpp @@ -36,4459 +36,4459 @@ extern "C" { static int getCallingPid() { - return IPCThreadState::self()->getCallingPid(); + return IPCThreadState::self()->getCallingPid(); } TvService *TvService::mTvService = NULL; -CTv* TvService::mpTv = NULL; +CTv *TvService::mpTv = NULL; void TvService::instantiate() { - defaultServiceManager()->addService(String16("aml.tvserver"), TvService::getIntance()); + defaultServiceManager()->addService(String16("aml.tvserver"), TvService::getIntance()); } TvService::TvService() : - BnTvService() + BnTvService() { - mpStartTvClient = NULL; - mpScannerClient = NULL; - mUsers = 0; - mpTv = new CTv(); - mpTv->setTvObserver(this); - mCapVidFrame.setObserver(this); - mpTv->OpenTv(); + mpStartTvClient = NULL; + mpScannerClient = NULL; + mUsers = 0; + mpTv = new CTv(); + mpTv->setTvObserver(this); + mCapVidFrame.setObserver(this); + mpTv->OpenTv(); } TvService::~TvService() { - mpStartTvClient = NULL; - mpScannerClient = NULL; - int client_size = m_v_Clients.size(); - wp client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - LOGW("some client still connect it!"); - } - } - if (mpTv != NULL) { - delete mpTv; - mpTv = NULL; - } + mpStartTvClient = NULL; + mpScannerClient = NULL; + int client_size = m_v_Clients.size(); + wp client; + for (int i = 0; i < client_size; i++) { + client = m_v_Clients[i]; + if (client != 0) { + LOGW("some client still connect it!"); + } + } + if (mpTv != NULL) { + delete mpTv; + mpTv = NULL; + } } void TvService::onTvEvent(const CTvEv &ev) { - int type = ev.getEvType(); - LOGD("TvService::onTvEvent ev type = %d", type); - switch (type) { - case CTvEv::TV_EVENT_COMMOM: { - break; - } - case CTvEv::TV_EVENT_SCANNER: { - CTvScanner::ScannerEvent *pScannerEv = (CTvScanner::ScannerEvent *) (&ev); - if (mpScannerClient != NULL) { - sp ScannerClient = mpScannerClient.promote(); - if (ScannerClient != 0) { - Parcel p; - LOGD("scanner evt type:%d freq:%d vid:%d acnt:%d", - pScannerEv->mType, pScannerEv->mFrequency, pScannerEv->mVid, pScannerEv->mAcnt); - p.writeInt32(pScannerEv->mType); - p.writeInt32(pScannerEv->mPercent); - p.writeInt32(pScannerEv->mTotalChannelCount); - p.writeInt32(pScannerEv->mLockedStatus); - p.writeInt32(pScannerEv->mChannelNumber); - p.writeInt32(pScannerEv->mFrequency); - p.writeString16(String16(pScannerEv->mProgramName)); - p.writeInt32(pScannerEv->mprogramType); - p.writeString16(String16(pScannerEv->mMSG)); - p.writeInt32(pScannerEv->mStrength); - p.writeInt32(pScannerEv->mSnr); - //ATV - p.writeInt32(pScannerEv->mVideoStd); - p.writeInt32(pScannerEv->mAudioStd); - p.writeInt32(pScannerEv->mIsAutoStd); - //DTV - p.writeInt32(pScannerEv->mMode); - p.writeInt32(pScannerEv->mSymbolRate); - p.writeInt32(pScannerEv->mModulation); - p.writeInt32(pScannerEv->mBandwidth); - p.writeInt32(pScannerEv->mOfdm_mode); - p.writeInt32(pScannerEv->mTsId); - p.writeInt32(pScannerEv->mONetId); - p.writeInt32(pScannerEv->mServiceId); - p.writeInt32(pScannerEv->mVid); - p.writeInt32(pScannerEv->mVfmt); - p.writeInt32(pScannerEv->mAcnt); - for (int i = 0; i < pScannerEv->mAcnt; i++) - p.writeInt32(pScannerEv->mAid[i]); - for (int i = 0; i < pScannerEv->mAcnt; i++) - p.writeInt32(pScannerEv->mAfmt[i]); - for (int i = 0; i < pScannerEv->mAcnt; i++) - p.writeString16(String16(pScannerEv->mAlang[i])); - for (int i = 0; i < pScannerEv->mAcnt; i++) - p.writeInt32(pScannerEv->mAtype[i]); - p.writeInt32(pScannerEv->mPcr); - p.writeInt32(pScannerEv->mScnt); - for (int i = 0; i < pScannerEv->mScnt; i++) - p.writeInt32(pScannerEv->mStype[i]); - for (int i = 0; i < pScannerEv->mScnt; i++) - p.writeInt32(pScannerEv->mSid[i]); - for (int i = 0; i < pScannerEv->mScnt; i++) - p.writeInt32(pScannerEv->mSstype[i]); - for (int i = 0; i < pScannerEv->mScnt; i++) - p.writeInt32(pScannerEv->mSid1[i]); - for (int i = 0; i < pScannerEv->mScnt; i++) - p.writeInt32(pScannerEv->mSid2[i]); - for (int i = 0; i < pScannerEv->mScnt; i++) - p.writeString16(String16(pScannerEv->mSlang[i])); - ScannerClient->notifyCallback(SCAN_EVENT_CALLBACK, p); - } - } - break; - } - case CTvEv::TV_EVENT_EPG: { - CTvEpg::EpgEvent *pEpgEvent = (CTvEpg::EpgEvent *) (&ev); - int client_size = m_v_Clients.size(); - wp client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pEpgEvent->type); - p.writeInt32(pEpgEvent->time); - p.writeInt32(pEpgEvent->programID); - p.writeInt32(pEpgEvent->channelID); - currentClient->getTvClient()->notifyCallback(EPG_EVENT_CALLBACK, p); - } - } - } - break; - } - case CTvEv::TV_EVENT_HDMI_IN_CAP: { - CTvScreenCapture::CapEvent *pCapEvt = (CTvScreenCapture::CapEvent *)(&ev); - int client_size = m_v_Clients.size(); - wp client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pCapEvt->mFrameNum); - p.writeInt32(pCapEvt->mFrameSize); - p.writeInt32(pCapEvt->mFrameWide); - p.writeInt32(pCapEvt->mFrameHeight); - currentClient->getTvClient()->notifyCallback(VFRAME_BMP_EVENT_CALLBACK, p); - } - } - } - break; - } - case CTvEv::TV_EVENT_AV_PLAYBACK: { - TvEvent::AVPlaybackEvent *pEv = (TvEvent::AVPlaybackEvent *)(&ev); - int client_size = m_v_Clients.size(); - wp client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pEv->mMsgType); - p.writeInt32(pEv->mProgramId); - currentClient->getTvClient()->notifyCallback(DTV_AV_PLAYBACK_CALLBACK, p); - } - } - } - break; - } - case CTvEv::TV_EVENT_SIGLE_DETECT: { - TvEvent::SignalInfoEvent *pEv = (TvEvent::SignalInfoEvent *)(&ev); - - int client_size = m_v_Clients.size(); - wp client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pEv->mTrans_fmt); - p.writeInt32(pEv->mFmt); - p.writeInt32(pEv->mStatus); - p.writeInt32(pEv->mReserved); - currentClient->getTvClient()->notifyCallback(SIGLE_DETECT_CALLBACK, p); - } - } - } - break; - } - case CTvEv::TV_EVENT_SUBTITLE: { - TvEvent::SubtitleEvent *pEv = (TvEvent::SubtitleEvent *)(&ev); - sp pSubtitleClient = mpSubClient.promote(); - if (pSubtitleClient != NULL) { - Parcel p; - p.writeInt32(pEv->pic_width); - p.writeInt32(pEv->pic_height); - pSubtitleClient->notifyCallback(SUBTITLE_UPDATE_CALLBACK, p); - } - break; - } - case CTvEv::TV_EVENT_ADC_CALIBRATION: { - TvEvent::ADCCalibrationEvent *pEv = (TvEvent::ADCCalibrationEvent *)(&ev); - int client_size = m_v_Clients.size(); - wp client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pEv->mState); - currentClient->getTvClient()->notifyCallback(ADC_CALIBRATION_CALLBACK, p); - } - } - } - break; - } - case CTvEv::TV_EVENT_VGA: { //VGA - TvEvent::VGAEvent *pEv = (TvEvent::VGAEvent *)(&ev); - int client_size = m_v_Clients.size(); - wp client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pEv->mState); - currentClient->getTvClient()->notifyCallback(VGA_CALLBACK, p); - } - } - } - break; - } - case CTvEv::TV_EVENT_SOURCE_CONNECT: { - TvEvent::SourceConnectEvent *pEv = (TvEvent::SourceConnectEvent *)(&ev); - int client_size = m_v_Clients.size(); - wp client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pEv->mSourceInput); - p.writeInt32(pEv->connectionState); - currentClient->getTvClient()->notifyCallback(SOURCE_CONNECT_CALLBACK, p); - } - } - } - break; - } - case CTvEv::TV_EVENT_HDMIRX_CEC: { - TvEvent::HDMIRxCECEvent *pEv = (TvEvent::HDMIRxCECEvent *)(&ev); - int client_size = m_v_Clients.size(); - wp client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - - p.writeInt32(pEv->mDataCount); - for (int j = 0; j < pEv->mDataCount; j++) { - p.writeInt32(pEv->mDataBuf[j]); - } - - currentClient->getTvClient()->notifyCallback(HDMIRX_CEC_CALLBACK, p); - } - } - } - break; - } - case CTvEv::TV_EVENT_UPGRADE_FBC: { - TvEvent::UpgradeFBCEvent *pEv = (TvEvent::UpgradeFBCEvent *)(&ev); - - int client_size = m_v_Clients.size(); - wp client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pEv->mState); - p.writeInt32(pEv->param); - currentClient->getTvClient()->notifyCallback(UPGRADE_FBC_CALLBACK, p); - } - } - } - break; - } - case CTvEv::TV_EVENT_SERIAL_COMMUNICATION: { - TvEvent::SerialCommunicationEvent *pEv = (TvEvent::SerialCommunicationEvent *)(&ev); - int client_size = m_v_Clients.size(); - wp client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pEv->mDevId); - p.writeInt32(pEv->mDataCount); - for (int j = 0; j < pEv->mDataCount; j++) { - p.writeInt32(pEv->mDataBuf[j]); - } - - currentClient->getTvClient()->notifyCallback(SERIAL_COMMUNICATION_CALLBACK, p); - } - } - } - break; - } - - case CTvEv::TV_EVENT_2d4G_HEADSET: { - TvEvent::HeadSetOf2d4GEvent *pEv = (TvEvent::HeadSetOf2d4GEvent *)(&ev); - LOGD("SendDtvStats status: =%d para2: =%d", pEv->state, pEv->para); - int client_size = m_v_Clients.size(); - wp client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pEv->state); - p.writeInt32(pEv->para); - currentClient->getTvClient()->notifyCallback(HEADSET_STATUS_CALLBACK, p); - } - } - } - break; - } - - default: - break; - } + int type = ev.getEvType(); + LOGD("TvService::onTvEvent ev type = %d", type); + switch (type) { + case CTvEv::TV_EVENT_COMMOM: { + break; + } + case CTvEv::TV_EVENT_SCANNER: { + CTvScanner::ScannerEvent *pScannerEv = (CTvScanner::ScannerEvent *) (&ev); + if (mpScannerClient != NULL) { + sp ScannerClient = mpScannerClient.promote(); + if (ScannerClient != 0) { + Parcel p; + LOGD("scanner evt type:%d freq:%d vid:%d acnt:%d", + pScannerEv->mType, pScannerEv->mFrequency, pScannerEv->mVid, pScannerEv->mAcnt); + p.writeInt32(pScannerEv->mType); + p.writeInt32(pScannerEv->mPercent); + p.writeInt32(pScannerEv->mTotalChannelCount); + p.writeInt32(pScannerEv->mLockedStatus); + p.writeInt32(pScannerEv->mChannelNumber); + p.writeInt32(pScannerEv->mFrequency); + p.writeString16(String16(pScannerEv->mProgramName)); + p.writeInt32(pScannerEv->mprogramType); + p.writeString16(String16(pScannerEv->mMSG)); + p.writeInt32(pScannerEv->mStrength); + p.writeInt32(pScannerEv->mSnr); + //ATV + p.writeInt32(pScannerEv->mVideoStd); + p.writeInt32(pScannerEv->mAudioStd); + p.writeInt32(pScannerEv->mIsAutoStd); + //DTV + p.writeInt32(pScannerEv->mMode); + p.writeInt32(pScannerEv->mSymbolRate); + p.writeInt32(pScannerEv->mModulation); + p.writeInt32(pScannerEv->mBandwidth); + p.writeInt32(pScannerEv->mOfdm_mode); + p.writeInt32(pScannerEv->mTsId); + p.writeInt32(pScannerEv->mONetId); + p.writeInt32(pScannerEv->mServiceId); + p.writeInt32(pScannerEv->mVid); + p.writeInt32(pScannerEv->mVfmt); + p.writeInt32(pScannerEv->mAcnt); + for (int i = 0; i < pScannerEv->mAcnt; i++) + p.writeInt32(pScannerEv->mAid[i]); + for (int i = 0; i < pScannerEv->mAcnt; i++) + p.writeInt32(pScannerEv->mAfmt[i]); + for (int i = 0; i < pScannerEv->mAcnt; i++) + p.writeString16(String16(pScannerEv->mAlang[i])); + for (int i = 0; i < pScannerEv->mAcnt; i++) + p.writeInt32(pScannerEv->mAtype[i]); + p.writeInt32(pScannerEv->mPcr); + p.writeInt32(pScannerEv->mScnt); + for (int i = 0; i < pScannerEv->mScnt; i++) + p.writeInt32(pScannerEv->mStype[i]); + for (int i = 0; i < pScannerEv->mScnt; i++) + p.writeInt32(pScannerEv->mSid[i]); + for (int i = 0; i < pScannerEv->mScnt; i++) + p.writeInt32(pScannerEv->mSstype[i]); + for (int i = 0; i < pScannerEv->mScnt; i++) + p.writeInt32(pScannerEv->mSid1[i]); + for (int i = 0; i < pScannerEv->mScnt; i++) + p.writeInt32(pScannerEv->mSid2[i]); + for (int i = 0; i < pScannerEv->mScnt; i++) + p.writeString16(String16(pScannerEv->mSlang[i])); + ScannerClient->notifyCallback(SCAN_EVENT_CALLBACK, p); + } + } + break; + } + case CTvEv::TV_EVENT_EPG: { + CTvEpg::EpgEvent *pEpgEvent = (CTvEpg::EpgEvent *) (&ev); + int client_size = m_v_Clients.size(); + wp client; + for (int i = 0; i < client_size; i++) { + client = m_v_Clients[i]; + if (client != 0) { + sp currentClient = client.promote(); + if (currentClient != 0) { + Parcel p; + p.writeInt32(pEpgEvent->type); + p.writeInt32(pEpgEvent->time); + p.writeInt32(pEpgEvent->programID); + p.writeInt32(pEpgEvent->channelID); + currentClient->getTvClient()->notifyCallback(EPG_EVENT_CALLBACK, p); + } + } + } + break; + } + case CTvEv::TV_EVENT_HDMI_IN_CAP: { + CTvScreenCapture::CapEvent *pCapEvt = (CTvScreenCapture::CapEvent *)(&ev); + int client_size = m_v_Clients.size(); + wp client; + for (int i = 0; i < client_size; i++) { + client = m_v_Clients[i]; + if (client != 0) { + sp currentClient = client.promote(); + if (currentClient != 0) { + Parcel p; + p.writeInt32(pCapEvt->mFrameNum); + p.writeInt32(pCapEvt->mFrameSize); + p.writeInt32(pCapEvt->mFrameWide); + p.writeInt32(pCapEvt->mFrameHeight); + currentClient->getTvClient()->notifyCallback(VFRAME_BMP_EVENT_CALLBACK, p); + } + } + } + break; + } + case CTvEv::TV_EVENT_AV_PLAYBACK: { + TvEvent::AVPlaybackEvent *pEv = (TvEvent::AVPlaybackEvent *)(&ev); + int client_size = m_v_Clients.size(); + wp client; + for (int i = 0; i < client_size; i++) { + client = m_v_Clients[i]; + if (client != 0) { + sp currentClient = client.promote(); + if (currentClient != 0) { + Parcel p; + p.writeInt32(pEv->mMsgType); + p.writeInt32(pEv->mProgramId); + currentClient->getTvClient()->notifyCallback(DTV_AV_PLAYBACK_CALLBACK, p); + } + } + } + break; + } + case CTvEv::TV_EVENT_SIGLE_DETECT: { + TvEvent::SignalInfoEvent *pEv = (TvEvent::SignalInfoEvent *)(&ev); + + int client_size = m_v_Clients.size(); + wp client; + for (int i = 0; i < client_size; i++) { + client = m_v_Clients[i]; + if (client != 0) { + sp currentClient = client.promote(); + if (currentClient != 0) { + Parcel p; + p.writeInt32(pEv->mTrans_fmt); + p.writeInt32(pEv->mFmt); + p.writeInt32(pEv->mStatus); + p.writeInt32(pEv->mReserved); + currentClient->getTvClient()->notifyCallback(SIGLE_DETECT_CALLBACK, p); + } + } + } + break; + } + case CTvEv::TV_EVENT_SUBTITLE: { + TvEvent::SubtitleEvent *pEv = (TvEvent::SubtitleEvent *)(&ev); + sp pSubtitleClient = mpSubClient.promote(); + if (pSubtitleClient != NULL) { + Parcel p; + p.writeInt32(pEv->pic_width); + p.writeInt32(pEv->pic_height); + pSubtitleClient->notifyCallback(SUBTITLE_UPDATE_CALLBACK, p); + } + break; + } + case CTvEv::TV_EVENT_ADC_CALIBRATION: { + TvEvent::ADCCalibrationEvent *pEv = (TvEvent::ADCCalibrationEvent *)(&ev); + int client_size = m_v_Clients.size(); + wp client; + for (int i = 0; i < client_size; i++) { + client = m_v_Clients[i]; + if (client != 0) { + sp currentClient = client.promote(); + if (currentClient != 0) { + Parcel p; + p.writeInt32(pEv->mState); + currentClient->getTvClient()->notifyCallback(ADC_CALIBRATION_CALLBACK, p); + } + } + } + break; + } + case CTvEv::TV_EVENT_VGA: { //VGA + TvEvent::VGAEvent *pEv = (TvEvent::VGAEvent *)(&ev); + int client_size = m_v_Clients.size(); + wp client; + for (int i = 0; i < client_size; i++) { + client = m_v_Clients[i]; + if (client != 0) { + sp currentClient = client.promote(); + if (currentClient != 0) { + Parcel p; + p.writeInt32(pEv->mState); + currentClient->getTvClient()->notifyCallback(VGA_CALLBACK, p); + } + } + } + break; + } + case CTvEv::TV_EVENT_SOURCE_CONNECT: { + TvEvent::SourceConnectEvent *pEv = (TvEvent::SourceConnectEvent *)(&ev); + int client_size = m_v_Clients.size(); + wp client; + for (int i = 0; i < client_size; i++) { + client = m_v_Clients[i]; + if (client != 0) { + sp currentClient = client.promote(); + if (currentClient != 0) { + Parcel p; + p.writeInt32(pEv->mSourceInput); + p.writeInt32(pEv->connectionState); + currentClient->getTvClient()->notifyCallback(SOURCE_CONNECT_CALLBACK, p); + } + } + } + break; + } + case CTvEv::TV_EVENT_HDMIRX_CEC: { + TvEvent::HDMIRxCECEvent *pEv = (TvEvent::HDMIRxCECEvent *)(&ev); + int client_size = m_v_Clients.size(); + wp client; + for (int i = 0; i < client_size; i++) { + client = m_v_Clients[i]; + if (client != 0) { + sp currentClient = client.promote(); + if (currentClient != 0) { + Parcel p; + + p.writeInt32(pEv->mDataCount); + for (int j = 0; j < pEv->mDataCount; j++) { + p.writeInt32(pEv->mDataBuf[j]); + } + + currentClient->getTvClient()->notifyCallback(HDMIRX_CEC_CALLBACK, p); + } + } + } + break; + } + case CTvEv::TV_EVENT_UPGRADE_FBC: { + TvEvent::UpgradeFBCEvent *pEv = (TvEvent::UpgradeFBCEvent *)(&ev); + + int client_size = m_v_Clients.size(); + wp client; + for (int i = 0; i < client_size; i++) { + client = m_v_Clients[i]; + if (client != 0) { + sp currentClient = client.promote(); + if (currentClient != 0) { + Parcel p; + p.writeInt32(pEv->mState); + p.writeInt32(pEv->param); + currentClient->getTvClient()->notifyCallback(UPGRADE_FBC_CALLBACK, p); + } + } + } + break; + } + case CTvEv::TV_EVENT_SERIAL_COMMUNICATION: { + TvEvent::SerialCommunicationEvent *pEv = (TvEvent::SerialCommunicationEvent *)(&ev); + int client_size = m_v_Clients.size(); + wp client; + for (int i = 0; i < client_size; i++) { + client = m_v_Clients[i]; + if (client != 0) { + sp currentClient = client.promote(); + if (currentClient != 0) { + Parcel p; + p.writeInt32(pEv->mDevId); + p.writeInt32(pEv->mDataCount); + for (int j = 0; j < pEv->mDataCount; j++) { + p.writeInt32(pEv->mDataBuf[j]); + } + + currentClient->getTvClient()->notifyCallback(SERIAL_COMMUNICATION_CALLBACK, p); + } + } + } + break; + } + + case CTvEv::TV_EVENT_2d4G_HEADSET: { + TvEvent::HeadSetOf2d4GEvent *pEv = (TvEvent::HeadSetOf2d4GEvent *)(&ev); + LOGD("SendDtvStats status: =%d para2: =%d", pEv->state, pEv->para); + int client_size = m_v_Clients.size(); + wp client; + for (int i = 0; i < client_size; i++) { + client = m_v_Clients[i]; + if (client != 0) { + sp currentClient = client.promote(); + if (currentClient != 0) { + Parcel p; + p.writeInt32(pEv->state); + p.writeInt32(pEv->para); + currentClient->getTvClient()->notifyCallback(HEADSET_STATUS_CALLBACK, p); + } + } + } + break; + } + + default: + break; + } } sp TvService::connect(const sp &tvClient) { - int callingPid = getCallingPid(); - LOGD("TvService::connect E (pid %d, client %p)", callingPid, IInterface::asBinder(tvClient).get()); - - Mutex::Autolock lock(mServiceLock); - - int client_size = m_v_Clients.size(); - wp client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp currentClient = client.promote(); - if (currentClient != 0) { - sp currentTvClient(currentClient->getTvClient()); - if (IInterface::asBinder(tvClient) == IInterface::asBinder(currentTvClient)) { - LOGD("TvService::connect X (pid %d, same client %p) is reconnecting...", callingPid, IInterface::asBinder(tvClient).get()); - return currentClient; - } else { - //LOGD("TvService::connect X (pid %d, new client %p) rejected. " - // "(old pid %d, old client %p)", callingPid, tvClient->asBinder().get(), currentClient->mClientPid, currentTvClient->asBinder().get()); - // if (kill(currentClient->mClientPid, 0) == -1 && errno == ESRCH) { - // LOGE("The old client is dead!"); - // } - //return client; - //return currentClient; - continue; - } - } else { - LOGE("client (pid %d) have delete ------------not exist", callingPid); - client.clear(); - m_v_Clients.removeAt(i); - client_size--; - continue; - } - } - } - - if (mUsers > 0) { - LOGE("Still have client, rejected"); - //return client; - } - LOGD("TvService::connect X 3"); - // client = new Client(this, tvClient, callingPid); - //mClient = client; - - sp newclient = new Client(this, tvClient, callingPid, mpTv); - m_v_Clients.add(newclient); + int callingPid = getCallingPid(); + LOGD("TvService::connect E (pid %d, client %p)", callingPid, IInterface::asBinder(tvClient).get()); + + Mutex::Autolock lock(mServiceLock); + + int client_size = m_v_Clients.size(); + wp client; + for (int i = 0; i < client_size; i++) { + client = m_v_Clients[i]; + if (client != 0) { + sp currentClient = client.promote(); + if (currentClient != 0) { + sp currentTvClient(currentClient->getTvClient()); + if (IInterface::asBinder(tvClient) == IInterface::asBinder(currentTvClient)) { + LOGD("TvService::connect X (pid %d, same client %p) is reconnecting...", callingPid, IInterface::asBinder(tvClient).get()); + return currentClient; + } else { + //LOGD("TvService::connect X (pid %d, new client %p) rejected. " + // "(old pid %d, old client %p)", callingPid, tvClient->asBinder().get(), currentClient->mClientPid, currentTvClient->asBinder().get()); + // if (kill(currentClient->mClientPid, 0) == -1 && errno == ESRCH) { + // LOGE("The old client is dead!"); + // } + //return client; + //return currentClient; + continue; + } + } else { + LOGE("client (pid %d) have delete ------------not exist", callingPid); + client.clear(); + m_v_Clients.removeAt(i); + client_size--; + continue; + } + } + } + + if (mUsers > 0) { + LOGE("Still have client, rejected"); + //return client; + } + LOGD("TvService::connect X 3"); + // client = new Client(this, tvClient, callingPid); + //mClient = client; + + sp newclient = new Client(this, tvClient, callingPid, mpTv); + m_v_Clients.add(newclient); #if DEBUG_CLIENT_REFERENCES - //client->trackMe(true, true); + //client->trackMe(true, true); #endif - //mCurClient = client; - LOGD("TvService::connect X 4"); - return newclient; + //mCurClient = client; + LOGD("TvService::connect X 4"); + return newclient; } void TvService::removeClient(const sp &tvClient) { - int callingPid = getCallingPid(); - - Mutex::Autolock lock(mServiceLock); - - int client_size = m_v_Clients.size(); - wp client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp currentClient = client.promote(); - if (currentClient != 0) { - sp currentTvClient(currentClient->getTvClient()); - if (IInterface::asBinder(tvClient) == IInterface::asBinder(currentTvClient)) { - LOGD("find client , and remove it pid = %d, client = %p i=%d", callingPid, IInterface::asBinder(tvClient).get(), i); - client.clear(); - LOGD("find client , and remove it pid1 "); - m_v_Clients.removeAt(i); - LOGD("find client , and remove it pid2 "); - break; - } else { - LOGW("removeClient (pid %d): mClient doesn't match!", callingPid); - continue; - } - } else { - LOGW("removeclient currentClient == 0 (pid %d)", callingPid); - client.clear(); - m_v_Clients.removeAt(i); - client_size--; - continue; - } - } else { - LOGW("removeclient client == 0 (pid %d)", callingPid); - client.clear(); - m_v_Clients.removeAt(i); - client_size--; - continue; - } - } - - LOGD("removeClient (pid %d) done", callingPid); + int callingPid = getCallingPid(); + + Mutex::Autolock lock(mServiceLock); + + int client_size = m_v_Clients.size(); + wp client; + for (int i = 0; i < client_size; i++) { + client = m_v_Clients[i]; + if (client != 0) { + sp currentClient = client.promote(); + if (currentClient != 0) { + sp currentTvClient(currentClient->getTvClient()); + if (IInterface::asBinder(tvClient) == IInterface::asBinder(currentTvClient)) { + LOGD("find client , and remove it pid = %d, client = %p i=%d", callingPid, IInterface::asBinder(tvClient).get(), i); + client.clear(); + LOGD("find client , and remove it pid1 "); + m_v_Clients.removeAt(i); + LOGD("find client , and remove it pid2 "); + break; + } else { + LOGW("removeClient (pid %d): mClient doesn't match!", callingPid); + continue; + } + } else { + LOGW("removeclient currentClient == 0 (pid %d)", callingPid); + client.clear(); + m_v_Clients.removeAt(i); + client_size--; + continue; + } + } else { + LOGW("removeclient client == 0 (pid %d)", callingPid); + client.clear(); + m_v_Clients.removeAt(i); + client_size--; + continue; + } + } + + LOGD("removeClient (pid %d) done", callingPid); } void TvService::incUsers() { - android_atomic_inc(&mUsers); + android_atomic_inc(&mUsers); } void TvService::decUsers() { - android_atomic_dec(&mUsers); + android_atomic_dec(&mUsers); } TvService::Client::Client(const sp &tvService, const sp &tvClient, pid_t clientPid, CTv *pTv) { - int callingPid = getCallingPid(); - LOGD("Client::Client E (pid %d)", callingPid); - mTvService = tvService; - mTvClient = tvClient; - mClientPid = clientPid; - tvService->incUsers(); - mpTv = pTv; - mIsStartTv = false; + int callingPid = getCallingPid(); + LOGD("Client::Client E (pid %d)", callingPid); + mTvService = tvService; + mTvClient = tvClient; + mClientPid = clientPid; + tvService->incUsers(); + mpTv = pTv; + mIsStartTv = false; } status_t TvService::Client::checkPid() { - int callingPid = getCallingPid(); - if (mClientPid == callingPid) - return NO_ERROR; - LOGD("Attempt to use locked tv (client %p) from different process " - " (old pid %d, new pid %d)", IInterface::asBinder(getTvClient()).get(), mClientPid, callingPid); - return -EBUSY; + int callingPid = getCallingPid(); + if (mClientPid == callingPid) + return NO_ERROR; + LOGD("Attempt to use locked tv (client %p) from different process " + " (old pid %d, new pid %d)", IInterface::asBinder(getTvClient()).get(), mClientPid, callingPid); + return -EBUSY; } status_t TvService::Client::lock() { - int callingPid = getCallingPid(); - LOGD("lock from pid %d (mClientPid %d)", callingPid, mClientPid); - Mutex::Autolock _l(mLock); - // lock tv to this client if the the tv is unlocked - if (mClientPid == 0) { - mClientPid = callingPid; - return NO_ERROR; - } - // returns NO_ERROR if the client already owns the tv, -EBUSY otherwise - return checkPid(); + int callingPid = getCallingPid(); + LOGD("lock from pid %d (mClientPid %d)", callingPid, mClientPid); + Mutex::Autolock _l(mLock); + // lock tv to this client if the the tv is unlocked + if (mClientPid == 0) { + mClientPid = callingPid; + return NO_ERROR; + } + // returns NO_ERROR if the client already owns the tv, -EBUSY otherwise + return checkPid(); } status_t TvService::Client::unlock() { - int callingPid = getCallingPid(); - LOGD("unlock from pid %d (mClientPid %d)", callingPid, mClientPid); - Mutex::Autolock _l(mLock); - // allow anyone to use tv - status_t result = checkPid(); - if (result == NO_ERROR) { - mClientPid = 0; - LOGD("clear mTvClient (pid %d)", callingPid); - // we need to remove the reference so that when app goes - // away, the reference count goes to 0. - mTvClient.clear(); - } - return result; + int callingPid = getCallingPid(); + LOGD("unlock from pid %d (mClientPid %d)", callingPid, mClientPid); + Mutex::Autolock _l(mLock); + // allow anyone to use tv + status_t result = checkPid(); + if (result == NO_ERROR) { + mClientPid = 0; + LOGD("clear mTvClient (pid %d)", callingPid); + // we need to remove the reference so that when app goes + // away, the reference count goes to 0. + mTvClient.clear(); + } + return result; } status_t TvService::Client::connect(const sp &client) { - int callingPid = getCallingPid(); - LOGD("Client::connect E (pid %d, client %p)", callingPid, IInterface::asBinder(client).get()); - { - sp oldClient; - { - Mutex::Autolock _l(mLock); - if (mClientPid != 0 && checkPid() != NO_ERROR) { - LOGW("Tried to connect to locked tv (old pid %d, new pid %d)", mClientPid, callingPid); - return -EBUSY; - } - oldClient = mTvClient; - - // did the client actually change? - if ((mTvClient != NULL) && (IInterface::asBinder(client) == IInterface::asBinder(mTvClient))) { - LOGD("Connect to the same client"); - return NO_ERROR; - } - - mTvClient = client; - mClientPid = -1; - LOGD("Connect to the new client (pid %d, client %p)", callingPid, IInterface::asBinder(mTvClient).get()); - } - - } - mClientPid = callingPid; - return NO_ERROR; + int callingPid = getCallingPid(); + LOGD("Client::connect E (pid %d, client %p)", callingPid, IInterface::asBinder(client).get()); + { + sp oldClient; + { + Mutex::Autolock _l(mLock); + if (mClientPid != 0 && checkPid() != NO_ERROR) { + LOGW("Tried to connect to locked tv (old pid %d, new pid %d)", mClientPid, callingPid); + return -EBUSY; + } + oldClient = mTvClient; + + // did the client actually change? + if ((mTvClient != NULL) && (IInterface::asBinder(client) == IInterface::asBinder(mTvClient))) { + LOGD("Connect to the same client"); + return NO_ERROR; + } + + mTvClient = client; + mClientPid = -1; + LOGD("Connect to the new client (pid %d, client %p)", callingPid, IInterface::asBinder(mTvClient).get()); + } + + } + mClientPid = callingPid; + return NO_ERROR; } TvService::Client::~Client() { - if (mIsStartTv) mpTv->StopTvLock(); - - int callingPid = getCallingPid(); - // tear down client - LOGD("Client::~Client E (pid %d, client %p)", callingPid, IInterface::asBinder(getTvClient()).get()); - // make sure we tear down the hardware - mClientPid = callingPid; - disconnect(); - LOGD("Client::~Client X (pid %d)", mClientPid); + if (mIsStartTv) mpTv->StopTvLock(); + + int callingPid = getCallingPid(); + // tear down client + LOGD("Client::~Client E (pid %d, client %p)", callingPid, IInterface::asBinder(getTvClient()).get()); + // make sure we tear down the hardware + mClientPid = callingPid; + disconnect(); + LOGD("Client::~Client X (pid %d)", mClientPid); } void TvService::Client::disconnect() { - int callingPid = getCallingPid(); + int callingPid = getCallingPid(); - LOGD("Client::disconnect() E (pid %d client %p)", callingPid, IInterface::asBinder(getTvClient()).get()); + LOGD("Client::disconnect() E (pid %d client %p)", callingPid, IInterface::asBinder(getTvClient()).get()); - Mutex::Autolock lock(mLock); - if (mClientPid <= 0) { - LOGE("tv is unlocked (mClientPid = %d), don't tear down hardware", mClientPid); - return; - } - if (checkPid() != NO_ERROR) { - LOGE("Different client - don't disconnect"); - return; - } + Mutex::Autolock lock(mLock); + if (mClientPid <= 0) { + LOGE("tv is unlocked (mClientPid = %d), don't tear down hardware", mClientPid); + return; + } + if (checkPid() != NO_ERROR) { + LOGE("Different client - don't disconnect"); + return; + } - mTvService->removeClient(mTvClient); - mTvService->decUsers(); + mTvService->removeClient(mTvClient); + mTvService->decUsers(); - LOGD("Client::disconnect() X (pid %d)", callingPid); + LOGD("Client::disconnect() X (pid %d)", callingPid); } status_t TvService::Client::createVideoFrame(const sp &share_mem, int iSourceMode, int iCapVideoLayerOnly) { - LOGD(" mem=%p size=%d", share_mem->pointer() == NULL, share_mem->size()); - LOGD("iSourceMode :%d iCapVideoLayerOnly = %d \n", iSourceMode, iCapVideoLayerOnly); - int Len = 0; - Mutex::Autolock lock(mLock); - mTvService->mCapVidFrame.InitVCap(share_mem); - - if ((1 == iSourceMode) && (1 == iCapVideoLayerOnly)) { - mTvService->mCapVidFrame.CapMediaPlayerVideoLayerOnly(1920, 1080); + LOGD(" mem=%p size=%d", share_mem->pointer() == NULL, share_mem->size()); + LOGD("iSourceMode :%d iCapVideoLayerOnly = %d \n", iSourceMode, iCapVideoLayerOnly); + int Len = 0; + Mutex::Autolock lock(mLock); + mTvService->mCapVidFrame.InitVCap(share_mem); + + if ((1 == iSourceMode) && (1 == iCapVideoLayerOnly)) { + mTvService->mCapVidFrame.CapMediaPlayerVideoLayerOnly(1920, 1080); #if 0 - mTvService->mCapVidFrame.SetVideoParameter(1920, 1080, 50); - mTvService->mCapVidFrame.VideoStart(); - mTvService->mCapVidFrame.GetVideoData(&Len); - mTvService->mCapVidFrame.VideoStop(); + mTvService->mCapVidFrame.SetVideoParameter(1920, 1080, 50); + mTvService->mCapVidFrame.VideoStart(); + mTvService->mCapVidFrame.GetVideoData(&Len); + mTvService->mCapVidFrame.VideoStop(); #endif - } else if (2 == iSourceMode && 0 == iCapVideoLayerOnly) { - mTvService->mCapVidFrame.CapOsdAndVideoLayer(1920, 1080); - } else if (2 == iSourceMode && 1 == iCapVideoLayerOnly) { - mTvService->mCapVidFrame.CapMediaPlayerVideoLayerOnly(1920, 1080); - } else { - LOGD("=============== NOT SUPPORT=======================\n"); - } - mTvService->mCapVidFrame.DeinitVideoCap(); - - return 0; + } else if (2 == iSourceMode && 0 == iCapVideoLayerOnly) { + mTvService->mCapVidFrame.CapOsdAndVideoLayer(1920, 1080); + } else if (2 == iSourceMode && 1 == iCapVideoLayerOnly) { + mTvService->mCapVidFrame.CapMediaPlayerVideoLayerOnly(1920, 1080); + } else { + LOGD("=============== NOT SUPPORT=======================\n"); + } + mTvService->mCapVidFrame.DeinitVideoCap(); + + return 0; } status_t TvService::Client::createSubtitle(const sp &share_mem) { - mSubBmpBuf = share_mem; - LOGD("createSubtitle pid = %d, mem=%d size=%d", getCallingPid(), share_mem->pointer() == NULL, share_mem->size()); - mpTv->setSubtitleBuffer((char *)mSubBmpBuf->pointer()); - mTvService->mpSubClient = this; - //pSub = new CTvSubtitle(share_mem, this); - //pSub->run(); - return 0; + mSubBmpBuf = share_mem; + LOGD("createSubtitle pid = %d, mem=%d size=%d", getCallingPid(), share_mem->pointer() == NULL, share_mem->size()); + mpTv->setSubtitleBuffer((char *)mSubBmpBuf->pointer()); + mTvService->mpSubClient = this; + //pSub = new CTvSubtitle(share_mem, this); + //pSub->run(); + return 0; } status_t TvService::Client::processCmd(const Parcel &p, Parcel *r) { - int tmp_i_buf[128] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; - unsigned char tmp_uc_buf[512] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; - unsigned char tmp_uc_buf2[512] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; - int8_t tmp_int8_buf[512] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; - static int source_input = 0; - int *data_ptr = NULL; - - int cmd = p.readInt32(); - - LOGD("enter client=%d cmd=%d", getCallingPid(), cmd); - switch (cmd) { - // Tv function - case OPEN_TV: { - break; - } - case CLOSE_TV: { - int ret = mpTv->CloseTv(); - r->writeInt32(ret); - break; - } - case START_TV: { - int mode = p.readInt32(); - int ret = mpTv->StartTvLock(); - //mTvService->mpStartTvClient = this; - mIsStartTv = true; - r->writeInt32(ret); - break; - } - case STOP_TV: { - int ret = mpTv->StopTvLock(); - r->writeInt32(ret); - mIsStartTv = false; - break; - } - case GET_TV_STATUS: { - int ret = 0; - ret = (int)mpTv->GetTvStatus(); - r->writeInt32(ret); - break; - } - case GET_LAST_SOURCE_INPUT: { - int ret = (int)mpTv->GetLastSourceInput(); - r->writeInt32(ret); - break; - } - case GET_CURRENT_SOURCE_INPUT: { - int ret = (int)mpTv->GetCurrentSourceInputLock(); - r->writeInt32(ret); - break; - } - case GET_CURRENT_SOURCE_INPUT_TYPE: { - int ret = 0;//(int)mpTv->Tvin_GetSrcInputType(); - r->writeInt32(ret); - break; - } - case GET_CURRENT_SIGNAL_INFO: { - tvin_info_t siginfo = mpTv->GetCurrentSignalInfo(); - int frame_rate = mpTv->getHDMIFrameRate(); - r->writeInt32(siginfo.trans_fmt); - r->writeInt32(siginfo.fmt); - r->writeInt32(siginfo.status); - r->writeInt32(frame_rate); - break; - } - case IS_SOURCE_SWTICH_DONE: { - //int ret = mpTv->Tv_IsSourceSwtichDone(); - r->writeInt32(0); - break; - } - case SET_SOURCE_INPUT: { - int sourceinput = p.readInt32(); - tvin_window_pos_t win_pos; - LOGD(" SetSourceInput sourceId= %x", sourceinput); - source_input = sourceinput; - int ret = mpTv->SetSourceSwitchInput((tv_source_input_t)sourceinput); - r->writeInt32(ret); - break; - } - case DO_SUSPEND: { - int type = p.readInt32(); - int ret = mpTv->DoSuspend(type); - r->writeInt32(ret); - break; - } - case DO_RESUME: { - int type = p.readInt32(); - int ret = mpTv->DoResume(type); - r->writeInt32(ret); - break; - } - case RUN_ADC_AUTO_CALIBRATION: { - // int ret = mpTv->Tv_RunADCAutoCalibration(); - // r->writeInt32(ret); - break; - } - case IS_DVI_SIGNAL: { - int ret = mpTv->IsDVISignal(); - r->writeInt32(ret); - break; - } - case IS_VGA_TIMEING_IN_HDMI: { - int ret = mpTv->isVgaFmtInHdmi(); - r->writeInt32(ret); - break; - } - case GET_VIDEO_PATH_STATUS: { - int path_type = p.readInt32(); - int ret = 0;//(int)mpTv->Tvin_CheckPathActive((tv_path_type_t)path_type); - r->writeInt32(ret); - break; - } - case GET_VIDEO_STREAM_STATUS: { - // int ret = (int)mpTv->Tvin_CheckVideoStreamStatus(); - // r->writeInt32(ret); - break; - } - case GET_FIRST_START_SWITCH_TYPE: { - //int tmp_val = 0; - //int ret = (int)mpTv->Tv_GetFirstStartSwitchType(&tmp_val); - //r->writeInt32(ret); - r->writeInt32(1); - break; - } - case SET_PREVIEW_WINDOW: { - tvin_window_pos_t win_pos; - win_pos.x1 = p.readInt32(); - win_pos.y1 = p.readInt32(); - win_pos.x2 = p.readInt32(); - win_pos.y2 = p.readInt32(); - int ret = (int)mpTv->SetPreviewWindow(win_pos); - r->writeInt32(ret); - break; - } - - case SET_VIDEO_DISABLE: { - int value = p.readInt32(); - int ret = 0;//(int)mpTv->Tv_SetVideoDisable(value); - r->writeInt32(ret); - break; - } - - case GET_SOURCE_CONNECT_STATUS: { - int source_input = p.readInt32(); - int ret = mpTv->GetSourceConnectStatus((tv_source_input_t)source_input); - r->writeInt32(ret); - break; - } - //Tv function END - - //VGA - case RUN_VGA_AUTO_ADJUST: { - //int ret = mpTv->Tv_RunVGAAutoAdjust(); - int ret = 0; - r->writeInt32(ret); - break; - } - case GET_VGA_AUTO_ADJUST_STATUS: { - // int fmt = p.readInt32(); - //int ret = (int) mpTv->Tv_GetVagAutoAdjustStatus(); - int ret = 0; - r->writeInt32(ret); - break; - } - case IS_VGA_AUTO_ADJUST_DONE: { - int fmt = p.readInt32(); - int ret = 0;//mpTv->Tv_IsVGAAutoAdjustDone((tvin_sig_fmt_t)fmt); - r->writeInt32(ret); - break; - } - case SET_VGA_HPOS: { - // int value = p.readInt32(); - // int fmt = p.readInt32(); - //int ret = mpTv->Tv_SetVGAHPos(value, (tvin_sig_fmt_t)fmt); - int ret = 0; - r->writeInt32(ret); - break; - } - case GET_VGA_HPOS: { - // int fmt = p.readInt32(); - // int ret = mpTv->Tv_GetVGAHPos((tvin_sig_fmt_t)fmt); - int ret = 0; - r->writeInt32(ret); - break; - } - - case SET_VGA_VPOS: { - // int value = p.readInt32(); - // int fmt = p.readInt32(); - // int ret = mpTv->Tv_SetVGAVPos(value, (tvin_sig_fmt_t)fmt); - int ret = 0; - r->writeInt32(ret); - break; - } - case GET_VGA_VPOS: { - // int fmt = p.readInt32(); - // int ret = mpTv->Tv_GetVGAVPos((tvin_sig_fmt_t)fmt); - int ret = 0; - r->writeInt32(ret); - break; - } - - case SET_VGA_CLOCK: { - // int value = p.readInt32(); - // int fmt = p.readInt32(); - // int ret = mpTv->Tv_SetVGAClock(value, (tvin_sig_fmt_t)fmt); - int ret = 0; - r->writeInt32(ret); - break; - } - case GET_VGA_CLOCK: { - // int fmt = p.readInt32(); - // int ret = mpTv->Tv_GetVGAClock((tvin_sig_fmt_t)fmt); - int ret = 0; - r->writeInt32(ret); - break; - } - - case SET_VGA_PHASE: { - // int value = p.readInt32(); - // int fmt = p.readInt32(); - // int ret = mpTv->Tv_SetVGAPhase(value, (tvin_sig_fmt_t)fmt); - int ret = 0; - r->writeInt32(ret); - break; - } - case GET_VGA_PHASE: { - // int fmt = p.readInt32(); - // int ret = mpTv->Tv_GetVGAPhase((tvin_sig_fmt_t)fmt); - int ret = 0; - r->writeInt32(ret); - break; - } - case SET_VGA_AJUST_PARA: { - tvafe_vga_parm_t adjparam; - adjparam.clk_step = p.readInt32(); - adjparam.phase = p.readInt32(); - adjparam.hpos_step = p.readInt32(); - adjparam.vpos_step = p.readInt32(); - adjparam.vga_in_clean = p.readInt32(); - int fmt = p.readInt32(); - int ret = 0/*SetVGAAjustPara(adjparam, (tvin_sig_fmt_t)fmt)*/; - r->writeInt32(ret); - break; - } - case GET_VGA_AJUST_PARA: { - tvafe_vga_parm_t adjparam; - int fmt = p.readInt32(); - int ret = 0/*GetVGAAjustPara(&adjparam, (tvin_sig_fmt_t)fmt)*/; - r->writeInt32(adjparam.clk_step); - r->writeInt32(adjparam.phase); - r->writeInt32(adjparam.hpos_step); - r->writeInt32(adjparam.vpos_step); - r->writeInt32(adjparam.vga_in_clean); - r->writeInt32(ret); - break; - } - case SET_VGAPARAM_DEFAULT: { - // int ret = (int)mpTv->TvinResetVgaAjustParam(); - // r->writeInt32(ret); - break; - } - // VGA END - - // 3D - - case SET_3D_MODE: { - int mode = p.readInt32(); - int ret = mpTv->Tv_Set3DMode((VIDEO_3D_MODE_T)mode); - r->writeInt32(ret); - break; - } - case GET_3D_MODE: { - int ret = (int)mpTv->Tv_Get3DMode(); - r->writeInt32(ret); - break; - } - case SET_3D_LR_SWITH: { - int on_off = p.readInt32(); - //int status = p.readInt32(); - int ret = mpTv->Tv_Set3DLRSwith(on_off); - r->writeInt32(ret); - break; - } - case GET_3D_LR_SWITH: { - int ret = mpTv->Tv_Get3DLRSwith(); - r->writeInt32(ret); - break; - } - case SET_3D_TO_2D_MODE: { - int mode = p.readInt32(); - //int status = p.readInt32(); - int ret = mpTv->Tv_Set3DTo2DMode(mode); - r->writeInt32(ret); - break; - } - case GET_3D_TO_2D_MODE: { - int ret = mpTv->Tv_Get3DTo2DMode(); - r->writeInt32(ret); - break; - } - case SET_3D_DEPTH: { - int value = p.readInt32(); - int ret = mpTv->Tv_Set3DDepth(value); - r->writeInt32(ret); - break; - } - case GET_3D_DEPTH: { - int ret = mpTv->GetSave3DDepth(); - r->writeInt32(ret); - break; - } - // 3D END - - // PQ - case SET_BRIGHTNESS: { - int brightness = p.readInt32(); - int source_type = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetBrightness(brightness, (tv_source_input_type_t)source_type, is_save); - r->writeInt32(ret); - break; - } - case GET_BRIGHTNESS: { - int source_type = p.readInt32(); - LOGD("GET_BRIGHTNESS------------=%d", source_type); - int ret = mpTv->Tv_GetBrightness((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_BRIGHTNESS: { - int brightness = p.readInt32(); - int source_type = p.readInt32(); - int ret = mpTv->Tv_SaveBrightness(brightness, (tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - - case SET_CONTRAST: { - int contrast = p.readInt32(); - int source_type = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetContrast(contrast, (tv_source_input_type_t)source_type, is_save); - r->writeInt32(ret); - break; - } - case GET_CONTRAST: { - int source_type = p.readInt32(); - int ret = mpTv->Tv_GetContrast((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_CONTRAST: { - int contrast = p.readInt32(); - int source_type = p.readInt32(); - int ret = mpTv->Tv_SaveContrast(contrast, (tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SET_SATUATION: { - int satuation = p.readInt32(); - int source_type = p.readInt32(); - int fmt = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetSaturation(satuation, (tv_source_input_type_t)source_type, (tvin_sig_fmt_t)fmt, is_save); - r->writeInt32(ret); - break; - } - case GET_SATUATION: { - int source_type = p.readInt32(); - int ret = mpTv->Tv_GetSaturation((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_SATUATION: { - int satuation = p.readInt32(); - int source_type = p.readInt32(); - int ret = mpTv->Tv_SaveSaturation(satuation, (tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SET_HUE: { - int hue = p.readInt32(); - int source_type = p.readInt32(); - int fmt = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetHue(hue, (tv_source_input_type_t)source_type, (tvin_sig_fmt_t)fmt, is_save); - r->writeInt32(ret); - break; - } - case GET_HUE: { - int source_type = p.readInt32(); - int ret = mpTv->Tv_GetHue((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_HUE: { - int hue = p.readInt32(); - int source_type = p.readInt32(); - int ret = mpTv->Tv_SaveHue(hue, (tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SET_SCENEMODE: { - int mode = p.readInt32(); - int is_save = p.readInt32(); - int ret = 0;//mpTv->Tv_SetSceneMode((vpp_scene_mode_t)mode,is_save); - r->writeInt32(ret); - break; - } - case GET_SCENEMODE: { - int ret = 0;//(int)mpTv->Tv_GetSceneMode(); - r->writeInt32(ret); - break; - } - case SET_PQMODE: { - int mode = p.readInt32(); - int source_type = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetPQMode((vpp_picture_mode_t)mode, (tv_source_input_type_t)source_type, is_save); - r->writeInt32(ret); - break; - } - case GET_PQMODE: { - int source_type = p.readInt32(); - int ret = (int)mpTv->Tv_GetPQMode((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_PQMODE: { - int mode = p.readInt32(); - int source_type = p.readInt32(); - int ret = mpTv->Tv_SavePQMode((vpp_picture_mode_t)mode, (tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SET_SHARPNESS: { - int value = p.readInt32(); - int source_type = p.readInt32(); - int en = p.readInt32(); - int status_3d = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetSharpness(value, (tv_source_input_type_t)source_type, en, is_save); - r->writeInt32(ret); - break; - } - case GET_SHARPNESS: { - int source_type = p.readInt32(); - int ret = mpTv->Tv_GetSharpness((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_SHARPNESS: { - int value = p.readInt32(); - int source_type = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SaveSharpness(value, (tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SET_BACKLIGHT: { - int value = p.readInt32(); - int source_type = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetBacklight(value, (tv_source_input_type_t)source_type, is_save); - r->writeInt32(ret); - break; - } - case GET_BACKLIGHT: { - int source_type = p.readInt32(); - int ret = mpTv->Tv_GetBacklight((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_BACKLIGHT: { - int value = p.readInt32(); - int source_type = p.readInt32(); - int ret = mpTv->Tv_SaveBacklight ( value, (tv_source_input_type_t)source_type ); - r->writeInt32(ret); - break; - } - case SET_BACKLIGHT_SWITCH: { - int value = p.readInt32(); - int ret = mpTv->Tv_SetBacklight_Switch(value); - r->writeInt32(ret); - break; - } - case GET_BACKLIGHT_SWITCH: { - int ret = mpTv->Tv_GetBacklight_Switch(); - r->writeInt32(ret); - break; - } - case SET_COLOR_TEMPERATURE: { - int mode = p.readInt32(); - int source_type = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetColorTemperature((vpp_color_temperature_mode_t)mode, (tv_source_input_type_t)source_type, is_save); - r->writeInt32(ret); - break; - } - case GET_COLOR_TEMPERATURE: { - int source_type = p.readInt32(); - int ret = mpTv->Tv_GetColorTemperature((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_COLOR_TEMPERATURE: { - int mode = p.readInt32(); - int source_type = p.readInt32(); - int ret = mpTv->Tv_SaveColorTemperature ( (vpp_color_temperature_mode_t)mode, (tv_source_input_type_t)source_type ); - r->writeInt32(ret); - break; - } - case SET_DISPLAY_MODE: { - int mode = p.readInt32(); - int source_type = p.readInt32(); - int fmt = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetDisplayMode((vpp_display_mode_t)mode, (tv_source_input_type_t)source_type, (tvin_sig_fmt_t)fmt, is_save); - r->writeInt32(ret); - break; - } - case GET_DISPLAY_MODE: { - int source_type = p.readInt32(); - int ret = (int)mpTv->Tv_GetDisplayMode((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_DISPLAY_MODE: { - int mode = p.readInt32(); - int source_type = p.readInt32(); - int ret = mpTv->Tv_SaveDisplayMode((vpp_display_mode_t)mode, (tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SET_NOISE_REDUCTION_MODE: { - int mode = p.readInt32(); - int source_type = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetNoiseReductionMode((vpp_noise_reduction_mode_t)mode, (tv_source_input_type_t)source_type, is_save); - r->writeInt32(ret); - break; - } - case GET_NOISE_REDUCTION_MODE: { - int source_type = p.readInt32(); - int ret = mpTv->Tv_GetNoiseReductionMode((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_NOISE_REDUCTION_MODE: { - int mode = p.readInt32(); - int source_type = p.readInt32(); - int ret = mpTv->Tv_SaveNoiseReductionMode((vpp_noise_reduction_mode_t)mode, (tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case VPP_SPLIT_SCREEN_EFFECT: { - int mode = p.readInt32(); - int width = p.readInt32(); - int reverse = p.readInt32(); - int ret = mpTv->Tv_SplitScreenEffect(mode, width, reverse); - r->writeInt32(ret); - break; - } - // PQ END - - // FACTORY - case FACTORY_SETPQMODE_BRIGHTNESS: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int brightness = p.readInt32(); - int ret = mpTv->Tv_FactorySetPQMode_Brightness(source_type, pq_mode, brightness); - r->writeInt32(ret); - break; - } - case FACTORY_GETPQMODE_BRIGHTNESS: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetPQMode_Brightness(source_type, pq_mode); - r->writeInt32(ret); - break; - } - case FACTORY_SETPQMODE_CONTRAST: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int contrast = p.readInt32(); - int ret = mpTv->Tv_FactorySetPQMode_Contrast(source_type, pq_mode, contrast); - r->writeInt32(ret); - break; - } - case FACTORY_GETPQMODE_CONTRAST: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetPQMode_Contrast(source_type, pq_mode); - r->writeInt32(ret); - break; - } - case FACTORY_SETPQMODE_SATURATION: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int saturation = p.readInt32(); - int ret = mpTv->Tv_FactorySetPQMode_Saturation(source_type, pq_mode, saturation); - r->writeInt32(ret); - break; - } - case FACTORY_GETPQMODE_SATURATION: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetPQMode_Saturation(source_type, pq_mode); - r->writeInt32(ret); - break; - } - case FACTORY_SETPQMODE_HUE: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int hue = p.readInt32(); - int ret = mpTv->Tv_FactorySetPQMode_Hue(source_type, pq_mode, hue); - r->writeInt32(ret); - break; - } - case FACTORY_GETPQMODE_HUE: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetPQMode_Hue(source_type, pq_mode); - r->writeInt32(ret); - break; - } - case FACTORY_SETPQMODE_SHARPNESS: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int sharpness = p.readInt32(); - int ret = mpTv->Tv_FactorySetPQMode_Sharpness(source_type, pq_mode, sharpness); - r->writeInt32(ret); - break; - } - case FACTORY_GETPQMODE_SHARPNESS: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetPQMode_Sharpness(source_type, pq_mode); - - r->writeInt32(ret); - break; - } - case FACTORY_SETTESTPATTERN: { - int pattern = p.readInt32(); - int ret = mpTv->Tv_FactorySetTestPattern(pattern); - r->writeInt32(ret); - break; - } - case FACTORY_GETTESTPATTERN: { - int ret = mpTv->Tv_FactoryGetTestPattern(); - r->writeInt32(ret); - break; - } - case FACTORY_SETPATTERN_YUV: { - int blend = p.readInt32(); - int y = p.readInt32(); - int u = p.readInt32(); - int v = p.readInt32(); - int ret = mpTv->Tv_FactorySetScreenColor(blend,y,u,v); - r->writeInt32(ret); - break; - } - case FACTORY_RESETPQMODE: { - int ret = mpTv->Tv_FactoryResetPQMode(); - r->writeInt32(ret); - break; - } - case FACTORY_RESETCOLORTEMP: { - int ret = mpTv->Tv_FactoryResetColorTemp(); - r->writeInt32(ret); - break; - } - case FACTORY_RESETPAMAMSDEFAULT: { - int ret = mpTv->Tv_FactorySetParamsDefault(); - r->writeInt32(ret); - break; - } - case FACTORY_SETDDRSSC: { - int setp = p.readInt32(); - int ret = mpTv->Tv_FactorySetDDRSSC(setp); - r->writeInt32(ret); - break; - } - case FACTORY_GETDDRSSC: { - int ret = mpTv->Tv_FactoryGetDDRSSC(); - r->writeInt32(ret); - break; - } - case FACTORY_SETLVDSSSC: { - int setp = p.readInt32(); - int ret = mpTv->Tv_FactorySetLVDSSSC(setp); - r->writeInt32(ret); - break; - } - case FACTORY_GETLVDSSSC: { - int ret = mpTv->Tv_FactoryGetLVDSSSC(); - r->writeInt32(ret); - break; - } - case FACTORY_SETNOLINEPARAMS: { - noline_params_t params; - int noline_params_type = p.readInt32(); - int source_type = p.readInt32(); - params.osd0 = p.readInt32(); - params.osd25 = p.readInt32(); - params.osd50 = p.readInt32(); - params.osd75 = p.readInt32(); - params.osd100 = p.readInt32(); - int ret = mpTv->Tv_FactorySetNolineParams(noline_params_type, source_type, params); - r->writeInt32(ret); - break; - } - case FACTORY_GETNOLINEPARAMS: { - int noline_params_type = p.readInt32(); - int source_type = p.readInt32(); - noline_params_t params = mpTv->Tv_FactoryGetNolineParams(noline_params_type, source_type); - r->writeInt32(params.osd0); - r->writeInt32(params.osd25); - r->writeInt32(params.osd50); - r->writeInt32(params.osd75); - r->writeInt32(params.osd100); - break; - } - case FACTORY_SETOVERSCAN: { - tvin_cutwin_t cutwin_t; - int source_type = p.readInt32(); - int fmt = p.readInt32(); - int status_3d = p.readInt32(); - int trans_fmt = p.readInt32(); - cutwin_t.hs = p.readInt32(); - cutwin_t.he = p.readInt32(); - cutwin_t.vs = p.readInt32(); - cutwin_t.ve = p.readInt32(); - int ret = mpTv->Tv_FactorySetOverscan(source_type, fmt, status_3d, trans_fmt, cutwin_t); - r->writeInt32(ret); - break; - } - case FACTORY_GETOVERSCAN: { - int source_type = p.readInt32(); - int fmt = p.readInt32(); - int status_3d = p.readInt32(); - int trans_fmt = p.readInt32(); - tvin_cutwin_t cutwin_t = mpTv->Tv_FactoryGetOverscan(source_type, fmt, status_3d, trans_fmt); - r->writeInt32(cutwin_t.hs); - r->writeInt32(cutwin_t.he); - r->writeInt32(cutwin_t.vs); - r->writeInt32(cutwin_t.ve); - break; - } - case DELETE_PARAM_PQ_DB: { - int tmpRet = mpTv->Tv_ReplacePqDb(); - r->writeInt32(tmpRet); - } - case REPLACE_PARAM_PQ_DB: { - int tmpRet; - String16 tmp_str16; - String8 value_str; - - tmp_str16 = p.readString16(); - value_str = String8(tmp_str16); - - tmpRet = mpTv->Tv_ReplacePqDb(value_str.string()); - r->writeInt32(tmpRet); - break; - } - case FACTORY_SET_OUT_DEFAULT: { - int ret = 0; - ret = mpTv->Tv_SSMFacRestoreDefaultSetting(); - r->writeInt32(ret); - break; - } - case FACTORY_GETGLOBALOGO_RGAIN: { - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_GETGLOBALOGO_GGAIN: { - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_GETGLOBALOGO_BGAIN: { - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_GETGLOBALOGO_ROFFSET: { - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_GETGLOBALOGO_GOFFSET: { - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_GETGLOBALOGO_BOFFSET: { - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_SETGLOBALOGO_RGAIN: { - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_SETGLOBALOGO_GGAIN: { - int p1 = p.readInt32(); - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_SETGLOBALOGO_BGAIN: { - int p1 = p.readInt32(); - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_SETGLOBALOGO_ROFFSET: { - int p1 = p.readInt32(); - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_SETGLOBALOGO_GOFFSET: { - int p1 = p.readInt32(); - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_SETGLOBALOGO_BOFFSET: { - int p1 = p.readInt32(); - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_CLEAN_ALL_TABLE_FOR_PROGRAM: { - int ret = mpTv->ClearAnalogFrontEnd(); - mpTv->clearDbAllProgramInfoTable(); - r->writeInt32(ret); - break; - } - case FACTORY_SETBACKLIGHT_PWM_FREQUENCY: { - int value = p.readInt32(); - int ret = 0;//mpTv->GetVpp().Tv_FactorySetBacklightPWM_Frequency(value); - r->writeInt32(ret); - break; - } - case FACTORY_GETBACKLIGHT_PWM_FREQUENCY: { - int ret = 0;//mpTv->GetVpp().Tv_FactoryGetBacklightPWM_Frequency(); - r->writeInt32(ret); - break; - } - case FACTORY_SETBACKLIGHT_SWITCH_STATUS: { - int value = p.readInt32(); - int ret = 0;//mpTv->GetVpp().Tv_FactorySetBacklight_Switch_status(value); - r->writeInt32(ret); - break; - } - case FACTORY_GETBACKLIGHT_SWITCH_STATUS: { - int ret = 0;//mpTv->GetVpp().Tv_FactoryGetBacklight_Switch_status(); - r->writeInt32(ret); - break; - } - case FACTORY_SETBACKLIGHT_PWM_DUTY: { - int value = p.readInt32(); - int ret = 0;//mpTv->GetVpp().Tv_FactorySetBacklightPWM_Duty(value); - r->writeInt32(ret); - break; - } - case FACTORY_GETBACKLIGHT_PWM_DUTY: { - int ret = 0;//mpTv->GetVpp().Tv_FactoryGetBacklightPWM_Duty(); - r->writeInt32(ret); - break; - } - - case FACTORY_SETLVDS_COLOR_DEPTH: { - int value = p.readInt32(); - int ret = 0;//mpTv->GetVpp().Tv_FactorySetLVDS_ColorDepth(value); - r->writeInt32(ret); - break; - } - case FACTORY_GETLVDS_COLOR_DEPTH: { - int ret = 0;//mpTv->GetVpp().Tv_FactoryGetLVDS_ColorDepth(); - r->writeInt32(ret); - break; - } - case FACTORY_SETLVDS_DITHER_STATUS: { - int value = p.readInt32(); - int ret = 0;//mpTv->GetVpp().Tv_FactorySetLVDS_ColorDither_status(value); - r->writeInt32(ret); - break; - } - case FACTORY_GETLVDS_DITHER_STATUS: { - int ret = 0;//mpTv->GetVpp().Tv_FactoryGetLVDS_ColorDither_status(); - r->writeInt32(ret); - break; - } - case FACTORY_SETLVDS_MAPPING_STATUS: { - int value = p.readInt32(); - int ret = 0;//mpTv->GetVpp().Tv_FactorySetLVDS_Mapping_status(value); - r->writeInt32(ret); - break; - } - case FACTORY_GETLVDS_MAPPING_STATUS: { - int ret = 0;//mpTv->GetVpp().Tv_FactoryGetLVDS_Mapping_status(); - r->writeInt32(ret); - break; - } - case FACTORY_SETLVDS_PORT_SWAP_STATUS: { - int value = p.readInt32(); - int ret = 0;//mpTv->GetVpp().Tv_FactorySetLVDS_PortSwap_status(value); - r->writeInt32(ret); - break; - } - case FACTORY_GETLVDS_PORT_SWAP_STATUS: { - int ret = 0;//mpTv->GetVpp().Tv_FactoryGetLVDS_PortSwap_status(); - r->writeInt32(ret); - break; - } - // FACTORY END - - // AUDIO - // AUDIO MUTE - case SET_AUDIO_MUTEKEY_STATUS: { - int status = p.readInt32(); - int ret = mpTv->SetAudioMuteForSystem(status); - r->writeInt32(ret); - break; - } - case GET_AUDIO_MUTEKEY_STATUS: { - int ret = mpTv->GetAudioMuteForSystem(); - r->writeInt32(ret); - break; - } - case SET_AUDIO_FORCE_MUTE_STATUS: { - int status = p.readInt32(); - int ret = 0;//pTv->getTvAudio().AudioSetForceMuteStatus(status); - r->writeInt32(ret); - break; - } - case GET_AUDIO_FORCE_MUTE_STATUS: { - int ret = 0;//mpTv->AudioGetForceMuteStatus(); - r->writeInt32(ret); - break; - } - case SET_AUDIO_AVOUT_MUTE_STATUS: { - int status = p.readInt32(); - int ret = mpTv->SetAudioAVOutMute(status); - r->writeInt32(ret); - break; - } - case GET_AUDIO_AVOUT_MUTE_STATUS: { - int ret = mpTv->GetAudioAVOutMute(); - r->writeInt32(ret); - break; - } - case SET_AUDIO_SPDIF_MUTE_STATUS: { - int status = p.readInt32(); - int ret = mpTv->SetAudioSPDIFMute(status); - r->writeInt32(ret); - break; - } - case GET_AUDIO_SPDIF_MUTE_STATUS: { - int ret = mpTv->GetAudioSPDIFMute(); - r->writeInt32(ret); - break; - } - // AUDIO MASTER VOLUME - case SET_AUDIO_MASTER_VOLUME: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioMasterVolume(vol); - r->writeInt32(ret); - break; - } - case GET_AUDIO_MASTER_VOLUME: { - int ret = mpTv->GetAudioMasterVolume(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_MASTER_VOLUME: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioMasterVolume(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_MASTER_VOLUME: { - int ret = mpTv->GetCurAudioMasterVolume(); - r->writeInt32(ret); - break; - } - //AUDIO BALANCE - case SET_AUDIO_BALANCE: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioBalance(vol); - r->writeInt32(ret); - break; - } - case GET_AUDIO_BALANCE: { - int ret = mpTv->GetAudioBalance(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_BALANCE: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioBalance(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_BALANCE: { - int ret = mpTv->GetCurAudioBalance(); - r->writeInt32(ret); - break; - } - //AUDIO SUPPERBASS VOLUME - case SET_AUDIO_SUPPER_BASS_VOLUME: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioSupperBassVolume(vol); - r->writeInt32(ret); - break; - } - case GET_AUDIO_SUPPER_BASS_VOLUME: { - int ret = mpTv->GetAudioSupperBassVolume(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_SUPPER_BASS_VOLUME: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioSupperBassVolume(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_SUPPER_BASS_VOLUME: { - int ret = mpTv->GetCurAudioSupperBassVolume(); - r->writeInt32(ret); - break; - } - //AUDIO SUPPERBASS SWITCH - case SET_AUDIO_SUPPER_BASS_SWITCH: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioSupperBassSwitch(vol); - r->writeInt32(ret); - break; - } - case GET_AUDIO_SUPPER_BASS_SWITCH: { - int ret = mpTv->GetAudioSupperBassSwitch(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_SUPPER_BASS_SWITCH: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioSupperBassSwitch(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_SUPPER_BASS_SWITCH: { - int ret = mpTv->GetCurAudioSupperBassSwitch(); - r->writeInt32(ret); - break; - } - //AUDIO SRS SURROUND SWITCH - case SET_AUDIO_SRS_SURROUND: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioSRSSurround(vol); - mpTv->RefreshAudioMasterVolume(SOURCE_MAX); - r->writeInt32(ret); - break; - } - case GET_AUDIO_SRS_SURROUND: { - int ret = mpTv->GetAudioSRSSurround(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_SRS_SURROUND: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioSrsSurround(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_SRS_SURROUND: { - int ret = mpTv->GetCurAudioSRSSurround(); - r->writeInt32(ret); - break; - } - //AUDIO SRS DIALOG CLARITY - case SET_AUDIO_SRS_DIALOG_CLARITY: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioSrsDialogClarity(vol); - mpTv->RefreshAudioMasterVolume(SOURCE_MAX); - r->writeInt32(ret); - break; - } - case GET_AUDIO_SRS_DIALOG_CLARITY: { - int ret = mpTv->GetAudioSrsDialogClarity(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_SRS_DIALOG_CLARITY: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioSrsDialogClarity(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_SRS_DIALOG_CLARITY: { - int ret = mpTv->GetCurAudioSrsDialogClarity(); - r->writeInt32(ret); - break; - } - //AUDIO SRS TRUBASS - case SET_AUDIO_SRS_TRU_BASS: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioSrsTruBass(vol); - mpTv->RefreshAudioMasterVolume(SOURCE_MAX); - r->writeInt32(ret); - break; - } - case GET_AUDIO_SRS_TRU_BASS: { - int ret = mpTv->GetAudioSrsTruBass(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_SRS_TRU_BASS: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioSrsTruBass(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_SRS_TRU_BASS: { - int ret = mpTv->GetCurAudioSrsTruBass(); - r->writeInt32(ret); - break; - } - //AUDIO BASS - case SET_AUDIO_BASS_VOLUME: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioBassVolume(vol); - r->writeInt32(ret); - break; - } - case GET_AUDIO_BASS_VOLUME: { - int ret = mpTv->GetAudioBassVolume(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_BASS_VOLUME: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioBassVolume(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_BASS_VOLUME: { - int ret = mpTv->GetCurAudioBassVolume(); - r->writeInt32(ret); - break; - } - //AUDIO TREBLE - case SET_AUDIO_TREBLE_VOLUME: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioTrebleVolume(vol); - r->writeInt32(ret); - break; - } - case GET_AUDIO_TREBLE_VOLUME: { - int ret = mpTv->GetAudioTrebleVolume(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_TREBLE_VOLUME: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioTrebleVolume(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_TREBLE_VOLUME: { - int ret = mpTv->GetCurAudioTrebleVolume(); - r->writeInt32(ret); - break; - } - //AUDIO SOUND MODE - case SET_AUDIO_SOUND_MODE: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioSoundMode(vol); - r->writeInt32(ret); - break; - } - case GET_AUDIO_SOUND_MODE: { - int ret = mpTv->GetAudioSoundMode(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_SOUND_MODE: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioSoundMode(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_SOUND_MODE: { - int ret = mpTv->GetCurAudioSoundMode(); - r->writeInt32(ret); - break; - } - //AUDIO WALL EFFECT - case SET_AUDIO_WALL_EFFECT: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioWallEffect(vol); - r->writeInt32(ret); - break; - } - case GET_AUDIO_WALL_EFFECT: { - int ret = mpTv->GetAudioWallEffect(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_WALL_EFFECT: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioWallEffect(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_WALL_EFFECT: { - int ret = mpTv->GetCurAudioWallEffect(); - r->writeInt32(ret); - break; - } - //AUDIO EQ MODE - case SET_AUDIO_EQ_MODE: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioEQMode(vol); - r->writeInt32(ret); - break; - } - case GET_AUDIO_EQ_MODE: { - int ret = mpTv->GetAudioEQMode(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_EQ_MODE: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioEQMode(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_EQ_MODE: { - int ret = mpTv->GetCurAudioEQMode(); - r->writeInt32(ret); - break; - } - //AUDIO EQ GAIN - case GET_AUDIO_EQ_RANGE: { - int buf[2]; - int ret = mpTv->GetAudioEQRange(buf); - r->writeInt32(2); - r->writeInt32(buf[0]); - r->writeInt32(buf[1]); - r->writeInt32(ret); - break; - } - case GET_AUDIO_EQ_BAND_COUNT: { - int ret = mpTv->GetAudioEQBandCount(); - r->writeInt32(ret); - break; - } - case SET_AUDIO_EQ_GAIN: { - int i = 0, tmp_buf_size = 0, ret = 0; - tmp_buf_size = p.readInt32(); - for (i = 0; i < tmp_buf_size; i++) { - tmp_i_buf[i] = p.readInt32(); - } - ret = mpTv->SetAudioEQGain(tmp_i_buf); - r->writeInt32(ret); - break; - } - case GET_AUDIO_EQ_GAIN: { - int i = 0, tmp_buf_size = 0, ret = 0; - ret = mpTv->GetAudioEQGain(tmp_i_buf); - tmp_buf_size = mpTv->GetAudioEQBandCount(); - r->writeInt32(tmp_buf_size); - for (i = 0; i < tmp_buf_size; i++) { - r->writeInt32(tmp_i_buf[i]); - } - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_EQ_GAIN: { - int i = 0, tmp_buf_size = 0, ret = 0; - tmp_buf_size = p.readInt32(); - for (i = 0; i < tmp_buf_size; i++) { - tmp_i_buf[i] = p.readInt32(); - } - ret = mpTv->SaveCurAudioEQGain(tmp_i_buf); - r->writeInt32(ret); - break; - } - case GET_CUR_EQ_GAIN: { - int i = 0, tmp_buf_size = 0, ret = 0; - ret = mpTv->GetCurAudioEQGain(tmp_i_buf); - tmp_buf_size = mpTv->GetAudioEQBandCount(); - r->writeInt32(tmp_buf_size); - for (i = 0; i < tmp_buf_size; i++) { - r->writeInt32(tmp_i_buf[i]); - } - r->writeInt32(ret); - break; - } - case SET_AUDIO_EQ_SWITCH: { - int tmpVal = p.readInt32(); - int ret = mpTv->SetAudioEQSwitch(tmpVal); - r->writeInt32(ret); - break; - } - // AUDIO SPDIF SWITCH - case SET_AUDIO_SPDIF_SWITCH: { - int tmp_val = p.readInt32(); - int ret = mpTv->SetAudioSPDIFSwitch(tmp_val); - r->writeInt32(ret); - break; - } - case GET_AUDIO_SPDIF_SWITCH: { - int ret = 0;//mpTv->GetAudioSPDIFSwitch(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_SPDIF_SWITCH: { - int tmp_val = p.readInt32(); - int ret = mpTv->SaveCurAudioSPDIFSwitch(tmp_val); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_SPDIF_SWITCH: { - int ret = mpTv->GetCurAudioSPDIFSwitch(); - r->writeInt32(ret); - break; - } - //AUDIO SPDIF MODE - case SET_AUDIO_SPDIF_MODE: { - int vol = p.readInt32(); - int progId = p.readInt32(); - int audioTrackId = p.readInt32(); - int ret = mpTv->SetAudioSPDIFMode(vol); - mpTv->ResetAudioDecoderForPCMOutput(); - r->writeInt32(ret); - break; - } - case GET_AUDIO_SPDIF_MODE: { - int ret = 0;//mpTv->GetAudioSPDIFMode(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_SPDIF_MODE: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioSPDIFMode(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_SPDIF_MODE: { - int ret = mpTv->GetCurAudioSPDIFMode(); - r->writeInt32(ret); - break; - } - case OPEN_AMAUDIO: { - int sr = p.readInt32(); - int output_dev = p.readInt32(); - int ret = 0;//mpTv->OpenAmAudio(sr, output_dev); - r->writeInt32(ret); - break; - } - case CLOSE_AMAUDIO: { - int ret = 0;//mpTv->CloseAmAudio(); - r->writeInt32(ret); - break; - } - case SET_AMAUDIO_INPUT_SR: { - int sr = p.readInt32(); - int output_dev = p.readInt32(); - int ret = 0;//mpTv->SetAmAudioInputSr(sr, output_dev); - r->writeInt32(ret); - break; - } - case SET_AMAUDIO_OUTPUT_MODE: { - int tmp_val = p.readInt32(); - int ret = mpTv->SetAmAudioOutputMode(tmp_val); - r->writeInt32(ret); - break; - } - case SET_AMAUDIO_MUSIC_GAIN: { - int tmp_val = p.readInt32(); - int ret = mpTv->SetAmAudioMusicGain(tmp_val); - r->writeInt32(ret); - break; - } - case SET_AMAUDIO_LEFT_GAIN: { - int tmp_val = p.readInt32(); - int ret = mpTv->SetAmAudioLeftGain(tmp_val); - r->writeInt32(ret); - break; - } - case SET_AMAUDIO_RIGHT_GAIN: { - int tmp_val = p.readInt32(); - int ret = mpTv->SetAmAudioRightGain(tmp_val); - r->writeInt32(ret); - break; - } - case SELECT_LINE_IN_CHANNEL: { - int channel = p.readInt32(); - int ret = mpTv->AudioLineInSelectChannel(channel); - r->writeInt32(ret); - LOGD("SELECT_LINE_IN_CHANNEL: channel = %d; ret = %d.\n", channel, ret); - break; - } - case SET_KALAOK_IO_LEVEL: { - int level = p.readInt32(); - int ret = mpTv->SetKalaokIO(level); - ret =mpTv->AudioSetAudioInSource(CC_AUDIO_IN_SOURCE_LINEIN); - r->writeInt32(ret); - LOGD("set line in source CC_AUDIO_IN_SOURCE_LINEIN\n"); - break; - } - - case SET_LINE_IN_CAPTURE_VOL: { - int l_vol = p.readInt32(); - int r_vol = p.readInt32(); - int ret = mpTv->AudioSetLineInCaptureVolume(l_vol, r_vol); - r->writeInt32(ret); - break; - } - case HANDLE_AUDIO_HEADSET_PLUG_IN: { - int ret = mpTv->AudioHandleHeadsetPlugIn(); - r->writeInt32(ret); - break; - } - case HANDLE_AUDIO_HEADSET_PULL_OUT: { - int ret = mpTv->AudioHandleHeadsetPullOut(); - r->writeInt32(ret); - break; - } - case SET_AUDIO_VOL_COMP: { - int tmpVal = p.readInt32(); - int ret = mpTv->SetCurProgramAudioVolumeCompensationVal(tmpVal); - r->writeInt32(ret); - break; - } - case GET_AUDIO_VOL_COMP: { - int ret = mpTv->GetAudioVolumeCompensationVal(-1); - r->writeInt32(ret); - break; - } - case SAVE_AUDIO_VOL_COMP: { - int tmpVal = p.readInt32(); - int ret = -1;//mpTv->atvSaveAudioVolumeCompensationVal(tmpVal); - LOGD("this cmd is empty!!!!!!!!!!!!!!!!!!!"); - r->writeInt32(ret); - break; - } - case SET_NOISE_GATE_THRESHOLD: { - int ret = 0; - r->writeInt32(ret); - break; - } - case SET_AUDIO_SOURCE_FOR_KARAOKE: { - int sourceinput = p.readInt32(); - int ret = mpTv->Tv_SetAudioSourceType((tv_source_input_t)sourceinput); - r->writeInt32(ret); - break; - } - case SET_DBX_TV_MODE: { - int mode = p.readInt32(); - int son_value = p.readInt32(); - int vol_value = p.readInt32(); - int sur_value = p.readInt32(); - int ret = mpTv->SetDbxTvMode(mode, son_value, vol_value, sur_value); - r->writeInt32(ret); - break; - } - case GET_DBX_TV_MODE: { - int mode ; - int son_value ; - int vol_value ; - int sur_value ; - int ret = mpTv->GetDbxTvMode(&mode, &son_value, &vol_value, &sur_value); - r->writeInt32(mode); - r->writeInt32(son_value); - r->writeInt32(vol_value); - r->writeInt32(sur_value); - r->writeInt32(ret); - break; - } - - case SET_DRC_ONOFF: { - int val = p.readInt32(); - int ret = mpTv->Tv_SetDRC_OnOff(val); - r->writeInt32(ret); - break; - } - case GET_DRC_ONOFF: { - int ret = mpTv->Tv_GetDRC_OnOff(); - r->writeInt32(ret); - break; - } - // AUDIO END - - // SSM - case SSM_INIT_DEVICE: { - int tmpRet = 0; - tmpRet = mpTv->Tv_SSMRestoreDefaultSetting();//mpTv->Tv_SSMInitDevice(); - r->writeInt32(tmpRet); - break; - } - /*case SSM_SAVE_ONE_BYTE: { - int tmpOffset = p.readInt32(); - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = SSMWriteOneByte(tmpOffset, tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_ONE_BYTE: { - int tmpOffset = p.readInt32(); - int tmpRet = 0; - SSMReadOneByte(tmpOffset, &tmpRet); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_N_BYTES: { - int i = 0, tmp_offset = 0, tmp_data_len = 0, ret = -1; - - tmp_offset = p.readInt32(); - tmp_data_len = p.readInt32(); - - if (tmp_data_len > 0) { - data_ptr = new int[tmp_data_len]; - - if (data_ptr != NULL) { - for (i = 0; i < tmp_data_len; i++) { - data_ptr[i] = p.readInt32(); - } - - ret = SSMWriteNTypes(tmp_offset, tmp_data_len, data_ptr); - - delete data_ptr; - data_ptr = NULL; - } - } - - r->writeInt32(ret); - break; - } - case SSM_READ_N_BYTES: { - int i = 0, tmp_offset = 0, tmp_data_len = 0, ret = -1; - tmp_offset = p.readInt32(); - tmp_data_len = p.readInt32(); - - if (tmp_data_len > 0) { - data_ptr = new int[tmp_data_len]; - if (data_ptr != NULL) { - ret = SSMReadNTypes(tmp_offset, tmp_data_len, data_ptr); - if (ret < 0) { - tmp_data_len = 0; - } - r->writeInt32(tmp_data_len); - for (i = 0; i < tmp_data_len; i++) { - r->writeInt32(data_ptr[i]); - } - delete data_ptr; - data_ptr = NULL; - } - } - r->writeInt32(ret); - break; - }*/ - case SSM_SAVE_POWER_ON_OFF_CHANNEL: { - int tmpPowerChanNum = p.readInt32(); - int tmpRet; - tmpRet = SSMSavePowerOnOffChannel(tmpPowerChanNum); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_POWER_ON_OFF_CHANNEL: { - int tmpRet = 0; - tmpRet = SSMReadPowerOnOffChannel(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_SOURCE_INPUT: { - int tmpSouceInput = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveSourceInput(tmpSouceInput); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_SOURCE_INPUT: { - int tmpRet = 0; - tmpRet = SSMReadSourceInput(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_LAST_SOURCE_INPUT: { - int tmpLastSouceInput = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveLastSelectSourceInput(tmpLastSouceInput); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_LAST_SOURCE_INPUT: { - int tmpRet = 0; - tmpRet = SSMReadLastSelectSourceInput(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_SYS_LANGUAGE: { - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveSystemLanguage(tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_SYS_LANGUAGE: { - int tmpRet = 0; - tmpRet = SSMReadSystemLanguage(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_AGING_MODE: { - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveAgingMode(tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_AGING_MODE: { - int tmpRet = 0; - tmpRet = SSMReadAgingMode(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_PANEL_TYPE: { - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = SSMSavePanelType(tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_PANEL_TYPE: { - int tmpRet = 0; - tmpRet = SSMReadPanelType(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_MAC_ADDR: { - int i = 0, tmp_buf_size = 0, ret = 0; - tmp_buf_size = p.readInt32(); - for (i = 0; i < tmp_buf_size; i++) { - tmp_uc_buf[i] = p.readInt32(); - } - ret = KeyData_SaveMacAddress(tmp_uc_buf); - r->writeInt32(ret); - break; - } - case SSM_READ_MAC_ADDR: { - int i = 0, tmp_buf_size = 0, ret = 0; - ret = KeyData_ReadMacAddress(tmp_uc_buf); - tmp_buf_size = KeyData_GetMacAddressDataLen(); - r->writeInt32(tmp_buf_size); - for (i = 0; i < tmp_buf_size; i++) { - r->writeInt32(tmp_uc_buf[i]); - } - r->writeInt32(ret); - break; - } - case SSM_SAVE_BAR_CODE: { - int i = 0, tmp_buf_size = 0, ret = 0; - tmp_buf_size = p.readInt32(); - for (i = 0; i < tmp_buf_size; i++) { - tmp_uc_buf[i] = p.readInt32(); - } - ret = KeyData_SaveBarCode(tmp_uc_buf); - r->writeInt32(ret); - break; - } - case SSM_READ_BAR_CODE: { - int i = 0, tmp_buf_size = 0, ret = 0; - ret = KeyData_ReadBarCode(tmp_uc_buf); - tmp_buf_size = KeyData_GetBarCodeDataLen(); - r->writeInt32(tmp_buf_size); - for (i = 0; i < tmp_buf_size; i++) { - r->writeInt32(tmp_uc_buf[i]); - } - r->writeInt32(ret); - break; - } - case SSM_SAVE_PROJECT_ID: { - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = KeyData_SaveProjectID(tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_PROJECT_ID: { - int tmpRet = 0; - tmpRet = KeyData_ReadProjectID(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_HDCPKEY: { - int i = 0, tmp_buf_size = 0, ret = 0; - tmp_buf_size = p.readInt32(); - for (i = 0; i < tmp_buf_size; i++) { - tmp_uc_buf[i] = p.readInt32(); - } - ret = SSMSaveHDCPKey(tmp_uc_buf); - r->writeInt32(ret); - break; - } - case SSM_READ_HDCPKEY: { - int i = 0, tmp_buf_size = 0, ret = 0; - ret = SSMReadHDCPKey(tmp_uc_buf); - tmp_buf_size = SSMGetHDCPKeyDataLen(); - r->writeInt32(tmp_buf_size); - for (i = 0; i < tmp_buf_size; i++) { - r->writeInt32(tmp_uc_buf[i]); - } - r->writeInt32(ret); - break; - } - case SSM_SAVE_POWER_ON_MUSIC_SWITCH: { - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = SSMSavePowerOnMusicSwitch(tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_POWER_ON_MUSIC_SWITCH: { - int tmpRet = 0; - tmpRet = SSMReadPowerOnMusicSwitch(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_POWER_ON_MUSIC_VOL: { - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = SSMSavePowerOnMusicVolume(tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_POWER_ON_MUSIC_VOL: { - int tmpRet = 0; - tmpRet = SSMReadPowerOnMusicVolume(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_SYS_SLEEP_TIMER: { - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveSystemSleepTimer(tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_SYS_SLEEP_TIMER: { - int tmpRet = 0; - tmpRet = SSMReadSystemSleepTimer(); - r->writeInt32(tmpRet); - break; - } - case SSM_SET_BUS_STATUS: { - int tmpVal = p.readInt32(); - int tmpRet = 0; - //showboz - //tmpRet = SSMSetBusStatus(tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_GET_BUS_STATUS: { - int tmpRet = 0; - //showboz - //tmpRet = SSMGetBusStatus(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_INPUT_SRC_PARENTAL_CTL: { - int tmpSourceIndex = p.readInt32(); - int tmpCtlFlag = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveInputSourceParentalControl(tmpSourceIndex, tmpCtlFlag); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_INPUT_SRC_PARENTAL_CTL: { - int tmpSourceIndex = p.readInt32(); - int tmpRet = 0; - tmpRet = SSMReadInputSourceParentalControl(tmpSourceIndex); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_PARENTAL_CTL_SWITCH: { - int tmpSwitchFlag = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveParentalControlSwitch(tmpSwitchFlag); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_PARENTAL_CTL_SWITCH: { - int tmpRet = 0; - tmpRet = SSMReadParentalControlSwitch(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_PARENTAL_CTL_PASS_WORD: { - String16 pass_wd_str = p.readString16(); - int tmpRet; - tmpRet = SSMSaveParentalControlPassWord((unsigned char *)pass_wd_str.string(), pass_wd_str.size() * sizeof(unsigned short)); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_PARENTAL_CTL_PASS_WORD: { - int tmpChanID = p.readInt32(); - unsigned short tmp_buf [SSM_RW_PARENTAL_CTL_PASSWORD_LEN + 1]; - String16 pass_wd_str; - SSMReadParentalControlPassWord(tmp_buf); - tmp_buf[SSM_RW_PARENTAL_CTL_PASSWORD_LEN / sizeof(unsigned short)] = 0; - //pass_wd_str.setTo((const unsigned short *) tmp_buf); - //r->writeString16(pass_wd_str); - break; - } - case SSM_SAVE_USING_DEF_HDCP_KEY_FLAG: { - break; - } - case SSM_READ_USING_DEF_HDCP_KEY_FLAG: { - break; - } - case SSM_GET_CUSTOMER_DATA_START: { - int tmpRet = 0; - tmpRet = SSMGetCustomerDataStart(); - r->writeInt32(tmpRet); - break; - } - case SSM_GET_CUSTOMER_DATA_LEN: { - int tmpRet = 0; - tmpRet = SSMGetCustomerDataLen(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_STANDBY_MODE: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveStandbyMode(tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_STANDBY_MODE: { - int tmpRet = 0; - tmpRet = SSMReadStandbyMode(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_LOGO_ON_OFF_FLAG: { - int tmpSwitchFlag = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveLogoOnOffFlag(tmpSwitchFlag); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_LOGO_ON_OFF_FLAG: { - int tmpRet = 0; - tmpRet = SSMReadLogoOnOffFlag(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_HDMIEQ_MODE: { - int tmpSwitchFlag = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveHDMIEQMode(tmpSwitchFlag); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_HDMIEQ_MODE: { - int tmpRet = 0; - tmpRet = SSMReadHDMIEQMode(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_HDMIINTERNAL_MODE: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveHDMIInternalMode(tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_HDMIINTERNAL_MODE: { - int tmpRet = 0; - tmpRet = SSMReadHDMIInternalMode(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_DISABLE_3D: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveDisable3D(tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_DISABLE_3D: { - int tmpRet = 0; - tmpRet = SSMReadDisable3D(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_GLOBAL_OGOENABLE: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveGlobalOgoEnable(tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_GLOBAL_OGOENABLE: { - int tmpRet = 0; - tmpRet = SSMReadGlobalOgoEnable(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_NON_STANDARD_STATUS: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveNonStandardValue(tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_NON_STANDARD_STATUS: { - int tmpRet = 0; - tmpRet = SSMReadNonStandardValue(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_ADB_SWITCH_STATUS: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveAdbSwitchValue(tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_ADB_SWITCH_STATUS: { - int tmpRet = 0; - tmpRet = SSMReadAdbSwitchValue(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_SERIAL_CMD_SWITCH_STATUS: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveSerialCMDSwitchValue(tmp_val); - tmpRet |= mpTv->SetSerialSwitch(SERIAL_A, tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_SERIAL_CMD_SWITCH_STATUS: { - int tmpRet = 0; - tmpRet = SSMReadSerialCMDSwitchValue(); - r->writeInt32(tmpRet); - break; - } - case SSM_SET_HDCP_KEY: { - int tmpRet = 0; - tmpRet = SSMSetHDCPKey(); - r->writeInt32(tmpRet); - break; - } - case SSM_REFRESH_HDCPKEY: { - int tmpRet = 0; - tmpRet = SSMRefreshHDCPKey(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_CHROMA_STATUS: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveChromaStatus(tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_CA_BUFFER_SIZE: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveCABufferSizeValue(tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_CA_BUFFER_SIZE: { - int tmpRet = 0; - tmpRet = SSMReadCABufferSizeValue(); - r->writeInt32(tmpRet); - break; - } - case SSM_GET_ATV_DATA_START: { - int tmpRet = 0; - tmpRet = SSMGetATVDataStart(); - r->writeInt32(tmpRet); - break; - } - case SSM_GET_ATV_DATA_LEN: { - int tmpRet = 0; - tmpRet = SSMGetATVDataLen(); - r->writeInt32(tmpRet); - break; - } - case SSM_GET_VPP_DATA_START: { - int tmpRet = 0; - tmpRet = SSMGetVPPDataStart(); - r->writeInt32(tmpRet); - break; - } - case SSM_GET_VPP_DATA_LEN: { - int tmpRet = 0; - tmpRet = SSMGetVPPDataLen(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_NOISE_GATE_THRESHOLD_STATUS: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveNoiseGateThresholdValue(tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_NOISE_GATE_THRESHOLD_STATUS: { - int tmpRet = 0; - tmpRet = SSMReadNoiseGateThresholdValue(); - r->writeInt32(tmpRet); - break; - } - case SSM_EEPROM_SAVE_ONE_BYTE_N310_N311: { - int tmpOffset = p.readInt32(); - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveEEP_One_N310_N311(tmpOffset, tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_EEPROM_READ_ONE_BYTE_N310_N311: { - int tmpOffset = p.readInt32(); - int tmpRet = 0; - tmpRet = SSMReadEEP_One_N310_N311(tmpOffset); - r->writeInt32(tmpRet); - break; - } - case SSM_EEPROM_SAVE_N_BYTES_N310_N311: { - int i = 0, tmp_offset = 0, tmp_data_len = 0, ret = -1; - - tmp_offset = p.readInt32(); - tmp_data_len = p.readInt32(); - - if (tmp_data_len > 0) { - data_ptr = new int[tmp_data_len]; - - if (data_ptr != NULL) { - for (i = 0; i < tmp_data_len; i++) { - data_ptr[i] = p.readInt32(); - } - - ret = SSMSaveEEP_N_N310_N311(tmp_offset, tmp_data_len, data_ptr); - - delete data_ptr; - data_ptr = NULL; - } - } - - r->writeInt32(ret); - break; - } - case SSM_EEPROM_READ_N_BYTES_N310_N311: { - int i = 0, tmp_offset = 0, tmp_data_len = 0, ret = -1; - tmp_offset = p.readInt32(); - tmp_data_len = p.readInt32(); - - if (tmp_data_len > 0) { - data_ptr = new int[tmp_data_len]; - if (data_ptr != NULL) { - ret = SSMReadEEP_N_N310_N311(tmp_offset, tmp_data_len, data_ptr); - if (ret < 0) { - tmp_data_len = 0; - } - r->writeInt32(tmp_data_len); - for (i = 0; i < tmp_data_len; i++) { - r->writeInt32(data_ptr[i]); - } - delete data_ptr; - data_ptr = NULL; - } - } - r->writeInt32(ret); - break; - } - case SSM_FLASH_SAVE_ONE_BYTE_N310_N311: { - int tmpOffset = p.readInt32(); - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveFlash_One_N310_N311(tmpOffset, tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_FLASH_READ_ONE_BYTE_N310_N311: { - int tmpOffset = p.readInt32(); - int tmpRet = 0; - tmpRet = SSMReadFlash_One_N310_N311(tmpOffset); - r->writeInt32(tmpRet); - break; - } - case SSM_FLASH_SAVE_N_BYTES_N310_N311: { - int i = 0, tmp_offset = 0, tmp_data_len = 0, ret = -1; - - tmp_offset = p.readInt32(); - tmp_data_len = p.readInt32(); - - if (tmp_data_len > 0) { - data_ptr = new int[tmp_data_len]; - - if (data_ptr != NULL) { - for (i = 0; i < tmp_data_len; i++) { - data_ptr[i] = p.readInt32(); - } - - ret = SSMSaveFlash_N_N310_N311(tmp_offset, tmp_data_len, data_ptr); - - delete data_ptr; - data_ptr = NULL; - } - } - - r->writeInt32(ret); - break; - } - case SSM_FLASH_READ_N_BYTES_N310_N311: { - int i = 0, tmp_offset = 0, tmp_data_len = 0, ret = -1; - tmp_offset = p.readInt32(); - tmp_data_len = p.readInt32(); - - if (tmp_data_len > 0) { - data_ptr = new int[tmp_data_len]; - if (data_ptr != NULL) { - ret = SSMReadFlash_N_N310_N311(tmp_offset, tmp_data_len, data_ptr); - if (ret < 0) { - tmp_data_len = 0; - } - r->writeInt32(tmp_data_len); - for (i = 0; i < tmp_data_len; i++) { - r->writeInt32(data_ptr[i]); - } - delete data_ptr; - data_ptr = NULL; - } - } - r->writeInt32(ret); - break; - } - // SSM END - - //MISC - case MISC_PROP_SET: { - int tmpRet; - String16 tmp_str16; - String8 key_str, value_str; - - tmp_str16 = p.readString16(); - key_str = String8(tmp_str16); - tmp_str16 = p.readString16(); - value_str = String8(tmp_str16); - - tmpRet = property_set(key_str.string(), value_str.string()); - r->writeInt32(tmpRet); - break; - } - case MISC_PROP_GET: { - char prop_value[PROPERTY_VALUE_MAX]; - String16 tmp_str16; - String8 key_str, def_str; - - tmp_str16 = p.readString16(); - key_str = String8(tmp_str16); - tmp_str16 = p.readString16(); - def_str = String8(tmp_str16); - - memset(prop_value, '\0', PROPERTY_VALUE_MAX); - property_get(key_str.string(), prop_value, def_str.string()); - tmp_str16 = String16(prop_value); - - r->writeString16(tmp_str16); - break; - } - case MISC_CFG_SET: { - int tmpRet; - String16 tmp_str16; - String8 key_str, value_str; - - tmp_str16 = p.readString16(); - key_str = String8(tmp_str16); - tmp_str16 = p.readString16(); - value_str = String8(tmp_str16); - - tmpRet = config_set_str(CFG_SECTION_TV, key_str.string(), value_str.string()); - r->writeInt32(tmpRet); - break; - } - case MISC_CFG_GET: { - const char *prop_value; - String16 tmp_str16; - String8 key_str, def_str; - - tmp_str16 = p.readString16(); - key_str = String8(tmp_str16); - tmp_str16 = p.readString16(); - def_str = String8(tmp_str16); - - prop_value = config_get_str(CFG_SECTION_TV, key_str.string(), def_str.string()); - tmp_str16 = String16(prop_value); - - r->writeString16(tmp_str16); - break; - } - case MISC_READ_ADC_VAL: { - int tmpChanNum = p.readInt32(); - int tmpRet = 0; - tmpRet = ReadADCSpecialChannelValue(tmpChanNum); - r->writeInt32(tmpRet); - break; - } - case MISC_SET_WDT_USER_PET: { - int counter = p.readInt32(); - int ret = TvMisc_SetUserCounter(counter); - r->writeInt32(ret); - break; - } - case MISC_SET_WDT_USER_COUNTER: { - int counter_time_out = p.readInt32(); - int ret = TvMisc_SetUserCounterTimeOut(counter_time_out); - r->writeInt32(ret); - break; - } - case MISC_SET_WDT_USER_PET_RESET_ENABLE: { - int enable = p.readInt32(); - int ret = TvMisc_SetUserPetResetEnable(enable); - r->writeInt32(ret); - break; - } - case MISC_GET_TV_API_VERSION: { - const char *tmp_str8; - String16 tmp_str16; - - // write tvapi version info - tmp_str8 = tvservice_get_git_branch_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - - tmp_str8 = tvservice_get_git_version_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - - tmp_str8 = tvservice_get_last_chaned_time_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - - tmp_str8 = tvservice_get_build_time_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - - tmp_str8 = tvservice_get_build_name_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - break; - } - case MISC_GET_DVB_API_VERSION: { - const char *tmp_str8; - String16 tmp_str16; - - // write dvb version info - tmp_str8 = dvb_get_git_branch_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - - tmp_str8 = dvb_get_git_version_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - - tmp_str8 = dvb_get_last_chaned_time_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - - tmp_str8 = dvb_get_build_time_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - - tmp_str8 = dvb_get_build_name_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - - break; - } - case MISC_SERIAL_SWITCH: { - int dev_id = p.readInt32(); - int switch_val = p.readInt32(); - int ret = mpTv->SetSerialSwitch(dev_id, switch_val); - r->writeInt32(ret); - break; - } - case MISC_SERIAL_SEND_DATA: { - int i = 0, tmp_buf_size = 0, ret = 0; - - int dev_id = p.readInt32(); - - tmp_buf_size = p.readInt32(); - if (tmp_buf_size > sizeof(tmp_uc_buf)) { - tmp_buf_size = sizeof(tmp_uc_buf); - } - - for (i = 0; i < tmp_buf_size; i++) { - tmp_uc_buf[i] = p.readInt32() & 0xFF; - } - - ret = mpTv->SendSerialData(dev_id, tmp_buf_size, tmp_uc_buf); - r->writeInt32(ret); - break; - } - case MISC_CHANNEL_EXPORT: { - LOGD("MISC_CHANNEL_EXPORT"); - int ret = 0; - String16 tmp_str16; - String8 tmp_str; - - tmp_str16 = p.readString16(); - tmp_str = String8(tmp_str16); - - ret = mpTv->ChannelExport(tmp_str.string()); - r->writeInt32(ret); - break; - } - case MISC_CHANNEL_IMPORT: { - LOGD("MISC_CHANNEL_IMPORT"); - String16 tmp_str16; - String8 tmp_str; - - tmp_str16 = p.readString16(); - tmp_str = String8(tmp_str16); - int ret = 0; - ret = mpTv->ChannelImport(tmp_str.string()); - r->writeInt32(ret); - break; - } - case MISC_GET_PROJECT_INFO: { - String16 tmp_str16; - project_info_t tmpInfo; - - if (mpTv->Tv_GetProjectInfo(&tmpInfo) < 0) { - strcpy(tmpInfo.version, "UNKOWN"); - strcpy(tmpInfo.panel_type, "UNKOWN"); - strcpy(tmpInfo.panel_outputmode, "UNKOWN"); - strcpy(tmpInfo.panel_rev, "UNKOWN"); - strcpy(tmpInfo.panel_name, "UNKOWN"); - strcpy(tmpInfo.amp_curve_name, "UNKOWN"); - } - - r->writeString16(String16(tmpInfo.version)); - r->writeString16(String16(tmpInfo.panel_type)); - r->writeString16(String16(tmpInfo.panel_outputmode)); - r->writeString16(String16(tmpInfo.panel_rev)); - r->writeString16(String16(tmpInfo.panel_name)); - r->writeString16(String16(tmpInfo.amp_curve_name)); - break; - } - case MISC_GET_PLATFORM_TYPE: { - int ret = mpTv->Tv_GetPlatformType(); - r->writeInt32(ret); - break; - } - //MISC END - - // EXTAR - case SET_DEBUG_SERIAL_PORT_ONOFF: { - int on_off = p.readInt32(); - int ret = mpTv->SetDebugSerialOnOff(on_off); - r->writeInt32(ret); - break; - } - - case GET_DEBUG_SERIAL_PORT_ONOFF: { - int ret = mpTv->GetDebugSerialOnOff(); - r->writeInt32(ret); - break; - } - case DELETE_DIR_FILES: { - String16 strPath = p.readString16(); - if (strPath.size() <= 0) { - r->writeInt32(-1); - break; - } - String8 strP8 = String8(strPath); - int tmp_flag = p.readInt32(); - int ret = TvMisc_DeleteDirFiles(strP8.string(), tmp_flag); - r->writeInt32(ret); - break; - } - case DTV_SUBTITLE_INIT: { - int bitmapWidth = p.readInt32(); - int bitmapHeight = p.readInt32(); - r->writeInt32(mpTv->initSubtitle(bitmapWidth, bitmapHeight)); - break; - } - case DTV_SUBTITLE_LOCK: { - r->writeInt32(mpTv->lockSubtitle()); - break; - } - case DTV_SUBTITLE_UNLOCK: { - r->writeInt32(mpTv->unlockSubtitle()); - break; - } - case DTV_GET_SUBTITLE_SWITCH: { - r->writeInt32(mpTv->getSubSwitchStatus()); - break; - } - case DTV_START_SUBTITLE: { - int dmx_id = p.readInt32(); - int pid = p.readInt32(); - int page_id = p.readInt32(); - int anc_page_id = p.readInt32(); - r->writeInt32(mpTv->startSubtitle(dmx_id, pid, page_id, anc_page_id)); - break; - } - case DTV_STOP_SUBTITLE: { - r->writeInt32(mpTv->stopSubtitle()); - break; - } - case DTV_GET_SUBTITLE_INDEX: { - int progId = p.readInt32(); - CTvProgram prog; - CTvProgram::selectByID(progId, prog); - r->writeInt32(prog.getSubtitleIndex(progId)); - break; - } - case DTV_SET_SUBTITLE_INDEX: { - int progId = p.readInt32(); - int index = p.readInt32(); - CTvProgram prog; - CTvProgram::selectByID(progId, prog); - r->writeInt32(prog.setSubtitleIndex(progId, index)); - break; - } - case ATV_GET_CURRENT_PROGRAM_ID: { - int atvLastProgramId = mpTv->getATVProgramID(); - r->writeInt32(atvLastProgramId); - break; - } - case DTV_GET_CURRENT_PROGRAM_ID: { - int dtvLastProgramId = mpTv->getDTVProgramID(); - r->writeInt32(dtvLastProgramId); - break; - } - case ATV_SAVE_PROGRAM_ID: { - int progID = p.readInt32(); - int retCnt = 0; - mpTv->saveATVProgramID(progID); - r->writeInt32(retCnt); - break; - } - case ATV_GET_MIN_MAX_FREQ: { - int min, max; - int tmpRet = mpTv->getATVMinMaxFreq(&min, &max); - r->writeInt32(min); - r->writeInt32(max); - r->writeInt32(tmpRet); - break; - } - case DTV_GET_SCAN_FREQUENCY_LIST: { - Vector > out; - int tmpRet = CTvRegion::getChannelListByName("CHINA,Default DTMB ALL", out); - r->writeInt32(out.size()); - for (int i = 0; i < (int)out.size(); i++) { - r->writeInt32(out[i]->getID()); - r->writeInt32(out[i]->getFrequency()); - } - r->writeInt32(tmpRet); - break; - } - case DTV_GET_CHANNEL_INFO: { - int dbID = p.readInt32(); - channel_info_t chan_info; - int ret = mpTv->getChannelInfoBydbID(dbID, chan_info); - r->writeInt32(chan_info.freq); - r->writeInt32(chan_info.uInfo.dtvChanInfo.strength); - r->writeInt32(chan_info.uInfo.dtvChanInfo.quality); - r->writeInt32(chan_info.uInfo.dtvChanInfo.ber); - r->writeInt32(ret); - break; - } - case ATV_GET_CHANNEL_INFO: { - int dbID = p.readInt32(); - channel_info_t chan_info; - int ret = mpTv->getChannelInfoBydbID(dbID, chan_info); - r->writeInt32(chan_info.freq); - r->writeInt32(chan_info.uInfo.atvChanInfo.finefreq); - r->writeInt32(chan_info.uInfo.atvChanInfo.videoStd); - r->writeInt32(chan_info.uInfo.atvChanInfo.audioStd); - r->writeInt32(chan_info.uInfo.atvChanInfo.isAutoStd); - r->writeInt32(ret); - break; - } - case ATV_SCAN_MANUAL: { - int tmpRet = 0; - int startFreq = p.readInt32(); - int endFreq = p.readInt32(); - int videoStd = p.readInt32(); - int audioStd = p.readInt32(); - tmpRet = mpTv->atvMunualScan(startFreq, endFreq, videoStd, audioStd); - mTvService->mpScannerClient = this; - r->writeInt32(tmpRet); - break; - } - - - case ATV_SCAN_AUTO: { - int tmpRet = 0; - LOGD("%s, atv auto scan!!!\n", "TV"); - int videoStd = p.readInt32(); - int audioStd = p.readInt32(); - int searchType = p.readInt32(); - tmpRet = mpTv->atvAutoScan(videoStd, audioStd, searchType); - mTvService->mpScannerClient = this; - r->writeInt32(tmpRet); - break; - } - case DTV_SCAN_MANUAL: { - int tmpRet = 0; - int freq = p.readInt32(); - tmpRet = mpTv->dtvManualScan(freq, freq); - mTvService->mpScannerClient = this; - r->writeInt32(tmpRet); - break; - } - case DTV_SCAN_MANUAL_BETWEEN_FREQ: { - int tmpRet = 0; - int beginFreq = p.readInt32(); - int endFreq = p.readInt32(); - int modulation = p.readInt32(); - tmpRet = mpTv->dtvManualScan(beginFreq, endFreq, modulation); - mTvService->mpScannerClient = this; - r->writeInt32(tmpRet); - break; - } - case DTV_SCAN_AUTO: { - int tmpRet = 0; - tmpRet = mpTv->dtvAutoScan(); - mTvService->mpScannerClient = this; - r->writeInt32(tmpRet); - break; - } - case DTV_SCAN_AUTO_ATSC: { - int tmpRet = 0; - int attenna = p.readInt32(); - int vstd = p.readInt32(); - int astd = p.readInt32(); - tmpRet = mpTv->dtvAutoScanAtscLock(attenna, vstd, astd); - mTvService->mpScannerClient = this; - r->writeInt32(tmpRet); - break; - } - case TV_SUBTITLE_DRAW_END: { - int tmpRet = 0; - //if(pSub)pSub->lock.unlock(); - r->writeInt32(tmpRet); - break; - } - case STOP_PROGRAM_PLAY: { - int tmpRet = -1; - tmpRet = mpTv->stopPlayingLock(); - r->writeInt32(tmpRet); - break; - } - case DTV_TEST_1: { - // int progid = p.readInt32(); - //CTvProgram prog; - // int ret = CTvProgram::selectByID(progid, prog); - //CTvEvent ev; - //ret = ev.getProgPresentEvent(prog.getSrc(), prog.getID(), mpTv->getTvTime(), ev); - //r->writeString16(String16(ev.getName())); - break; - } - case DTV_TEST_2: { - //int cmd = p.readInt32(); - //CTvDatabase::GetTvDb()->importXmlToDB("/etc/tv_default.xml"); - //r->writeString16(String16("xml")); - break; - } - - case TV_CLEAR_ALL_PROGRAM: { - int tmpRet = 0; - int arg0 = p.readInt32(); - - tmpRet = mpTv->clearAllProgram(arg0); - mTvService->mpScannerClient = this; - r->writeInt32(tmpRet); - break; - } - - case GET_DISPLAY_RESOLUTION_CONFIG: { - int tmpRet = 0; - tmpRet = mpTv->GetDisplayResolutionConfig(); - r->writeInt32(tmpRet); - break; - } - - case GET_DISPLAY_RESOLUTION_INFO: { - int tmpRet = 0; - tmpRet = mpTv->GetDisplayResolutionInfo(); - r->writeInt32(tmpRet); - break; - } - - case HDMIRX_CEC_SEND_CUSTOM_MESSAGE: { - int i = 0, tmp_buf_size = 0, ret = 0; - tmp_buf_size = p.readInt32(); - for (i = 0; i < tmp_buf_size; i++) { - tmp_uc_buf[i] = p.readInt32(); - } - - int tmpRet = 0; - tmpRet = mpTv->SendHDMIRxCECCustomMessage(tmp_uc_buf); - r->writeInt32(tmpRet); - break; - } - - case HDMIRX_CEC_SEND_CUSTOM_WAIT_REPLY_MESSAGE: { - int i = 0, tmp_buf_size = 0, ret = 0; - int WaitCmd = 0, timeout = 0; - tmp_buf_size = p.readInt32(); - for (i = 0; i < tmp_buf_size; i++) { - tmp_uc_buf[i] = p.readInt32(); - } - - WaitCmd = p.readInt32(); - timeout = p.readInt32(); - - int tmpRet = 0; - tmpRet = mpTv->SendHDMIRxCECCustomMessageAndWaitReply(tmp_uc_buf, tmp_uc_buf2, WaitCmd, timeout); - - r->writeInt32(tmpRet); - if (tmpRet > 0) { - for (i = 0; i < tmpRet; i++) { - r->writeInt32(tmp_uc_buf2[i]); - } - } - - r->writeInt32(tmpRet); - break; - } - - case HDMIRX_CEC_SEND_BROADCAST_STANDBY_MESSAGE: { - int tmpRet = 0; - tmpRet = mpTv->SendHDMIRxCECBoradcastStandbyMessage(); - r->writeInt32(tmpRet); - break; - } - - case HDMIRX_CEC_SEND_GIVE_CEC_VERSION_MESSAGE: { - int i = 0, tmp_buf_size = 0, ret = 0; - int sourceinput = p.readInt32(); - LOGD("HDMIRX_CEC_SEND_GIVE_CEC_VERSION_MESSAGE: sourceinput = %x", sourceinput); - tmp_buf_size = mpTv->SendHDMIRxCECGiveCECVersionMessage((tv_source_input_t)sourceinput, tmp_uc_buf); - r->writeInt32(tmp_buf_size); - for (i = 0; i < tmp_buf_size; i++) { - r->writeInt32(tmp_uc_buf[i]); - } - r->writeInt32(tmp_buf_size); - break; - } - - case HDMIRX_CEC_SEND_GIVE_DEV_VENDOR_ID_MESSAGE: { - int i = 0, tmp_buf_size = 0, ret = 0; - int sourceinput = p.readInt32(); - LOGD("HDMIRX_CEC_SEND_GIVE_DEV_VENDOR_ID_MESSAGE: sourceinput = %x", sourceinput); - tmp_buf_size = mpTv->SendHDMIRxCECGiveDeviceVendorIDMessage((tv_source_input_t)sourceinput, tmp_uc_buf); - r->writeInt32(tmp_buf_size); - for (i = 0; i < tmp_buf_size; i++) { - r->writeInt32(tmp_uc_buf[i]); - } - r->writeInt32(tmp_buf_size); - break; - } - - case HDMIRX_CEC_SEND_GIVE_OSD_NAME_MESSAGE: { - int i = 0, tmp_buf_size = 0, ret = 0; - int sourceinput = p.readInt32(); - LOGD("HDMIRX_CEC_SEND_GIVE_OSD_NAME_MESSAGE: sourceinput = %x", sourceinput); - tmp_buf_size = mpTv->SendHDMIRxCECGiveOSDNameMessage((tv_source_input_t)sourceinput, tmp_uc_buf); - r->writeInt32(tmp_buf_size); - for (i = 0; i < tmp_buf_size; i++) { - r->writeInt32(tmp_uc_buf[i]); - } - r->writeInt32(tmp_buf_size); - break; - } - - case GET_HDMI_KSV_INFO: { - int tmpRet = 0; - int ksv_data[2] = {0, 0}; - tmpRet = mpTv->GetHdmiHdcpKeyKsvInfo(ksv_data); - r->writeInt32(tmpRet); - r->writeInt32(ksv_data[0]); - r->writeInt32(ksv_data[1]); - break; - } - - case HDMI_OUT_TOWHAT: { - r->writeInt32(mpTv->hdmiOutWithFbc()?1:0); - break; - } - case FACTORY_FBC_UPGRADE: { - String16 tmpName = p.readString16(); - String8 strName = String8(tmpName); - sprintf((char *)tmp_uc_buf, "%s", strName.string()); - int mode = p.readInt32(); - int upgrade_blk_size = p.readInt32(); - int ret = mpTv->StartUpgradeFBC((char *)tmp_uc_buf, mode, upgrade_blk_size); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_BRIGHTNESS: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Brightness(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_BRIGHTNESS: { - int ret = mpTv->Tv_FactoryGet_FBC_Brightness(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_CONTRAST: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Contrast(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_CONTRAST: { - int ret = mpTv->Tv_FactoryGet_FBC_Contrast(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_SATURATION: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Saturation(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_SATURATION: { - int ret = mpTv->Tv_FactoryGet_FBC_Saturation(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_HUE: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_HueColorTint(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_HUE: { - int ret = mpTv->Tv_FactoryGet_FBC_HueColorTint(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_BACKLIGHT: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Backlight(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_BACKLIGHT: { - int ret = mpTv->Tv_FactoryGet_FBC_Backlight(); - r->writeInt32(ret); - break; - } - case FACTROY_FBC_SET_LIGHT_SENSOR_STATUS_N310: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_LightSensor_Status_N310(value); - r->writeInt32(ret); - break; - } - - case FACTROY_FBC_GET_LIGHT_SENSOR_STATUS_N310: { - int ret = mpTv->Tv_FactoryGet_FBC_LightSensor_Status_N310(); - r->writeInt32(ret); - break; - } - case FACTROY_FBC_SET_DREAM_PANEL_STATUS_N310: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Dream_Panel_Status_N310(value); - r->writeInt32(ret); - break; - } - - case FACTROY_FBC_GET_DREAM_PANEL_STATUS_N310: { - int ret = mpTv->Tv_FactoryGet_FBC_Dream_Panel_Status_N310(); - r->writeInt32(ret); - break; - } - case FACTROY_FBC_SET_MULT_PQ_STATUS_N310: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_MULT_PQ_Status_N310(value); - r->writeInt32(ret); - break; - } - - case FACTROY_FBC_GET_MULT_PQ_STATUS_N310: { - int ret = mpTv->Tv_FactoryGet_FBC_MULT_PQ_Status_N310(); - r->writeInt32(ret); - break; - } - case FACTROY_FBC_SET_MEMC_STATUS_N310: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_MEMC_Status_N310(value); - r->writeInt32(ret); - break; - } - - case FACTROY_FBC_GET_MEMC_STATUS_N310: { - int ret = mpTv->Tv_FactoryGet_FBC_MEMC_Status_N310(); - r->writeInt32(ret); - break; - } - - case MISC_SET_2K_TO_4K_SCALE_UP_MODE : { - int value = p.readInt32(); - int ret = mpTv->Tv_Set2k4k_ScalerUp_Mode(value); - r->writeInt32(ret); - break; - } - - case MISC_GET_2K_TO_4K_SCALE_UP_MODE: { - int ret = mpTv->Tv_Get2k4k_ScalerUp_Mode(); - r->writeInt32(ret); - break; - } - case FACTORY_FBC_SET_BACKLIGHT_EN : { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_backlight_onoff(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_BACKLIGHT_EN: { - int ret = mpTv->Tv_FactoryGet_FBC_backlight_onoff(); - r->writeInt32(ret); - break; - } - case FACTORY_FBC_TEST_PATTERN: { - int value = p.readInt32(); - int ret = mpTv->Tv_SetTestPattern(value); - r->writeInt32(ret); - break; - } - case FACTORY_FBC_SET_LVDS_SSG: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_LVDS_SSG_Set(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_ELEC_MODE: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_ELEC_MODE(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_ELEC_MODE: { - int ret = mpTv->Tv_FactoryGet_FBC_ELEC_MODE(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_BACKLIGHT_N360: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_BACKLIGHT_N360(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_BACKLIGHT_N360: { - int ret = mpTv->Tv_FactoryGet_FBC_BACKLIGHT_N360(); - r->writeInt32(ret); - break; - } - - - case FACTORY_FBC_SET_PIC_MODE: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Picture_Mode(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_PIC_MODE: { - int ret = mpTv->Tv_FactoryGet_FBC_Picture_Mode(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_TEST_PATTERN: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Set_Test_Pattern(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_TEST_PATTERN: { - int ret = mpTv->Tv_FactoryGet_FBC_Get_Test_Pattern(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_GAIN_RED: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Gain_Red(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_GAIN_RED: { - int ret = mpTv->Tv_FactoryGet_FBC_Gain_Red(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_GAIN_GREEN: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Gain_Green(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_GAIN_GREEN: { - int ret = mpTv->Tv_FactoryGet_FBC_Gain_Green(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_GAIN_BLUE: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Gain_Blue(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_GAIN_BLUE: { - int ret = mpTv->Tv_FactoryGet_FBC_Gain_Blue(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_OFFSET_RED: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Offset_Red(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_OFFSET_RED: { - int ret = mpTv->Tv_FactoryGet_FBC_Offset_Red(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_OFFSET_GREEN: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Offset_Green(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_OFFSET_GREEN: { - int ret = mpTv->Tv_FactoryGet_FBC_Offset_Green(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_OFFSET_BLUE: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Offset_Blue(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_OFFSET_BLUE: { - int ret = mpTv->Tv_FactoryGet_FBC_Offset_Blue(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_COLORTEMP_MODE: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_ColorTemp_Mode(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_COLORTEMP_MODE: { - int ret = mpTv->Tv_FactoryGet_FBC_ColorTemp_Mode(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_COLORTEMP_MODE_N360: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_ColorTemp_Mode_N360(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_COLORTEMP_MODE_N360: { - int ret = mpTv->Tv_FactoryGet_FBC_ColorTemp_Mode_N360(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_WB_INIT: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_WB_Initial(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_WB_INIT: { - int ret = mpTv->Tv_FactoryGet_FBC_WB_Initial(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_MAINCODE_VERSION: { - char sw_version[64]; - char build_time[64]; - char git_version[64]; - char git_branch[64]; - char build_name[64]; - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - fbcIns->cfbc_Get_FBC_MAINCODE_Version(COMM_DEV_SERIAL, sw_version, build_time, git_version, git_branch, build_name); - r->writeString16(String16(sw_version)); - r->writeString16(String16(build_time)); - r->writeString16(String16(git_version)); - r->writeString16(String16(git_branch)); - r->writeString16(String16(build_name)); - } else { - r->writeString16(String16("No FBC")); - r->writeString16(String16("No FBC")); - r->writeString16(String16("No FBC")); - r->writeString16(String16("No FBC")); - r->writeString16(String16("No FBC")); - } - break; - } - case FACTORY_SET_SN: { - char StrFactSN[256] = {0}; - String16 strTemFactorySn = p.readString16(); - String8 strFactorySn = String8(strTemFactorySn); - sprintf((char *)StrFactSN, "%s", strFactorySn.string()); - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - int iRet = fbcIns->cfbc_Set_FBC_Factory_SN(COMM_DEV_SERIAL, (const char *)StrFactSN); - r->writeInt32(iRet); - } else { - r->writeInt32(-1); - } - break; - } - case FACTORY_GET_SN: { - char factorySerialNumber[256] = {0}; - memset((void *)factorySerialNumber, 0, 256); - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - fbcIns->cfbc_Get_FBC_Factory_SN(COMM_DEV_SERIAL, factorySerialNumber); - r->writeString16(String16(factorySerialNumber)); - } else { - r->writeString16(String16("No FBC")); - } - break; - } - case FACTORY_FBC_PANEL_GET_INFO: { - char panel_model[64]; - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - fbcIns->cfbc_Get_FBC_Get_PANel_INFO(COMM_DEV_SERIAL, panel_model); - r->writeString16(String16(panel_model)); - } else { - r->writeString16(String16("")); - } - break; - } - case FACTORY_FBC_PANEL_POWER_SWITCH: { - int value = p.readInt32(); - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - int ret = fbcIns->cfbc_Set_FBC_panel_power_switch(COMM_DEV_SERIAL, value); - r->writeInt32(ret); - } else { - r->writeInt32(-1); - } - break; - } - case FACTORY_FBC_PANEL_SUSPEND: { - int value = p.readInt32(); - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - int ret = fbcIns->cfbc_Set_FBC_suspend(COMM_DEV_SERIAL, value); - r->writeInt32(ret); - } else { - r->writeInt32(-1); - } - break; - } - case FACTORY_FBC_PANEL_USER_SETTING_DEFAULT: { - int value = p.readInt32(); - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - int ret = fbcIns->cfbc_Set_FBC_User_Setting_Default(COMM_DEV_SERIAL, value); - r->writeInt32(ret); - } else { - r->writeInt32(-1); - } - break; - } - case FACTORY_FBC_VIDEO_MUTE: { - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - int ret = fbcIns->cfbc_Set_VMute(COMM_DEV_SERIAL, 1); - r->writeInt32(ret); - } else { - r->writeInt32(-1); - } - break; - } - case FACTORY_FBC_POWER_REBOOT: { - int value = p.readInt32(); - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - int ret = fbcIns->cfbc_SendRebootToUpgradeCmd(COMM_DEV_SERIAL, value); - r->writeInt32(ret); - } else { - r->writeInt32(-1); - } - break; - } - case FACTORY_FBC_SEND_KEY_TO_FBC: { - int keyCode = p.readInt32(); - int param = p.readInt32(); - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - int ret = fbcIns->cfbc_FBC_Send_Key_To_Fbc(COMM_DEV_SERIAL, keyCode, param); - r->writeInt32(ret); - } else { - r->writeInt32(-1); - } - break; - } - case FACTORY_WHITE_BALANCE_SET_GAIN_RED: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySetWhiteBalanceRedGain(source_type, colortemp_mode, value); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_GET_GAIN_RED: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetWhiteBalanceRedGain(source_type, colortemp_mode); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_SET_GAIN_GREEN: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySetWhiteBalanceGreenGain(source_type, colortemp_mode, value); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_GET_GAIN_GREEN: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetWhiteBalanceGreenGain(source_type, colortemp_mode); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_SET_GAIN_BLUE: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySetWhiteBalanceBlueGain(source_type, colortemp_mode, value); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_GET_GAIN_BLUE: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetWhiteBalanceBlueGain(source_type, colortemp_mode); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_SET_OFFSET_RED: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySetWhiteBalanceRedOffset(source_type, colortemp_mode, value); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_GET_OFFSET_RED: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetWhiteBalanceRedOffset(source_type, colortemp_mode); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_SET_OFFSET_GREEN: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySetWhiteBalanceGreenOffset(source_type, colortemp_mode, value); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_GET_OFFSET_GREEN: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetWhiteBalanceGreenOffset(source_type, colortemp_mode); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_SET_OFFSET_BLUE: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySetWhiteBalanceBlueOffset(source_type, colortemp_mode, value); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_GET_OFFSET_BLUE: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetWhiteBalanceBlueOffset(source_type, colortemp_mode); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_GET_COLOR_TMP: { - int source_type = p.readInt32(); - int ret = mpTv->Tv_FactoryGetWhiteBalanceColorTempMode(source_type); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_SET_COLOR_TMP: { - int source_type = p.readInt32(); - int Tempmode = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_FactorySetWhiteBalanceColorTempMode(source_type, Tempmode, is_save); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_SAVE_PRAMAS: { - int source_type = p.readInt32(); - int mode = p.readInt32(); - int r_gain = p.readInt32(); - int g_gain = p.readInt32(); - int b_gain = p.readInt32(); - int r_offset = p.readInt32(); - int g_offset = p.readInt32(); - int b_offset = p.readInt32(); - int ret = mpTv->Tv_FactorySaveWhiteBalancePramas(source_type, mode, r_gain, g_gain, b_gain, r_offset, g_offset, b_offset); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_OPEN_GRAY_PATTERN: { - int ret = mpTv->Tv_FactoryOpenWhiteBalanceGrayPattern(); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_CLOSE_GRAY_PATTERN: { - int ret = mpTv->Tv_FactoryCloseWhiteBalanceGrayPattern(); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_SET_GRAY_PATTERN: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySetWhiteBalanceGrayPattern(value); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_GET_GRAY_PATTERN: { - int ret = mpTv->Tv_FactoryGetWhiteBalanceGrayPattern(); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_GET_ALL_PRAMAS: { - int Tempmode = p.readInt32(); - tcon_rgb_ogo_t params; - int ret = mpTv->GetColorTemperatureParams((vpp_color_temperature_mode_t)Tempmode, ¶ms); - r->writeInt32(ret); - r->writeInt32(params.r_gain); - r->writeInt32(params.g_gain); - r->writeInt32(params.b_gain); - r->writeInt32(params.r_post_offset); - r->writeInt32(params.g_post_offset); - r->writeInt32(params.b_post_offset); - } - case STOP_SCAN: { - mpTv->stopScanLock(); - break; - } - case DTV_GET_SNR: { - int tmpRet = 0; - tmpRet = mpTv->getFrontendSNR(); - r->writeInt32(tmpRet); - break; - } - case DTV_GET_BER: { - int tmpRet = 0; - tmpRet = mpTv->getFrontendBER(); - r->writeInt32(tmpRet); - break; - } - case DTV_GET_STRENGTH: { - int tmpRet = 0; - tmpRet = mpTv->getFrontendSignalStrength(); - r->writeInt32(tmpRet); - break; - } - case DTV_GET_AUDIO_TRACK_NUM: { - int programId = p.readInt32(); - int retCnt = 0; - retCnt = mpTv->getAudioTrackNum(programId); - r->writeInt32(retCnt); - break; - } - case DTV_GET_AUDIO_TRACK_INFO: { - int progId = p.readInt32(); - int aIdx = p.readInt32(); - int aFmt = -1; - int iRet = -1; - String8 lang; - iRet = mpTv->getAudioInfoByIndex(progId, aIdx, &aFmt, lang); - r->writeInt32(aFmt); - r->writeString16(String16(lang)); - break; - } - case DTV_SWITCH_AUDIO_TRACK: { - int aPid = p.readInt32(); - int aFmt = p.readInt32(); - int aParam = p.readInt32(); - int ret = -1; - ret = mpTv->switchAudioTrack(aPid, aFmt, aParam); - r->writeInt32(ret); - break; - } - case DTV_GET_CURR_AUDIO_TRACK_INDEX: { - int currAduIdx = -1; - int progId = p.readInt32(); - CTvProgram prog; - CTvProgram::selectByID(progId, prog); - currAduIdx = prog.getCurrAudioTrackIndex(); - r->writeInt32(currAduIdx); - break; - } - case DTV_SET_AUDIO_CHANNEL_MOD: { - int audioChannelIdx = p.readInt32(); - mpTv->setAudioChannel(audioChannelIdx); - break; - } - case DTV_GET_AUDIO_CHANNEL_MOD: { - int currChannelMod; - currChannelMod = mpTv->getAudioChannel(); - r->writeInt32(currChannelMod); - break; - } - case DTV_GET_CUR_FREQ: { - int progId = p.readInt32(); - int freq = 0; - int iRet = -1; - CTvProgram prog; - CTvChannel channel; - - iRet = CTvProgram::selectByID(progId, prog); - if (0 != iRet) return -1; - prog.getChannel(channel); - freq = channel.getFrequency(); - r->writeInt32(freq); - break; - } - case DTV_GET_EPG_UTC_TIME: { - int iRet = -1; - int utcTime = 0; - - utcTime = mpTv->getTvTime(); - - r->writeInt32(utcTime); - break; - } - case DTV_GET_EPG_INFO_POINT_IN_TIME: { - int progid = p.readInt32(); - int utcTime = p.readInt32(); - CTvProgram prog; - int ret = CTvProgram::selectByID(progid, prog); - CTvEvent ev; - ret = ev.getProgPresentEvent(prog.getSrc(), prog.getID(), utcTime, ev); - r->writeString16(String16(ev.getName())); - r->writeString16(String16(ev.getDescription())); - r->writeString16(String16(ev.getExtDescription())); - r->writeInt32(ev.getStartTime()); - r->writeInt32(ev.getEndTime()); - r->writeInt32(ev.getSubFlag()); - r->writeInt32(ev.getEventId()); - break; - } - case DTV_GET_EPG_INFO_DURATION: { - int iRet = -1; - int iObOutSize = 0; - Vector > epgOut; - int progid = p.readInt32(); - int iUtcStartTime = p.readInt32(); - int iDurationTime = p.readInt32(); - CTvProgram prog; - CTvEvent ev; - iRet = CTvProgram::selectByID(progid, prog); - if (0 != iRet) { - break; - } - iRet = ev.getProgScheduleEvents(prog.getSrc(), prog.getID(), iUtcStartTime, iDurationTime, epgOut); - if (0 != iRet) { - break; - } - iObOutSize = epgOut.size(); - if (0 == iObOutSize) { - break; - } - - r->writeInt32(iObOutSize); - for (int i = 0; i < iObOutSize; i ++) { - r->writeString16(String16(epgOut[i]->getName())); - r->writeString16(String16(epgOut[i]->getDescription())); - r->writeString16(String16(ev.getExtDescription())); - r->writeInt32(epgOut[i]->getStartTime()); - r->writeInt32(epgOut[i]->getEndTime()); - r->writeInt32(epgOut[i]->getSubFlag()); - r->writeInt32(epgOut[i]->getEventId()); - } - break; - } - case DTV_SET_PROGRAM_NAME: { - CTvProgram prog; - int progid = p.readInt32(); - String16 tmpName = p.readString16(); - String8 strName = String8(tmpName); - prog.updateProgramName(progid, strName); - break; - } - case DTV_SET_PROGRAM_SKIPPED: { - CTvProgram prog; - int progid = p.readInt32(); - bool bSkipFlag = p.readInt32(); - prog.setSkipFlag(progid, bSkipFlag); - break; - } - case DTV_SET_PROGRAM_FAVORITE: { - CTvProgram prog; - int progid = p.readInt32(); - bool bFavorite = p.readInt32(); - prog.setFavoriteFlag(progid, bFavorite); - break; - } - case DTV_DETELE_PROGRAM: { - CTvProgram prog; - int progid = p.readInt32(); - prog.deleteProgram(progid); - break; - } - case SET_BLACKOUT_ENABLE: { - int enable = p.readInt32(); - mpTv->setBlackoutEnable(enable); - break; - } - case START_AUTO_BACKLIGHT: { - mpTv->startAutoBackLight(); - break; - } - case STOP_AUTO_BACKLIGHT: { - mpTv->stopAutoBackLight(); - break; - } - case IS_AUTO_BACKLIGHTING: { - int on = mpTv->getAutoBackLight_on_off(); - r->writeInt32(on); - break; - } - case GET_AVERAGE_LUMA: { - int ret = mpTv->getAverageLuma(); - r->writeInt32(ret); - break; - } - case GET_AUTO_BACKLIGHT_DATA: { - int i; - int size = mpTv->getAutoBacklightData(tmp_i_buf); - r->writeInt32(size); - for (i = 0; i < size; i++) { - r->writeInt32(tmp_i_buf[i]); - } - break; - } - case SET_AUTO_BACKLIGHT_DATA: { - String16 tmp_str16; - String8 value_str; - - tmp_str16 = p.readString16(); - value_str = String8(tmp_str16); - - int ret = mpTv->setAutobacklightData(value_str); - r->writeInt32(ret); - break; - } - - case SSM_READ_BLACKOUT_ENABLE: { - int enable = mpTv->getSaveBlackoutEnable(); - r->writeInt32(enable); - break; - } - case DTV_SWAP_PROGRAM: { - CTvProgram prog; - int firstProgId = p.readInt32(); - int secondProgId = p.readInt32(); - CTvProgram::selectByID(firstProgId, prog); - int firstChanOrderNum = prog.getChanOrderNum(); - CTvProgram::selectByID(secondProgId, prog); - int secondChanOrderNum = prog.getChanOrderNum(); - prog.swapChanOrder(firstProgId, firstChanOrderNum, secondProgId, secondChanOrderNum); - break; - } - case DTV_SET_PROGRAM_LOCKED: { - CTvProgram prog; - int progid = p.readInt32(); - bool bLocked = p.readInt32(); - prog.setLockFlag(progid, bLocked); - break; - } - case DTV_SET_BOOKING_FLAG: { - CTvEvent ev; - int iEvtId = p.readInt32(); - bool iBookFlag = (bool)p.readInt32(); - ev.bookEvent(iEvtId, iBookFlag); - break; - } - case DTV_GET_FREQ_BY_PROG_ID: { - int freq = 0; - int progid = p.readInt32(); - CTvProgram prog; - int ret = CTvProgram::selectByID(progid, prog); - if (ret != 0) return -1; - CTvChannel channel; - prog.getChannel(channel); - freq = channel.getFrequency(); - r->writeInt32(freq); - break; - } - case DTV_GET_BOOKED_EVENT: { - CTvBooking tvBook; - Vector > vTvBookOut; - tvBook.getBookedEventList(vTvBookOut); - int iObOutSize = vTvBookOut.size(); - if (0 == iObOutSize) { - break; - } - r->writeInt32(iObOutSize); - for (int i = 0; i < iObOutSize; i ++) { - r->writeString16(String16(vTvBookOut[i]->getProgName())); - r->writeString16(String16(vTvBookOut[i]->getEvtName())); - r->writeInt32(vTvBookOut[i]->getStartTime()); - r->writeInt32(vTvBookOut[i]->getDurationTime()); - r->writeInt32(vTvBookOut[i]->getBookId()); - r->writeInt32(vTvBookOut[i]->getProgramId()); - r->writeInt32(vTvBookOut[i]->getEventId()); - } - break; - } - case SET_FRONTEND_PARA: { - int ret = -1; - frontend_para_set_t feParms; - feParms.mode = (fe_type_t)p.readInt32(); - feParms.freq = p.readInt32(); - feParms.videoStd = (atv_video_std_t)p.readInt32(); - feParms.audioStd = (atv_audio_std_t)p.readInt32(); - feParms.para1 = p.readInt32(); - feParms.para2 = p.readInt32(); - mpTv->resetFrontEndPara(feParms); - r->writeInt32(ret); - break; - } - case PLAY_PROGRAM: { - int mode = p.readInt32(); - int freq = p.readInt32(); - if (mode == FE_ANALOG) { - int videoStd = p.readInt32(); - int audioStd = p.readInt32(); - int fineTune = p.readInt32(); - int audioCompetation = p.readInt32(); - mpTv->playAtvProgram(freq, videoStd, audioStd, fineTune, audioCompetation); - } else { - int para1 = p.readInt32(); - int para2 = p.readInt32(); - int vid = p.readInt32(); - int vfmt = p.readInt32(); - int aid = p.readInt32(); - int afmt = p.readInt32(); - int pcr = p.readInt32(); - int audioCompetation = p.readInt32(); - mpTv->playDtvProgram(mode, freq, para1, para2, vid, vfmt, aid, afmt, pcr, audioCompetation); - } - break; - } - case GET_PROGRAM_LIST: { - Vector > out; - int type = p.readInt32(); - int skip = p.readInt32(); - CTvProgram::selectByType(type, skip, out); - r->writeInt32(out.size()); - for (int i = 0; i < (int)out.size(); i++) { - r->writeInt32(out[i]->getID()); - r->writeInt32(out[i]->getChanOrderNum()); - r->writeInt32(out[i]->getMajor()); - r->writeInt32(out[i]->getMinor()); - r->writeInt32(out[i]->getProgType()); - r->writeString16(String16(out[i]->getName())); - r->writeInt32(out[i]->getProgSkipFlag()); - r->writeInt32(out[i]->getFavoriteFlag()); - r->writeInt32(out[i]->getVideo()->getFormat()); - CTvChannel ch; - out[i]->getChannel(ch); - r->writeInt32(ch.getDVBTSID()); - r->writeInt32(out[i]->getServiceId()); - r->writeInt32(out[i]->getVideo()->getPID()); - r->writeInt32(out[i]->getVideo()->getPID()); - - int audioTrackSize = out[i]->getAudioTrackSize(); - r->writeInt32(audioTrackSize); - for (int j = 0; j < audioTrackSize; j++) { - r->writeString16(String16(out[i]->getAudio(j)->getLang())); - r->writeInt32(out[i]->getAudio(j)->getFormat()); - r->writeInt32(out[i]->getAudio(j)->getPID()); - } - Vector mvSubtitles = out[i]->getSubtitles(); - int subTitleSize = mvSubtitles.size(); - r->writeInt32(subTitleSize); - if (subTitleSize > 0) { - for (int k = 0; k < subTitleSize; k++) { - r->writeInt32(mvSubtitles[k]->getPID()); - r->writeString16(String16(mvSubtitles[k]->getLang())); - r->writeInt32(mvSubtitles[k]->getCompositionPageID()); - r->writeInt32(mvSubtitles[k]->getAncillaryPageID()); - } - } - r->writeInt32(ch.getFrequency()); - } - break; - } - case DTV_GET_VIDEO_FMT_INFO: { - int srcWidth = 0; - int srcHeight = 0; - int srcFps = 0; - int srcInterlace = 0; - int iRet = -1; - - iRet == mpTv->getVideoFormatInfo(&srcWidth, &srcHeight, &srcFps, &srcInterlace); - r->writeInt32(srcWidth); - r->writeInt32(srcHeight); - r->writeInt32(srcFps); - r->writeInt32(srcInterlace); - r->writeInt32(iRet); - } - break; - - case DTV_START_RECORD: { - char buf[256]; - String16 tmpName = p.readString16(); - String8 strName = String8(tmpName); - sprintf(buf, "%s", strName.string()); - mpTv->SetRecordFileName(buf); - mpTv->StartToRecord(); - } - break; - case DTV_STOP_RECORD: - mpTv->StopRecording(); - break; - case DTV_SET_RECORD_ALL_TS: { - int sel = p.readInt32(); - mpTv->SetRecCurTsOrCurProgram(sel); - } - break; - case TV_PRINT_DEBUG_INFO: - mpTv->printDebugInfo(); - break; - case HDMIAV_HOTPLUGDETECT_ONOFF: { - int flag = mpTv->GetHdmiAvHotplugDetectOnoff(); - r->writeInt32(flag); - } - break; - - // 2.4G headset - case START_OPEN_HEADSET_DETECT: { - int flag = mpTv->StartHeadSetDetect(); - r->writeInt32(flag); - } - break; - - // EXTAR END - default: - LOGD("default"); - break; - } - - LOGD("exit client=%d cmd=%d", getCallingPid(), cmd); - return 0; + int tmp_i_buf[128] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; + unsigned char tmp_uc_buf[512] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; + unsigned char tmp_uc_buf2[512] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; + int8_t tmp_int8_buf[512] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; + static int source_input = 0; + int *data_ptr = NULL; + + int cmd = p.readInt32(); + + LOGD("enter client=%d cmd=%d", getCallingPid(), cmd); + switch (cmd) { + // Tv function + case OPEN_TV: { + break; + } + case CLOSE_TV: { + int ret = mpTv->CloseTv(); + r->writeInt32(ret); + break; + } + case START_TV: { + int mode = p.readInt32(); + int ret = mpTv->StartTvLock(); + //mTvService->mpStartTvClient = this; + mIsStartTv = true; + r->writeInt32(ret); + break; + } + case STOP_TV: { + int ret = mpTv->StopTvLock(); + r->writeInt32(ret); + mIsStartTv = false; + break; + } + case GET_TV_STATUS: { + int ret = 0; + ret = (int)mpTv->GetTvStatus(); + r->writeInt32(ret); + break; + } + case GET_LAST_SOURCE_INPUT: { + int ret = (int)mpTv->GetLastSourceInput(); + r->writeInt32(ret); + break; + } + case GET_CURRENT_SOURCE_INPUT: { + int ret = (int)mpTv->GetCurrentSourceInputLock(); + r->writeInt32(ret); + break; + } + case GET_CURRENT_SOURCE_INPUT_TYPE: { + int ret = 0;//(int)mpTv->Tvin_GetSrcInputType(); + r->writeInt32(ret); + break; + } + case GET_CURRENT_SIGNAL_INFO: { + tvin_info_t siginfo = mpTv->GetCurrentSignalInfo(); + int frame_rate = mpTv->getHDMIFrameRate(); + r->writeInt32(siginfo.trans_fmt); + r->writeInt32(siginfo.fmt); + r->writeInt32(siginfo.status); + r->writeInt32(frame_rate); + break; + } + case IS_SOURCE_SWTICH_DONE: { + //int ret = mpTv->Tv_IsSourceSwtichDone(); + r->writeInt32(0); + break; + } + case SET_SOURCE_INPUT: { + int sourceinput = p.readInt32(); + tvin_window_pos_t win_pos; + LOGD(" SetSourceInput sourceId= %x", sourceinput); + source_input = sourceinput; + int ret = mpTv->SetSourceSwitchInput((tv_source_input_t)sourceinput); + r->writeInt32(ret); + break; + } + case DO_SUSPEND: { + int type = p.readInt32(); + int ret = mpTv->DoSuspend(type); + r->writeInt32(ret); + break; + } + case DO_RESUME: { + int type = p.readInt32(); + int ret = mpTv->DoResume(type); + r->writeInt32(ret); + break; + } + case RUN_ADC_AUTO_CALIBRATION: { + // int ret = mpTv->Tv_RunADCAutoCalibration(); + // r->writeInt32(ret); + break; + } + case IS_DVI_SIGNAL: { + int ret = mpTv->IsDVISignal(); + r->writeInt32(ret); + break; + } + case IS_VGA_TIMEING_IN_HDMI: { + int ret = mpTv->isVgaFmtInHdmi(); + r->writeInt32(ret); + break; + } + case GET_VIDEO_PATH_STATUS: { + int path_type = p.readInt32(); + int ret = 0;//(int)mpTv->Tvin_CheckPathActive((tv_path_type_t)path_type); + r->writeInt32(ret); + break; + } + case GET_VIDEO_STREAM_STATUS: { + // int ret = (int)mpTv->Tvin_CheckVideoStreamStatus(); + // r->writeInt32(ret); + break; + } + case GET_FIRST_START_SWITCH_TYPE: { + //int tmp_val = 0; + //int ret = (int)mpTv->Tv_GetFirstStartSwitchType(&tmp_val); + //r->writeInt32(ret); + r->writeInt32(1); + break; + } + case SET_PREVIEW_WINDOW: { + tvin_window_pos_t win_pos; + win_pos.x1 = p.readInt32(); + win_pos.y1 = p.readInt32(); + win_pos.x2 = p.readInt32(); + win_pos.y2 = p.readInt32(); + int ret = (int)mpTv->SetPreviewWindow(win_pos); + r->writeInt32(ret); + break; + } + + case SET_VIDEO_DISABLE: { + int value = p.readInt32(); + int ret = 0;//(int)mpTv->Tv_SetVideoDisable(value); + r->writeInt32(ret); + break; + } + + case GET_SOURCE_CONNECT_STATUS: { + int source_input = p.readInt32(); + int ret = mpTv->GetSourceConnectStatus((tv_source_input_t)source_input); + r->writeInt32(ret); + break; + } + //Tv function END + + //VGA + case RUN_VGA_AUTO_ADJUST: { + //int ret = mpTv->Tv_RunVGAAutoAdjust(); + int ret = 0; + r->writeInt32(ret); + break; + } + case GET_VGA_AUTO_ADJUST_STATUS: { + // int fmt = p.readInt32(); + //int ret = (int) mpTv->Tv_GetVagAutoAdjustStatus(); + int ret = 0; + r->writeInt32(ret); + break; + } + case IS_VGA_AUTO_ADJUST_DONE: { + int fmt = p.readInt32(); + int ret = 0;//mpTv->Tv_IsVGAAutoAdjustDone((tvin_sig_fmt_t)fmt); + r->writeInt32(ret); + break; + } + case SET_VGA_HPOS: { + // int value = p.readInt32(); + // int fmt = p.readInt32(); + //int ret = mpTv->Tv_SetVGAHPos(value, (tvin_sig_fmt_t)fmt); + int ret = 0; + r->writeInt32(ret); + break; + } + case GET_VGA_HPOS: { + // int fmt = p.readInt32(); + // int ret = mpTv->Tv_GetVGAHPos((tvin_sig_fmt_t)fmt); + int ret = 0; + r->writeInt32(ret); + break; + } + + case SET_VGA_VPOS: { + // int value = p.readInt32(); + // int fmt = p.readInt32(); + // int ret = mpTv->Tv_SetVGAVPos(value, (tvin_sig_fmt_t)fmt); + int ret = 0; + r->writeInt32(ret); + break; + } + case GET_VGA_VPOS: { + // int fmt = p.readInt32(); + // int ret = mpTv->Tv_GetVGAVPos((tvin_sig_fmt_t)fmt); + int ret = 0; + r->writeInt32(ret); + break; + } + + case SET_VGA_CLOCK: { + // int value = p.readInt32(); + // int fmt = p.readInt32(); + // int ret = mpTv->Tv_SetVGAClock(value, (tvin_sig_fmt_t)fmt); + int ret = 0; + r->writeInt32(ret); + break; + } + case GET_VGA_CLOCK: { + // int fmt = p.readInt32(); + // int ret = mpTv->Tv_GetVGAClock((tvin_sig_fmt_t)fmt); + int ret = 0; + r->writeInt32(ret); + break; + } + + case SET_VGA_PHASE: { + // int value = p.readInt32(); + // int fmt = p.readInt32(); + // int ret = mpTv->Tv_SetVGAPhase(value, (tvin_sig_fmt_t)fmt); + int ret = 0; + r->writeInt32(ret); + break; + } + case GET_VGA_PHASE: { + // int fmt = p.readInt32(); + // int ret = mpTv->Tv_GetVGAPhase((tvin_sig_fmt_t)fmt); + int ret = 0; + r->writeInt32(ret); + break; + } + case SET_VGA_AJUST_PARA: { + tvafe_vga_parm_t adjparam; + adjparam.clk_step = p.readInt32(); + adjparam.phase = p.readInt32(); + adjparam.hpos_step = p.readInt32(); + adjparam.vpos_step = p.readInt32(); + adjparam.vga_in_clean = p.readInt32(); + int fmt = p.readInt32(); + int ret = 0/*SetVGAAjustPara(adjparam, (tvin_sig_fmt_t)fmt)*/; + r->writeInt32(ret); + break; + } + case GET_VGA_AJUST_PARA: { + tvafe_vga_parm_t adjparam; + int fmt = p.readInt32(); + int ret = 0/*GetVGAAjustPara(&adjparam, (tvin_sig_fmt_t)fmt)*/; + r->writeInt32(adjparam.clk_step); + r->writeInt32(adjparam.phase); + r->writeInt32(adjparam.hpos_step); + r->writeInt32(adjparam.vpos_step); + r->writeInt32(adjparam.vga_in_clean); + r->writeInt32(ret); + break; + } + case SET_VGAPARAM_DEFAULT: { + // int ret = (int)mpTv->TvinResetVgaAjustParam(); + // r->writeInt32(ret); + break; + } + // VGA END + + // 3D + + case SET_3D_MODE: { + int mode = p.readInt32(); + int ret = mpTv->Tv_Set3DMode((VIDEO_3D_MODE_T)mode); + r->writeInt32(ret); + break; + } + case GET_3D_MODE: { + int ret = (int)mpTv->Tv_Get3DMode(); + r->writeInt32(ret); + break; + } + case SET_3D_LR_SWITH: { + int on_off = p.readInt32(); + //int status = p.readInt32(); + int ret = mpTv->Tv_Set3DLRSwith(on_off); + r->writeInt32(ret); + break; + } + case GET_3D_LR_SWITH: { + int ret = mpTv->Tv_Get3DLRSwith(); + r->writeInt32(ret); + break; + } + case SET_3D_TO_2D_MODE: { + int mode = p.readInt32(); + //int status = p.readInt32(); + int ret = mpTv->Tv_Set3DTo2DMode(mode); + r->writeInt32(ret); + break; + } + case GET_3D_TO_2D_MODE: { + int ret = mpTv->Tv_Get3DTo2DMode(); + r->writeInt32(ret); + break; + } + case SET_3D_DEPTH: { + int value = p.readInt32(); + int ret = mpTv->Tv_Set3DDepth(value); + r->writeInt32(ret); + break; + } + case GET_3D_DEPTH: { + int ret = mpTv->GetSave3DDepth(); + r->writeInt32(ret); + break; + } + // 3D END + + // PQ + case SET_BRIGHTNESS: { + int brightness = p.readInt32(); + int source_type = p.readInt32(); + int is_save = p.readInt32(); + int ret = mpTv->Tv_SetBrightness(brightness, (tv_source_input_type_t)source_type, is_save); + r->writeInt32(ret); + break; + } + case GET_BRIGHTNESS: { + int source_type = p.readInt32(); + LOGD("GET_BRIGHTNESS------------=%d", source_type); + int ret = mpTv->Tv_GetBrightness((tv_source_input_type_t)source_type); + r->writeInt32(ret); + break; + } + case SAVE_BRIGHTNESS: { + int brightness = p.readInt32(); + int source_type = p.readInt32(); + int ret = mpTv->Tv_SaveBrightness(brightness, (tv_source_input_type_t)source_type); + r->writeInt32(ret); + break; + } + + case SET_CONTRAST: { + int contrast = p.readInt32(); + int source_type = p.readInt32(); + int is_save = p.readInt32(); + int ret = mpTv->Tv_SetContrast(contrast, (tv_source_input_type_t)source_type, is_save); + r->writeInt32(ret); + break; + } + case GET_CONTRAST: { + int source_type = p.readInt32(); + int ret = mpTv->Tv_GetContrast((tv_source_input_type_t)source_type); + r->writeInt32(ret); + break; + } + case SAVE_CONTRAST: { + int contrast = p.readInt32(); + int source_type = p.readInt32(); + int ret = mpTv->Tv_SaveContrast(contrast, (tv_source_input_type_t)source_type); + r->writeInt32(ret); + break; + } + case SET_SATUATION: { + int satuation = p.readInt32(); + int source_type = p.readInt32(); + int fmt = p.readInt32(); + int is_save = p.readInt32(); + int ret = mpTv->Tv_SetSaturation(satuation, (tv_source_input_type_t)source_type, (tvin_sig_fmt_t)fmt, is_save); + r->writeInt32(ret); + break; + } + case GET_SATUATION: { + int source_type = p.readInt32(); + int ret = mpTv->Tv_GetSaturation((tv_source_input_type_t)source_type); + r->writeInt32(ret); + break; + } + case SAVE_SATUATION: { + int satuation = p.readInt32(); + int source_type = p.readInt32(); + int ret = mpTv->Tv_SaveSaturation(satuation, (tv_source_input_type_t)source_type); + r->writeInt32(ret); + break; + } + case SET_HUE: { + int hue = p.readInt32(); + int source_type = p.readInt32(); + int fmt = p.readInt32(); + int is_save = p.readInt32(); + int ret = mpTv->Tv_SetHue(hue, (tv_source_input_type_t)source_type, (tvin_sig_fmt_t)fmt, is_save); + r->writeInt32(ret); + break; + } + case GET_HUE: { + int source_type = p.readInt32(); + int ret = mpTv->Tv_GetHue((tv_source_input_type_t)source_type); + r->writeInt32(ret); + break; + } + case SAVE_HUE: { + int hue = p.readInt32(); + int source_type = p.readInt32(); + int ret = mpTv->Tv_SaveHue(hue, (tv_source_input_type_t)source_type); + r->writeInt32(ret); + break; + } + case SET_SCENEMODE: { + int mode = p.readInt32(); + int is_save = p.readInt32(); + int ret = 0;//mpTv->Tv_SetSceneMode((vpp_scene_mode_t)mode,is_save); + r->writeInt32(ret); + break; + } + case GET_SCENEMODE: { + int ret = 0;//(int)mpTv->Tv_GetSceneMode(); + r->writeInt32(ret); + break; + } + case SET_PQMODE: { + int mode = p.readInt32(); + int source_type = p.readInt32(); + int is_save = p.readInt32(); + int ret = mpTv->Tv_SetPQMode((vpp_picture_mode_t)mode, (tv_source_input_type_t)source_type, is_save); + r->writeInt32(ret); + break; + } + case GET_PQMODE: { + int source_type = p.readInt32(); + int ret = (int)mpTv->Tv_GetPQMode((tv_source_input_type_t)source_type); + r->writeInt32(ret); + break; + } + case SAVE_PQMODE: { + int mode = p.readInt32(); + int source_type = p.readInt32(); + int ret = mpTv->Tv_SavePQMode((vpp_picture_mode_t)mode, (tv_source_input_type_t)source_type); + r->writeInt32(ret); + break; + } + case SET_SHARPNESS: { + int value = p.readInt32(); + int source_type = p.readInt32(); + int en = p.readInt32(); + int status_3d = p.readInt32(); + int is_save = p.readInt32(); + int ret = mpTv->Tv_SetSharpness(value, (tv_source_input_type_t)source_type, en, is_save); + r->writeInt32(ret); + break; + } + case GET_SHARPNESS: { + int source_type = p.readInt32(); + int ret = mpTv->Tv_GetSharpness((tv_source_input_type_t)source_type); + r->writeInt32(ret); + break; + } + case SAVE_SHARPNESS: { + int value = p.readInt32(); + int source_type = p.readInt32(); + int is_save = p.readInt32(); + int ret = mpTv->Tv_SaveSharpness(value, (tv_source_input_type_t)source_type); + r->writeInt32(ret); + break; + } + case SET_BACKLIGHT: { + int value = p.readInt32(); + int source_type = p.readInt32(); + int is_save = p.readInt32(); + int ret = mpTv->Tv_SetBacklight(value, (tv_source_input_type_t)source_type, is_save); + r->writeInt32(ret); + break; + } + case GET_BACKLIGHT: { + int source_type = p.readInt32(); + int ret = mpTv->Tv_GetBacklight((tv_source_input_type_t)source_type); + r->writeInt32(ret); + break; + } + case SAVE_BACKLIGHT: { + int value = p.readInt32(); + int source_type = p.readInt32(); + int ret = mpTv->Tv_SaveBacklight ( value, (tv_source_input_type_t)source_type ); + r->writeInt32(ret); + break; + } + case SET_BACKLIGHT_SWITCH: { + int value = p.readInt32(); + int ret = mpTv->Tv_SetBacklight_Switch(value); + r->writeInt32(ret); + break; + } + case GET_BACKLIGHT_SWITCH: { + int ret = mpTv->Tv_GetBacklight_Switch(); + r->writeInt32(ret); + break; + } + case SET_COLOR_TEMPERATURE: { + int mode = p.readInt32(); + int source_type = p.readInt32(); + int is_save = p.readInt32(); + int ret = mpTv->Tv_SetColorTemperature((vpp_color_temperature_mode_t)mode, (tv_source_input_type_t)source_type, is_save); + r->writeInt32(ret); + break; + } + case GET_COLOR_TEMPERATURE: { + int source_type = p.readInt32(); + int ret = mpTv->Tv_GetColorTemperature((tv_source_input_type_t)source_type); + r->writeInt32(ret); + break; + } + case SAVE_COLOR_TEMPERATURE: { + int mode = p.readInt32(); + int source_type = p.readInt32(); + int ret = mpTv->Tv_SaveColorTemperature ( (vpp_color_temperature_mode_t)mode, (tv_source_input_type_t)source_type ); + r->writeInt32(ret); + break; + } + case SET_DISPLAY_MODE: { + int mode = p.readInt32(); + int source_type = p.readInt32(); + int fmt = p.readInt32(); + int is_save = p.readInt32(); + int ret = mpTv->Tv_SetDisplayMode((vpp_display_mode_t)mode, (tv_source_input_type_t)source_type, (tvin_sig_fmt_t)fmt, is_save); + r->writeInt32(ret); + break; + } + case GET_DISPLAY_MODE: { + int source_type = p.readInt32(); + int ret = (int)mpTv->Tv_GetDisplayMode((tv_source_input_type_t)source_type); + r->writeInt32(ret); + break; + } + case SAVE_DISPLAY_MODE: { + int mode = p.readInt32(); + int source_type = p.readInt32(); + int ret = mpTv->Tv_SaveDisplayMode((vpp_display_mode_t)mode, (tv_source_input_type_t)source_type); + r->writeInt32(ret); + break; + } + case SET_NOISE_REDUCTION_MODE: { + int mode = p.readInt32(); + int source_type = p.readInt32(); + int is_save = p.readInt32(); + int ret = mpTv->Tv_SetNoiseReductionMode((vpp_noise_reduction_mode_t)mode, (tv_source_input_type_t)source_type, is_save); + r->writeInt32(ret); + break; + } + case GET_NOISE_REDUCTION_MODE: { + int source_type = p.readInt32(); + int ret = mpTv->Tv_GetNoiseReductionMode((tv_source_input_type_t)source_type); + r->writeInt32(ret); + break; + } + case SAVE_NOISE_REDUCTION_MODE: { + int mode = p.readInt32(); + int source_type = p.readInt32(); + int ret = mpTv->Tv_SaveNoiseReductionMode((vpp_noise_reduction_mode_t)mode, (tv_source_input_type_t)source_type); + r->writeInt32(ret); + break; + } + case VPP_SPLIT_SCREEN_EFFECT: { + int mode = p.readInt32(); + int width = p.readInt32(); + int reverse = p.readInt32(); + int ret = mpTv->Tv_SplitScreenEffect(mode, width, reverse); + r->writeInt32(ret); + break; + } + // PQ END + + // FACTORY + case FACTORY_SETPQMODE_BRIGHTNESS: { + int source_type = p.readInt32(); + int pq_mode = p.readInt32(); + int brightness = p.readInt32(); + int ret = mpTv->Tv_FactorySetPQMode_Brightness(source_type, pq_mode, brightness); + r->writeInt32(ret); + break; + } + case FACTORY_GETPQMODE_BRIGHTNESS: { + int source_type = p.readInt32(); + int pq_mode = p.readInt32(); + int ret = mpTv->Tv_FactoryGetPQMode_Brightness(source_type, pq_mode); + r->writeInt32(ret); + break; + } + case FACTORY_SETPQMODE_CONTRAST: { + int source_type = p.readInt32(); + int pq_mode = p.readInt32(); + int contrast = p.readInt32(); + int ret = mpTv->Tv_FactorySetPQMode_Contrast(source_type, pq_mode, contrast); + r->writeInt32(ret); + break; + } + case FACTORY_GETPQMODE_CONTRAST: { + int source_type = p.readInt32(); + int pq_mode = p.readInt32(); + int ret = mpTv->Tv_FactoryGetPQMode_Contrast(source_type, pq_mode); + r->writeInt32(ret); + break; + } + case FACTORY_SETPQMODE_SATURATION: { + int source_type = p.readInt32(); + int pq_mode = p.readInt32(); + int saturation = p.readInt32(); + int ret = mpTv->Tv_FactorySetPQMode_Saturation(source_type, pq_mode, saturation); + r->writeInt32(ret); + break; + } + case FACTORY_GETPQMODE_SATURATION: { + int source_type = p.readInt32(); + int pq_mode = p.readInt32(); + int ret = mpTv->Tv_FactoryGetPQMode_Saturation(source_type, pq_mode); + r->writeInt32(ret); + break; + } + case FACTORY_SETPQMODE_HUE: { + int source_type = p.readInt32(); + int pq_mode = p.readInt32(); + int hue = p.readInt32(); + int ret = mpTv->Tv_FactorySetPQMode_Hue(source_type, pq_mode, hue); + r->writeInt32(ret); + break; + } + case FACTORY_GETPQMODE_HUE: { + int source_type = p.readInt32(); + int pq_mode = p.readInt32(); + int ret = mpTv->Tv_FactoryGetPQMode_Hue(source_type, pq_mode); + r->writeInt32(ret); + break; + } + case FACTORY_SETPQMODE_SHARPNESS: { + int source_type = p.readInt32(); + int pq_mode = p.readInt32(); + int sharpness = p.readInt32(); + int ret = mpTv->Tv_FactorySetPQMode_Sharpness(source_type, pq_mode, sharpness); + r->writeInt32(ret); + break; + } + case FACTORY_GETPQMODE_SHARPNESS: { + int source_type = p.readInt32(); + int pq_mode = p.readInt32(); + int ret = mpTv->Tv_FactoryGetPQMode_Sharpness(source_type, pq_mode); + + r->writeInt32(ret); + break; + } + case FACTORY_SETTESTPATTERN: { + int pattern = p.readInt32(); + int ret = mpTv->Tv_FactorySetTestPattern(pattern); + r->writeInt32(ret); + break; + } + case FACTORY_GETTESTPATTERN: { + int ret = mpTv->Tv_FactoryGetTestPattern(); + r->writeInt32(ret); + break; + } + case FACTORY_SETPATTERN_YUV: { + int blend = p.readInt32(); + int y = p.readInt32(); + int u = p.readInt32(); + int v = p.readInt32(); + int ret = mpTv->Tv_FactorySetScreenColor(blend, y, u, v); + r->writeInt32(ret); + break; + } + case FACTORY_RESETPQMODE: { + int ret = mpTv->Tv_FactoryResetPQMode(); + r->writeInt32(ret); + break; + } + case FACTORY_RESETCOLORTEMP: { + int ret = mpTv->Tv_FactoryResetColorTemp(); + r->writeInt32(ret); + break; + } + case FACTORY_RESETPAMAMSDEFAULT: { + int ret = mpTv->Tv_FactorySetParamsDefault(); + r->writeInt32(ret); + break; + } + case FACTORY_SETDDRSSC: { + int setp = p.readInt32(); + int ret = mpTv->Tv_FactorySetDDRSSC(setp); + r->writeInt32(ret); + break; + } + case FACTORY_GETDDRSSC: { + int ret = mpTv->Tv_FactoryGetDDRSSC(); + r->writeInt32(ret); + break; + } + case FACTORY_SETLVDSSSC: { + int setp = p.readInt32(); + int ret = mpTv->Tv_FactorySetLVDSSSC(setp); + r->writeInt32(ret); + break; + } + case FACTORY_GETLVDSSSC: { + int ret = mpTv->Tv_FactoryGetLVDSSSC(); + r->writeInt32(ret); + break; + } + case FACTORY_SETNOLINEPARAMS: { + noline_params_t params; + int noline_params_type = p.readInt32(); + int source_type = p.readInt32(); + params.osd0 = p.readInt32(); + params.osd25 = p.readInt32(); + params.osd50 = p.readInt32(); + params.osd75 = p.readInt32(); + params.osd100 = p.readInt32(); + int ret = mpTv->Tv_FactorySetNolineParams(noline_params_type, source_type, params); + r->writeInt32(ret); + break; + } + case FACTORY_GETNOLINEPARAMS: { + int noline_params_type = p.readInt32(); + int source_type = p.readInt32(); + noline_params_t params = mpTv->Tv_FactoryGetNolineParams(noline_params_type, source_type); + r->writeInt32(params.osd0); + r->writeInt32(params.osd25); + r->writeInt32(params.osd50); + r->writeInt32(params.osd75); + r->writeInt32(params.osd100); + break; + } + case FACTORY_SETOVERSCAN: { + tvin_cutwin_t cutwin_t; + int source_type = p.readInt32(); + int fmt = p.readInt32(); + int status_3d = p.readInt32(); + int trans_fmt = p.readInt32(); + cutwin_t.hs = p.readInt32(); + cutwin_t.he = p.readInt32(); + cutwin_t.vs = p.readInt32(); + cutwin_t.ve = p.readInt32(); + int ret = mpTv->Tv_FactorySetOverscan(source_type, fmt, status_3d, trans_fmt, cutwin_t); + r->writeInt32(ret); + break; + } + case FACTORY_GETOVERSCAN: { + int source_type = p.readInt32(); + int fmt = p.readInt32(); + int status_3d = p.readInt32(); + int trans_fmt = p.readInt32(); + tvin_cutwin_t cutwin_t = mpTv->Tv_FactoryGetOverscan(source_type, fmt, status_3d, trans_fmt); + r->writeInt32(cutwin_t.hs); + r->writeInt32(cutwin_t.he); + r->writeInt32(cutwin_t.vs); + r->writeInt32(cutwin_t.ve); + break; + } + case DELETE_PARAM_PQ_DB: { + int tmpRet = mpTv->Tv_ReplacePqDb(); + r->writeInt32(tmpRet); + } + case REPLACE_PARAM_PQ_DB: { + int tmpRet; + String16 tmp_str16; + String8 value_str; + + tmp_str16 = p.readString16(); + value_str = String8(tmp_str16); + + tmpRet = mpTv->Tv_ReplacePqDb(value_str.string()); + r->writeInt32(tmpRet); + break; + } + case FACTORY_SET_OUT_DEFAULT: { + int ret = 0; + ret = mpTv->Tv_SSMFacRestoreDefaultSetting(); + r->writeInt32(ret); + break; + } + case FACTORY_GETGLOBALOGO_RGAIN: { + int ret = 0; + r->writeInt32(ret); + break; + } + case FACTORY_GETGLOBALOGO_GGAIN: { + int ret = 0; + r->writeInt32(ret); + break; + } + case FACTORY_GETGLOBALOGO_BGAIN: { + int ret = 0; + r->writeInt32(ret); + break; + } + case FACTORY_GETGLOBALOGO_ROFFSET: { + int ret = 0; + r->writeInt32(ret); + break; + } + case FACTORY_GETGLOBALOGO_GOFFSET: { + int ret = 0; + r->writeInt32(ret); + break; + } + case FACTORY_GETGLOBALOGO_BOFFSET: { + int ret = 0; + r->writeInt32(ret); + break; + } + case FACTORY_SETGLOBALOGO_RGAIN: { + int ret = 0; + r->writeInt32(ret); + break; + } + case FACTORY_SETGLOBALOGO_GGAIN: { + int p1 = p.readInt32(); + int ret = 0; + r->writeInt32(ret); + break; + } + case FACTORY_SETGLOBALOGO_BGAIN: { + int p1 = p.readInt32(); + int ret = 0; + r->writeInt32(ret); + break; + } + case FACTORY_SETGLOBALOGO_ROFFSET: { + int p1 = p.readInt32(); + int ret = 0; + r->writeInt32(ret); + break; + } + case FACTORY_SETGLOBALOGO_GOFFSET: { + int p1 = p.readInt32(); + int ret = 0; + r->writeInt32(ret); + break; + } + case FACTORY_SETGLOBALOGO_BOFFSET: { + int p1 = p.readInt32(); + int ret = 0; + r->writeInt32(ret); + break; + } + case FACTORY_CLEAN_ALL_TABLE_FOR_PROGRAM: { + int ret = mpTv->ClearAnalogFrontEnd(); + mpTv->clearDbAllProgramInfoTable(); + r->writeInt32(ret); + break; + } + case FACTORY_SETBACKLIGHT_PWM_FREQUENCY: { + int value = p.readInt32(); + int ret = 0;//mpTv->GetVpp().Tv_FactorySetBacklightPWM_Frequency(value); + r->writeInt32(ret); + break; + } + case FACTORY_GETBACKLIGHT_PWM_FREQUENCY: { + int ret = 0;//mpTv->GetVpp().Tv_FactoryGetBacklightPWM_Frequency(); + r->writeInt32(ret); + break; + } + case FACTORY_SETBACKLIGHT_SWITCH_STATUS: { + int value = p.readInt32(); + int ret = 0;//mpTv->GetVpp().Tv_FactorySetBacklight_Switch_status(value); + r->writeInt32(ret); + break; + } + case FACTORY_GETBACKLIGHT_SWITCH_STATUS: { + int ret = 0;//mpTv->GetVpp().Tv_FactoryGetBacklight_Switch_status(); + r->writeInt32(ret); + break; + } + case FACTORY_SETBACKLIGHT_PWM_DUTY: { + int value = p.readInt32(); + int ret = 0;//mpTv->GetVpp().Tv_FactorySetBacklightPWM_Duty(value); + r->writeInt32(ret); + break; + } + case FACTORY_GETBACKLIGHT_PWM_DUTY: { + int ret = 0;//mpTv->GetVpp().Tv_FactoryGetBacklightPWM_Duty(); + r->writeInt32(ret); + break; + } + + case FACTORY_SETLVDS_COLOR_DEPTH: { + int value = p.readInt32(); + int ret = 0;//mpTv->GetVpp().Tv_FactorySetLVDS_ColorDepth(value); + r->writeInt32(ret); + break; + } + case FACTORY_GETLVDS_COLOR_DEPTH: { + int ret = 0;//mpTv->GetVpp().Tv_FactoryGetLVDS_ColorDepth(); + r->writeInt32(ret); + break; + } + case FACTORY_SETLVDS_DITHER_STATUS: { + int value = p.readInt32(); + int ret = 0;//mpTv->GetVpp().Tv_FactorySetLVDS_ColorDither_status(value); + r->writeInt32(ret); + break; + } + case FACTORY_GETLVDS_DITHER_STATUS: { + int ret = 0;//mpTv->GetVpp().Tv_FactoryGetLVDS_ColorDither_status(); + r->writeInt32(ret); + break; + } + case FACTORY_SETLVDS_MAPPING_STATUS: { + int value = p.readInt32(); + int ret = 0;//mpTv->GetVpp().Tv_FactorySetLVDS_Mapping_status(value); + r->writeInt32(ret); + break; + } + case FACTORY_GETLVDS_MAPPING_STATUS: { + int ret = 0;//mpTv->GetVpp().Tv_FactoryGetLVDS_Mapping_status(); + r->writeInt32(ret); + break; + } + case FACTORY_SETLVDS_PORT_SWAP_STATUS: { + int value = p.readInt32(); + int ret = 0;//mpTv->GetVpp().Tv_FactorySetLVDS_PortSwap_status(value); + r->writeInt32(ret); + break; + } + case FACTORY_GETLVDS_PORT_SWAP_STATUS: { + int ret = 0;//mpTv->GetVpp().Tv_FactoryGetLVDS_PortSwap_status(); + r->writeInt32(ret); + break; + } + // FACTORY END + + // AUDIO + // AUDIO MUTE + case SET_AUDIO_MUTEKEY_STATUS: { + int status = p.readInt32(); + int ret = mpTv->SetAudioMuteForSystem(status); + r->writeInt32(ret); + break; + } + case GET_AUDIO_MUTEKEY_STATUS: { + int ret = mpTv->GetAudioMuteForSystem(); + r->writeInt32(ret); + break; + } + case SET_AUDIO_FORCE_MUTE_STATUS: { + int status = p.readInt32(); + int ret = 0;//pTv->getTvAudio().AudioSetForceMuteStatus(status); + r->writeInt32(ret); + break; + } + case GET_AUDIO_FORCE_MUTE_STATUS: { + int ret = 0;//mpTv->AudioGetForceMuteStatus(); + r->writeInt32(ret); + break; + } + case SET_AUDIO_AVOUT_MUTE_STATUS: { + int status = p.readInt32(); + int ret = mpTv->SetAudioAVOutMute(status); + r->writeInt32(ret); + break; + } + case GET_AUDIO_AVOUT_MUTE_STATUS: { + int ret = mpTv->GetAudioAVOutMute(); + r->writeInt32(ret); + break; + } + case SET_AUDIO_SPDIF_MUTE_STATUS: { + int status = p.readInt32(); + int ret = mpTv->SetAudioSPDIFMute(status); + r->writeInt32(ret); + break; + } + case GET_AUDIO_SPDIF_MUTE_STATUS: { + int ret = mpTv->GetAudioSPDIFMute(); + r->writeInt32(ret); + break; + } + // AUDIO MASTER VOLUME + case SET_AUDIO_MASTER_VOLUME: { + int vol = p.readInt32(); + int ret = mpTv->SetAudioMasterVolume(vol); + r->writeInt32(ret); + break; + } + case GET_AUDIO_MASTER_VOLUME: { + int ret = mpTv->GetAudioMasterVolume(); + r->writeInt32(ret); + break; + } + case SAVE_CUR_AUDIO_MASTER_VOLUME: { + int vol = p.readInt32(); + int ret = mpTv->SaveCurAudioMasterVolume(vol); + r->writeInt32(ret); + break; + } + case GET_CUR_AUDIO_MASTER_VOLUME: { + int ret = mpTv->GetCurAudioMasterVolume(); + r->writeInt32(ret); + break; + } + //AUDIO BALANCE + case SET_AUDIO_BALANCE: { + int vol = p.readInt32(); + int ret = mpTv->SetAudioBalance(vol); + r->writeInt32(ret); + break; + } + case GET_AUDIO_BALANCE: { + int ret = mpTv->GetAudioBalance(); + r->writeInt32(ret); + break; + } + case SAVE_CUR_AUDIO_BALANCE: { + int vol = p.readInt32(); + int ret = mpTv->SaveCurAudioBalance(vol); + r->writeInt32(ret); + break; + } + case GET_CUR_AUDIO_BALANCE: { + int ret = mpTv->GetCurAudioBalance(); + r->writeInt32(ret); + break; + } + //AUDIO SUPPERBASS VOLUME + case SET_AUDIO_SUPPER_BASS_VOLUME: { + int vol = p.readInt32(); + int ret = mpTv->SetAudioSupperBassVolume(vol); + r->writeInt32(ret); + break; + } + case GET_AUDIO_SUPPER_BASS_VOLUME: { + int ret = mpTv->GetAudioSupperBassVolume(); + r->writeInt32(ret); + break; + } + case SAVE_CUR_AUDIO_SUPPER_BASS_VOLUME: { + int vol = p.readInt32(); + int ret = mpTv->SaveCurAudioSupperBassVolume(vol); + r->writeInt32(ret); + break; + } + case GET_CUR_AUDIO_SUPPER_BASS_VOLUME: { + int ret = mpTv->GetCurAudioSupperBassVolume(); + r->writeInt32(ret); + break; + } + //AUDIO SUPPERBASS SWITCH + case SET_AUDIO_SUPPER_BASS_SWITCH: { + int vol = p.readInt32(); + int ret = mpTv->SetAudioSupperBassSwitch(vol); + r->writeInt32(ret); + break; + } + case GET_AUDIO_SUPPER_BASS_SWITCH: { + int ret = mpTv->GetAudioSupperBassSwitch(); + r->writeInt32(ret); + break; + } + case SAVE_CUR_AUDIO_SUPPER_BASS_SWITCH: { + int vol = p.readInt32(); + int ret = mpTv->SaveCurAudioSupperBassSwitch(vol); + r->writeInt32(ret); + break; + } + case GET_CUR_AUDIO_SUPPER_BASS_SWITCH: { + int ret = mpTv->GetCurAudioSupperBassSwitch(); + r->writeInt32(ret); + break; + } + //AUDIO SRS SURROUND SWITCH + case SET_AUDIO_SRS_SURROUND: { + int vol = p.readInt32(); + int ret = mpTv->SetAudioSRSSurround(vol); + mpTv->RefreshAudioMasterVolume(SOURCE_MAX); + r->writeInt32(ret); + break; + } + case GET_AUDIO_SRS_SURROUND: { + int ret = mpTv->GetAudioSRSSurround(); + r->writeInt32(ret); + break; + } + case SAVE_CUR_AUDIO_SRS_SURROUND: { + int vol = p.readInt32(); + int ret = mpTv->SaveCurAudioSrsSurround(vol); + r->writeInt32(ret); + break; + } + case GET_CUR_AUDIO_SRS_SURROUND: { + int ret = mpTv->GetCurAudioSRSSurround(); + r->writeInt32(ret); + break; + } + //AUDIO SRS DIALOG CLARITY + case SET_AUDIO_SRS_DIALOG_CLARITY: { + int vol = p.readInt32(); + int ret = mpTv->SetAudioSrsDialogClarity(vol); + mpTv->RefreshAudioMasterVolume(SOURCE_MAX); + r->writeInt32(ret); + break; + } + case GET_AUDIO_SRS_DIALOG_CLARITY: { + int ret = mpTv->GetAudioSrsDialogClarity(); + r->writeInt32(ret); + break; + } + case SAVE_CUR_AUDIO_SRS_DIALOG_CLARITY: { + int vol = p.readInt32(); + int ret = mpTv->SaveCurAudioSrsDialogClarity(vol); + r->writeInt32(ret); + break; + } + case GET_CUR_AUDIO_SRS_DIALOG_CLARITY: { + int ret = mpTv->GetCurAudioSrsDialogClarity(); + r->writeInt32(ret); + break; + } + //AUDIO SRS TRUBASS + case SET_AUDIO_SRS_TRU_BASS: { + int vol = p.readInt32(); + int ret = mpTv->SetAudioSrsTruBass(vol); + mpTv->RefreshAudioMasterVolume(SOURCE_MAX); + r->writeInt32(ret); + break; + } + case GET_AUDIO_SRS_TRU_BASS: { + int ret = mpTv->GetAudioSrsTruBass(); + r->writeInt32(ret); + break; + } + case SAVE_CUR_AUDIO_SRS_TRU_BASS: { + int vol = p.readInt32(); + int ret = mpTv->SaveCurAudioSrsTruBass(vol); + r->writeInt32(ret); + break; + } + case GET_CUR_AUDIO_SRS_TRU_BASS: { + int ret = mpTv->GetCurAudioSrsTruBass(); + r->writeInt32(ret); + break; + } + //AUDIO BASS + case SET_AUDIO_BASS_VOLUME: { + int vol = p.readInt32(); + int ret = mpTv->SetAudioBassVolume(vol); + r->writeInt32(ret); + break; + } + case GET_AUDIO_BASS_VOLUME: { + int ret = mpTv->GetAudioBassVolume(); + r->writeInt32(ret); + break; + } + case SAVE_CUR_AUDIO_BASS_VOLUME: { + int vol = p.readInt32(); + int ret = mpTv->SaveCurAudioBassVolume(vol); + r->writeInt32(ret); + break; + } + case GET_CUR_AUDIO_BASS_VOLUME: { + int ret = mpTv->GetCurAudioBassVolume(); + r->writeInt32(ret); + break; + } + //AUDIO TREBLE + case SET_AUDIO_TREBLE_VOLUME: { + int vol = p.readInt32(); + int ret = mpTv->SetAudioTrebleVolume(vol); + r->writeInt32(ret); + break; + } + case GET_AUDIO_TREBLE_VOLUME: { + int ret = mpTv->GetAudioTrebleVolume(); + r->writeInt32(ret); + break; + } + case SAVE_CUR_AUDIO_TREBLE_VOLUME: { + int vol = p.readInt32(); + int ret = mpTv->SaveCurAudioTrebleVolume(vol); + r->writeInt32(ret); + break; + } + case GET_CUR_AUDIO_TREBLE_VOLUME: { + int ret = mpTv->GetCurAudioTrebleVolume(); + r->writeInt32(ret); + break; + } + //AUDIO SOUND MODE + case SET_AUDIO_SOUND_MODE: { + int vol = p.readInt32(); + int ret = mpTv->SetAudioSoundMode(vol); + r->writeInt32(ret); + break; + } + case GET_AUDIO_SOUND_MODE: { + int ret = mpTv->GetAudioSoundMode(); + r->writeInt32(ret); + break; + } + case SAVE_CUR_AUDIO_SOUND_MODE: { + int vol = p.readInt32(); + int ret = mpTv->SaveCurAudioSoundMode(vol); + r->writeInt32(ret); + break; + } + case GET_CUR_AUDIO_SOUND_MODE: { + int ret = mpTv->GetCurAudioSoundMode(); + r->writeInt32(ret); + break; + } + //AUDIO WALL EFFECT + case SET_AUDIO_WALL_EFFECT: { + int vol = p.readInt32(); + int ret = mpTv->SetAudioWallEffect(vol); + r->writeInt32(ret); + break; + } + case GET_AUDIO_WALL_EFFECT: { + int ret = mpTv->GetAudioWallEffect(); + r->writeInt32(ret); + break; + } + case SAVE_CUR_AUDIO_WALL_EFFECT: { + int vol = p.readInt32(); + int ret = mpTv->SaveCurAudioWallEffect(vol); + r->writeInt32(ret); + break; + } + case GET_CUR_AUDIO_WALL_EFFECT: { + int ret = mpTv->GetCurAudioWallEffect(); + r->writeInt32(ret); + break; + } + //AUDIO EQ MODE + case SET_AUDIO_EQ_MODE: { + int vol = p.readInt32(); + int ret = mpTv->SetAudioEQMode(vol); + r->writeInt32(ret); + break; + } + case GET_AUDIO_EQ_MODE: { + int ret = mpTv->GetAudioEQMode(); + r->writeInt32(ret); + break; + } + case SAVE_CUR_AUDIO_EQ_MODE: { + int vol = p.readInt32(); + int ret = mpTv->SaveCurAudioEQMode(vol); + r->writeInt32(ret); + break; + } + case GET_CUR_AUDIO_EQ_MODE: { + int ret = mpTv->GetCurAudioEQMode(); + r->writeInt32(ret); + break; + } + //AUDIO EQ GAIN + case GET_AUDIO_EQ_RANGE: { + int buf[2]; + int ret = mpTv->GetAudioEQRange(buf); + r->writeInt32(2); + r->writeInt32(buf[0]); + r->writeInt32(buf[1]); + r->writeInt32(ret); + break; + } + case GET_AUDIO_EQ_BAND_COUNT: { + int ret = mpTv->GetAudioEQBandCount(); + r->writeInt32(ret); + break; + } + case SET_AUDIO_EQ_GAIN: { + int i = 0, tmp_buf_size = 0, ret = 0; + tmp_buf_size = p.readInt32(); + for (i = 0; i < tmp_buf_size; i++) { + tmp_i_buf[i] = p.readInt32(); + } + ret = mpTv->SetAudioEQGain(tmp_i_buf); + r->writeInt32(ret); + break; + } + case GET_AUDIO_EQ_GAIN: { + int i = 0, tmp_buf_size = 0, ret = 0; + ret = mpTv->GetAudioEQGain(tmp_i_buf); + tmp_buf_size = mpTv->GetAudioEQBandCount(); + r->writeInt32(tmp_buf_size); + for (i = 0; i < tmp_buf_size; i++) { + r->writeInt32(tmp_i_buf[i]); + } + r->writeInt32(ret); + break; + } + case SAVE_CUR_AUDIO_EQ_GAIN: { + int i = 0, tmp_buf_size = 0, ret = 0; + tmp_buf_size = p.readInt32(); + for (i = 0; i < tmp_buf_size; i++) { + tmp_i_buf[i] = p.readInt32(); + } + ret = mpTv->SaveCurAudioEQGain(tmp_i_buf); + r->writeInt32(ret); + break; + } + case GET_CUR_EQ_GAIN: { + int i = 0, tmp_buf_size = 0, ret = 0; + ret = mpTv->GetCurAudioEQGain(tmp_i_buf); + tmp_buf_size = mpTv->GetAudioEQBandCount(); + r->writeInt32(tmp_buf_size); + for (i = 0; i < tmp_buf_size; i++) { + r->writeInt32(tmp_i_buf[i]); + } + r->writeInt32(ret); + break; + } + case SET_AUDIO_EQ_SWITCH: { + int tmpVal = p.readInt32(); + int ret = mpTv->SetAudioEQSwitch(tmpVal); + r->writeInt32(ret); + break; + } + // AUDIO SPDIF SWITCH + case SET_AUDIO_SPDIF_SWITCH: { + int tmp_val = p.readInt32(); + int ret = mpTv->SetAudioSPDIFSwitch(tmp_val); + r->writeInt32(ret); + break; + } + case GET_AUDIO_SPDIF_SWITCH: { + int ret = 0;//mpTv->GetAudioSPDIFSwitch(); + r->writeInt32(ret); + break; + } + case SAVE_CUR_AUDIO_SPDIF_SWITCH: { + int tmp_val = p.readInt32(); + int ret = mpTv->SaveCurAudioSPDIFSwitch(tmp_val); + r->writeInt32(ret); + break; + } + case GET_CUR_AUDIO_SPDIF_SWITCH: { + int ret = mpTv->GetCurAudioSPDIFSwitch(); + r->writeInt32(ret); + break; + } + //AUDIO SPDIF MODE + case SET_AUDIO_SPDIF_MODE: { + int vol = p.readInt32(); + int progId = p.readInt32(); + int audioTrackId = p.readInt32(); + int ret = mpTv->SetAudioSPDIFMode(vol); + mpTv->ResetAudioDecoderForPCMOutput(); + r->writeInt32(ret); + break; + } + case GET_AUDIO_SPDIF_MODE: { + int ret = 0;//mpTv->GetAudioSPDIFMode(); + r->writeInt32(ret); + break; + } + case SAVE_CUR_AUDIO_SPDIF_MODE: { + int vol = p.readInt32(); + int ret = mpTv->SaveCurAudioSPDIFMode(vol); + r->writeInt32(ret); + break; + } + case GET_CUR_AUDIO_SPDIF_MODE: { + int ret = mpTv->GetCurAudioSPDIFMode(); + r->writeInt32(ret); + break; + } + case OPEN_AMAUDIO: { + int sr = p.readInt32(); + int output_dev = p.readInt32(); + int ret = 0;//mpTv->OpenAmAudio(sr, output_dev); + r->writeInt32(ret); + break; + } + case CLOSE_AMAUDIO: { + int ret = 0;//mpTv->CloseAmAudio(); + r->writeInt32(ret); + break; + } + case SET_AMAUDIO_INPUT_SR: { + int sr = p.readInt32(); + int output_dev = p.readInt32(); + int ret = 0;//mpTv->SetAmAudioInputSr(sr, output_dev); + r->writeInt32(ret); + break; + } + case SET_AMAUDIO_OUTPUT_MODE: { + int tmp_val = p.readInt32(); + int ret = mpTv->SetAmAudioOutputMode(tmp_val); + r->writeInt32(ret); + break; + } + case SET_AMAUDIO_MUSIC_GAIN: { + int tmp_val = p.readInt32(); + int ret = mpTv->SetAmAudioMusicGain(tmp_val); + r->writeInt32(ret); + break; + } + case SET_AMAUDIO_LEFT_GAIN: { + int tmp_val = p.readInt32(); + int ret = mpTv->SetAmAudioLeftGain(tmp_val); + r->writeInt32(ret); + break; + } + case SET_AMAUDIO_RIGHT_GAIN: { + int tmp_val = p.readInt32(); + int ret = mpTv->SetAmAudioRightGain(tmp_val); + r->writeInt32(ret); + break; + } + case SELECT_LINE_IN_CHANNEL: { + int channel = p.readInt32(); + int ret = mpTv->AudioLineInSelectChannel(channel); + r->writeInt32(ret); + LOGD("SELECT_LINE_IN_CHANNEL: channel = %d; ret = %d.\n", channel, ret); + break; + } + case SET_KALAOK_IO_LEVEL: { + int level = p.readInt32(); + int ret = mpTv->SetKalaokIO(level); + ret = mpTv->AudioSetAudioInSource(CC_AUDIO_IN_SOURCE_LINEIN); + r->writeInt32(ret); + LOGD("set line in source CC_AUDIO_IN_SOURCE_LINEIN\n"); + break; + } + + case SET_LINE_IN_CAPTURE_VOL: { + int l_vol = p.readInt32(); + int r_vol = p.readInt32(); + int ret = mpTv->AudioSetLineInCaptureVolume(l_vol, r_vol); + r->writeInt32(ret); + break; + } + case HANDLE_AUDIO_HEADSET_PLUG_IN: { + int ret = mpTv->AudioHandleHeadsetPlugIn(); + r->writeInt32(ret); + break; + } + case HANDLE_AUDIO_HEADSET_PULL_OUT: { + int ret = mpTv->AudioHandleHeadsetPullOut(); + r->writeInt32(ret); + break; + } + case SET_AUDIO_VOL_COMP: { + int tmpVal = p.readInt32(); + int ret = mpTv->SetCurProgramAudioVolumeCompensationVal(tmpVal); + r->writeInt32(ret); + break; + } + case GET_AUDIO_VOL_COMP: { + int ret = mpTv->GetAudioVolumeCompensationVal(-1); + r->writeInt32(ret); + break; + } + case SAVE_AUDIO_VOL_COMP: { + int tmpVal = p.readInt32(); + int ret = -1;//mpTv->atvSaveAudioVolumeCompensationVal(tmpVal); + LOGD("this cmd is empty!!!!!!!!!!!!!!!!!!!"); + r->writeInt32(ret); + break; + } + case SET_NOISE_GATE_THRESHOLD: { + int ret = 0; + r->writeInt32(ret); + break; + } + case SET_AUDIO_SOURCE_FOR_KARAOKE: { + int sourceinput = p.readInt32(); + int ret = mpTv->Tv_SetAudioSourceType((tv_source_input_t)sourceinput); + r->writeInt32(ret); + break; + } + case SET_DBX_TV_MODE: { + int mode = p.readInt32(); + int son_value = p.readInt32(); + int vol_value = p.readInt32(); + int sur_value = p.readInt32(); + int ret = mpTv->SetDbxTvMode(mode, son_value, vol_value, sur_value); + r->writeInt32(ret); + break; + } + case GET_DBX_TV_MODE: { + int mode ; + int son_value ; + int vol_value ; + int sur_value ; + int ret = mpTv->GetDbxTvMode(&mode, &son_value, &vol_value, &sur_value); + r->writeInt32(mode); + r->writeInt32(son_value); + r->writeInt32(vol_value); + r->writeInt32(sur_value); + r->writeInt32(ret); + break; + } + + case SET_DRC_ONOFF: { + int val = p.readInt32(); + int ret = mpTv->Tv_SetDRC_OnOff(val); + r->writeInt32(ret); + break; + } + case GET_DRC_ONOFF: { + int ret = mpTv->Tv_GetDRC_OnOff(); + r->writeInt32(ret); + break; + } + // AUDIO END + + // SSM + case SSM_INIT_DEVICE: { + int tmpRet = 0; + tmpRet = mpTv->Tv_SSMRestoreDefaultSetting();//mpTv->Tv_SSMInitDevice(); + r->writeInt32(tmpRet); + break; + } + /*case SSM_SAVE_ONE_BYTE: { + int tmpOffset = p.readInt32(); + int tmpVal = p.readInt32(); + int tmpRet; + tmpRet = SSMWriteOneByte(tmpOffset, tmpVal); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_ONE_BYTE: { + int tmpOffset = p.readInt32(); + int tmpRet = 0; + SSMReadOneByte(tmpOffset, &tmpRet); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_N_BYTES: { + int i = 0, tmp_offset = 0, tmp_data_len = 0, ret = -1; + + tmp_offset = p.readInt32(); + tmp_data_len = p.readInt32(); + + if (tmp_data_len > 0) { + data_ptr = new int[tmp_data_len]; + + if (data_ptr != NULL) { + for (i = 0; i < tmp_data_len; i++) { + data_ptr[i] = p.readInt32(); + } + + ret = SSMWriteNTypes(tmp_offset, tmp_data_len, data_ptr); + + delete data_ptr; + data_ptr = NULL; + } + } + + r->writeInt32(ret); + break; + } + case SSM_READ_N_BYTES: { + int i = 0, tmp_offset = 0, tmp_data_len = 0, ret = -1; + tmp_offset = p.readInt32(); + tmp_data_len = p.readInt32(); + + if (tmp_data_len > 0) { + data_ptr = new int[tmp_data_len]; + if (data_ptr != NULL) { + ret = SSMReadNTypes(tmp_offset, tmp_data_len, data_ptr); + if (ret < 0) { + tmp_data_len = 0; + } + r->writeInt32(tmp_data_len); + for (i = 0; i < tmp_data_len; i++) { + r->writeInt32(data_ptr[i]); + } + delete data_ptr; + data_ptr = NULL; + } + } + r->writeInt32(ret); + break; + }*/ + case SSM_SAVE_POWER_ON_OFF_CHANNEL: { + int tmpPowerChanNum = p.readInt32(); + int tmpRet; + tmpRet = SSMSavePowerOnOffChannel(tmpPowerChanNum); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_POWER_ON_OFF_CHANNEL: { + int tmpRet = 0; + tmpRet = SSMReadPowerOnOffChannel(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_SOURCE_INPUT: { + int tmpSouceInput = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveSourceInput(tmpSouceInput); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_SOURCE_INPUT: { + int tmpRet = 0; + tmpRet = SSMReadSourceInput(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_LAST_SOURCE_INPUT: { + int tmpLastSouceInput = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveLastSelectSourceInput(tmpLastSouceInput); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_LAST_SOURCE_INPUT: { + int tmpRet = 0; + tmpRet = SSMReadLastSelectSourceInput(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_SYS_LANGUAGE: { + int tmpVal = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveSystemLanguage(tmpVal); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_SYS_LANGUAGE: { + int tmpRet = 0; + tmpRet = SSMReadSystemLanguage(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_AGING_MODE: { + int tmpVal = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveAgingMode(tmpVal); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_AGING_MODE: { + int tmpRet = 0; + tmpRet = SSMReadAgingMode(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_PANEL_TYPE: { + int tmpVal = p.readInt32(); + int tmpRet; + tmpRet = SSMSavePanelType(tmpVal); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_PANEL_TYPE: { + int tmpRet = 0; + tmpRet = SSMReadPanelType(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_MAC_ADDR: { + int i = 0, tmp_buf_size = 0, ret = 0; + tmp_buf_size = p.readInt32(); + for (i = 0; i < tmp_buf_size; i++) { + tmp_uc_buf[i] = p.readInt32(); + } + ret = KeyData_SaveMacAddress(tmp_uc_buf); + r->writeInt32(ret); + break; + } + case SSM_READ_MAC_ADDR: { + int i = 0, tmp_buf_size = 0, ret = 0; + ret = KeyData_ReadMacAddress(tmp_uc_buf); + tmp_buf_size = KeyData_GetMacAddressDataLen(); + r->writeInt32(tmp_buf_size); + for (i = 0; i < tmp_buf_size; i++) { + r->writeInt32(tmp_uc_buf[i]); + } + r->writeInt32(ret); + break; + } + case SSM_SAVE_BAR_CODE: { + int i = 0, tmp_buf_size = 0, ret = 0; + tmp_buf_size = p.readInt32(); + for (i = 0; i < tmp_buf_size; i++) { + tmp_uc_buf[i] = p.readInt32(); + } + ret = KeyData_SaveBarCode(tmp_uc_buf); + r->writeInt32(ret); + break; + } + case SSM_READ_BAR_CODE: { + int i = 0, tmp_buf_size = 0, ret = 0; + ret = KeyData_ReadBarCode(tmp_uc_buf); + tmp_buf_size = KeyData_GetBarCodeDataLen(); + r->writeInt32(tmp_buf_size); + for (i = 0; i < tmp_buf_size; i++) { + r->writeInt32(tmp_uc_buf[i]); + } + r->writeInt32(ret); + break; + } + case SSM_SAVE_PROJECT_ID: { + int tmpVal = p.readInt32(); + int tmpRet; + tmpRet = KeyData_SaveProjectID(tmpVal); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_PROJECT_ID: { + int tmpRet = 0; + tmpRet = KeyData_ReadProjectID(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_HDCPKEY: { + int i = 0, tmp_buf_size = 0, ret = 0; + tmp_buf_size = p.readInt32(); + for (i = 0; i < tmp_buf_size; i++) { + tmp_uc_buf[i] = p.readInt32(); + } + ret = SSMSaveHDCPKey(tmp_uc_buf); + r->writeInt32(ret); + break; + } + case SSM_READ_HDCPKEY: { + int i = 0, tmp_buf_size = 0, ret = 0; + ret = SSMReadHDCPKey(tmp_uc_buf); + tmp_buf_size = SSMGetHDCPKeyDataLen(); + r->writeInt32(tmp_buf_size); + for (i = 0; i < tmp_buf_size; i++) { + r->writeInt32(tmp_uc_buf[i]); + } + r->writeInt32(ret); + break; + } + case SSM_SAVE_POWER_ON_MUSIC_SWITCH: { + int tmpVal = p.readInt32(); + int tmpRet; + tmpRet = SSMSavePowerOnMusicSwitch(tmpVal); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_POWER_ON_MUSIC_SWITCH: { + int tmpRet = 0; + tmpRet = SSMReadPowerOnMusicSwitch(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_POWER_ON_MUSIC_VOL: { + int tmpVal = p.readInt32(); + int tmpRet; + tmpRet = SSMSavePowerOnMusicVolume(tmpVal); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_POWER_ON_MUSIC_VOL: { + int tmpRet = 0; + tmpRet = SSMReadPowerOnMusicVolume(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_SYS_SLEEP_TIMER: { + int tmpVal = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveSystemSleepTimer(tmpVal); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_SYS_SLEEP_TIMER: { + int tmpRet = 0; + tmpRet = SSMReadSystemSleepTimer(); + r->writeInt32(tmpRet); + break; + } + case SSM_SET_BUS_STATUS: { + int tmpVal = p.readInt32(); + int tmpRet = 0; + //showboz + //tmpRet = SSMSetBusStatus(tmpVal); + r->writeInt32(tmpRet); + break; + } + case SSM_GET_BUS_STATUS: { + int tmpRet = 0; + //showboz + //tmpRet = SSMGetBusStatus(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_INPUT_SRC_PARENTAL_CTL: { + int tmpSourceIndex = p.readInt32(); + int tmpCtlFlag = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveInputSourceParentalControl(tmpSourceIndex, tmpCtlFlag); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_INPUT_SRC_PARENTAL_CTL: { + int tmpSourceIndex = p.readInt32(); + int tmpRet = 0; + tmpRet = SSMReadInputSourceParentalControl(tmpSourceIndex); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_PARENTAL_CTL_SWITCH: { + int tmpSwitchFlag = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveParentalControlSwitch(tmpSwitchFlag); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_PARENTAL_CTL_SWITCH: { + int tmpRet = 0; + tmpRet = SSMReadParentalControlSwitch(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_PARENTAL_CTL_PASS_WORD: { + String16 pass_wd_str = p.readString16(); + int tmpRet; + tmpRet = SSMSaveParentalControlPassWord((unsigned char *)pass_wd_str.string(), pass_wd_str.size() * sizeof(unsigned short)); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_PARENTAL_CTL_PASS_WORD: { + int tmpChanID = p.readInt32(); + unsigned short tmp_buf [SSM_RW_PARENTAL_CTL_PASSWORD_LEN + 1]; + String16 pass_wd_str; + SSMReadParentalControlPassWord(tmp_buf); + tmp_buf[SSM_RW_PARENTAL_CTL_PASSWORD_LEN / sizeof(unsigned short)] = 0; + //pass_wd_str.setTo((const unsigned short *) tmp_buf); + //r->writeString16(pass_wd_str); + break; + } + case SSM_SAVE_USING_DEF_HDCP_KEY_FLAG: { + break; + } + case SSM_READ_USING_DEF_HDCP_KEY_FLAG: { + break; + } + case SSM_GET_CUSTOMER_DATA_START: { + int tmpRet = 0; + tmpRet = SSMGetCustomerDataStart(); + r->writeInt32(tmpRet); + break; + } + case SSM_GET_CUSTOMER_DATA_LEN: { + int tmpRet = 0; + tmpRet = SSMGetCustomerDataLen(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_STANDBY_MODE: { + int tmp_val = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveStandbyMode(tmp_val); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_STANDBY_MODE: { + int tmpRet = 0; + tmpRet = SSMReadStandbyMode(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_LOGO_ON_OFF_FLAG: { + int tmpSwitchFlag = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveLogoOnOffFlag(tmpSwitchFlag); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_LOGO_ON_OFF_FLAG: { + int tmpRet = 0; + tmpRet = SSMReadLogoOnOffFlag(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_HDMIEQ_MODE: { + int tmpSwitchFlag = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveHDMIEQMode(tmpSwitchFlag); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_HDMIEQ_MODE: { + int tmpRet = 0; + tmpRet = SSMReadHDMIEQMode(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_HDMIINTERNAL_MODE: { + int tmp_val = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveHDMIInternalMode(tmp_val); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_HDMIINTERNAL_MODE: { + int tmpRet = 0; + tmpRet = SSMReadHDMIInternalMode(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_DISABLE_3D: { + int tmp_val = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveDisable3D(tmp_val); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_DISABLE_3D: { + int tmpRet = 0; + tmpRet = SSMReadDisable3D(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_GLOBAL_OGOENABLE: { + int tmp_val = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveGlobalOgoEnable(tmp_val); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_GLOBAL_OGOENABLE: { + int tmpRet = 0; + tmpRet = SSMReadGlobalOgoEnable(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_NON_STANDARD_STATUS: { + int tmp_val = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveNonStandardValue(tmp_val); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_NON_STANDARD_STATUS: { + int tmpRet = 0; + tmpRet = SSMReadNonStandardValue(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_ADB_SWITCH_STATUS: { + int tmp_val = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveAdbSwitchValue(tmp_val); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_ADB_SWITCH_STATUS: { + int tmpRet = 0; + tmpRet = SSMReadAdbSwitchValue(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_SERIAL_CMD_SWITCH_STATUS: { + int tmp_val = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveSerialCMDSwitchValue(tmp_val); + tmpRet |= mpTv->SetSerialSwitch(SERIAL_A, tmp_val); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_SERIAL_CMD_SWITCH_STATUS: { + int tmpRet = 0; + tmpRet = SSMReadSerialCMDSwitchValue(); + r->writeInt32(tmpRet); + break; + } + case SSM_SET_HDCP_KEY: { + int tmpRet = 0; + tmpRet = SSMSetHDCPKey(); + r->writeInt32(tmpRet); + break; + } + case SSM_REFRESH_HDCPKEY: { + int tmpRet = 0; + tmpRet = SSMRefreshHDCPKey(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_CHROMA_STATUS: { + int tmp_val = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveChromaStatus(tmp_val); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_CA_BUFFER_SIZE: { + int tmp_val = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveCABufferSizeValue(tmp_val); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_CA_BUFFER_SIZE: { + int tmpRet = 0; + tmpRet = SSMReadCABufferSizeValue(); + r->writeInt32(tmpRet); + break; + } + case SSM_GET_ATV_DATA_START: { + int tmpRet = 0; + tmpRet = SSMGetATVDataStart(); + r->writeInt32(tmpRet); + break; + } + case SSM_GET_ATV_DATA_LEN: { + int tmpRet = 0; + tmpRet = SSMGetATVDataLen(); + r->writeInt32(tmpRet); + break; + } + case SSM_GET_VPP_DATA_START: { + int tmpRet = 0; + tmpRet = SSMGetVPPDataStart(); + r->writeInt32(tmpRet); + break; + } + case SSM_GET_VPP_DATA_LEN: { + int tmpRet = 0; + tmpRet = SSMGetVPPDataLen(); + r->writeInt32(tmpRet); + break; + } + case SSM_SAVE_NOISE_GATE_THRESHOLD_STATUS: { + int tmp_val = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveNoiseGateThresholdValue(tmp_val); + r->writeInt32(tmpRet); + break; + } + case SSM_READ_NOISE_GATE_THRESHOLD_STATUS: { + int tmpRet = 0; + tmpRet = SSMReadNoiseGateThresholdValue(); + r->writeInt32(tmpRet); + break; + } + case SSM_EEPROM_SAVE_ONE_BYTE_N310_N311: { + int tmpOffset = p.readInt32(); + int tmpVal = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveEEP_One_N310_N311(tmpOffset, tmpVal); + r->writeInt32(tmpRet); + break; + } + case SSM_EEPROM_READ_ONE_BYTE_N310_N311: { + int tmpOffset = p.readInt32(); + int tmpRet = 0; + tmpRet = SSMReadEEP_One_N310_N311(tmpOffset); + r->writeInt32(tmpRet); + break; + } + case SSM_EEPROM_SAVE_N_BYTES_N310_N311: { + int i = 0, tmp_offset = 0, tmp_data_len = 0, ret = -1; + + tmp_offset = p.readInt32(); + tmp_data_len = p.readInt32(); + + if (tmp_data_len > 0) { + data_ptr = new int[tmp_data_len]; + + if (data_ptr != NULL) { + for (i = 0; i < tmp_data_len; i++) { + data_ptr[i] = p.readInt32(); + } + + ret = SSMSaveEEP_N_N310_N311(tmp_offset, tmp_data_len, data_ptr); + + delete data_ptr; + data_ptr = NULL; + } + } + + r->writeInt32(ret); + break; + } + case SSM_EEPROM_READ_N_BYTES_N310_N311: { + int i = 0, tmp_offset = 0, tmp_data_len = 0, ret = -1; + tmp_offset = p.readInt32(); + tmp_data_len = p.readInt32(); + + if (tmp_data_len > 0) { + data_ptr = new int[tmp_data_len]; + if (data_ptr != NULL) { + ret = SSMReadEEP_N_N310_N311(tmp_offset, tmp_data_len, data_ptr); + if (ret < 0) { + tmp_data_len = 0; + } + r->writeInt32(tmp_data_len); + for (i = 0; i < tmp_data_len; i++) { + r->writeInt32(data_ptr[i]); + } + delete data_ptr; + data_ptr = NULL; + } + } + r->writeInt32(ret); + break; + } + case SSM_FLASH_SAVE_ONE_BYTE_N310_N311: { + int tmpOffset = p.readInt32(); + int tmpVal = p.readInt32(); + int tmpRet; + tmpRet = SSMSaveFlash_One_N310_N311(tmpOffset, tmpVal); + r->writeInt32(tmpRet); + break; + } + case SSM_FLASH_READ_ONE_BYTE_N310_N311: { + int tmpOffset = p.readInt32(); + int tmpRet = 0; + tmpRet = SSMReadFlash_One_N310_N311(tmpOffset); + r->writeInt32(tmpRet); + break; + } + case SSM_FLASH_SAVE_N_BYTES_N310_N311: { + int i = 0, tmp_offset = 0, tmp_data_len = 0, ret = -1; + + tmp_offset = p.readInt32(); + tmp_data_len = p.readInt32(); + + if (tmp_data_len > 0) { + data_ptr = new int[tmp_data_len]; + + if (data_ptr != NULL) { + for (i = 0; i < tmp_data_len; i++) { + data_ptr[i] = p.readInt32(); + } + + ret = SSMSaveFlash_N_N310_N311(tmp_offset, tmp_data_len, data_ptr); + + delete data_ptr; + data_ptr = NULL; + } + } + + r->writeInt32(ret); + break; + } + case SSM_FLASH_READ_N_BYTES_N310_N311: { + int i = 0, tmp_offset = 0, tmp_data_len = 0, ret = -1; + tmp_offset = p.readInt32(); + tmp_data_len = p.readInt32(); + + if (tmp_data_len > 0) { + data_ptr = new int[tmp_data_len]; + if (data_ptr != NULL) { + ret = SSMReadFlash_N_N310_N311(tmp_offset, tmp_data_len, data_ptr); + if (ret < 0) { + tmp_data_len = 0; + } + r->writeInt32(tmp_data_len); + for (i = 0; i < tmp_data_len; i++) { + r->writeInt32(data_ptr[i]); + } + delete data_ptr; + data_ptr = NULL; + } + } + r->writeInt32(ret); + break; + } + // SSM END + + //MISC + case MISC_PROP_SET: { + int tmpRet; + String16 tmp_str16; + String8 key_str, value_str; + + tmp_str16 = p.readString16(); + key_str = String8(tmp_str16); + tmp_str16 = p.readString16(); + value_str = String8(tmp_str16); + + tmpRet = property_set(key_str.string(), value_str.string()); + r->writeInt32(tmpRet); + break; + } + case MISC_PROP_GET: { + char prop_value[PROPERTY_VALUE_MAX]; + String16 tmp_str16; + String8 key_str, def_str; + + tmp_str16 = p.readString16(); + key_str = String8(tmp_str16); + tmp_str16 = p.readString16(); + def_str = String8(tmp_str16); + + memset(prop_value, '\0', PROPERTY_VALUE_MAX); + property_get(key_str.string(), prop_value, def_str.string()); + tmp_str16 = String16(prop_value); + + r->writeString16(tmp_str16); + break; + } + case MISC_CFG_SET: { + int tmpRet; + String16 tmp_str16; + String8 key_str, value_str; + + tmp_str16 = p.readString16(); + key_str = String8(tmp_str16); + tmp_str16 = p.readString16(); + value_str = String8(tmp_str16); + + tmpRet = config_set_str(CFG_SECTION_TV, key_str.string(), value_str.string()); + r->writeInt32(tmpRet); + break; + } + case MISC_CFG_GET: { + const char *prop_value; + String16 tmp_str16; + String8 key_str, def_str; + + tmp_str16 = p.readString16(); + key_str = String8(tmp_str16); + tmp_str16 = p.readString16(); + def_str = String8(tmp_str16); + + prop_value = config_get_str(CFG_SECTION_TV, key_str.string(), def_str.string()); + tmp_str16 = String16(prop_value); + + r->writeString16(tmp_str16); + break; + } + case MISC_READ_ADC_VAL: { + int tmpChanNum = p.readInt32(); + int tmpRet = 0; + tmpRet = ReadADCSpecialChannelValue(tmpChanNum); + r->writeInt32(tmpRet); + break; + } + case MISC_SET_WDT_USER_PET: { + int counter = p.readInt32(); + int ret = TvMisc_SetUserCounter(counter); + r->writeInt32(ret); + break; + } + case MISC_SET_WDT_USER_COUNTER: { + int counter_time_out = p.readInt32(); + int ret = TvMisc_SetUserCounterTimeOut(counter_time_out); + r->writeInt32(ret); + break; + } + case MISC_SET_WDT_USER_PET_RESET_ENABLE: { + int enable = p.readInt32(); + int ret = TvMisc_SetUserPetResetEnable(enable); + r->writeInt32(ret); + break; + } + case MISC_GET_TV_API_VERSION: { + const char *tmp_str8; + String16 tmp_str16; + + // write tvapi version info + tmp_str8 = tvservice_get_git_branch_info(); + tmp_str16 = String16(tmp_str8); + r->writeString16(tmp_str16); + + tmp_str8 = tvservice_get_git_version_info(); + tmp_str16 = String16(tmp_str8); + r->writeString16(tmp_str16); + + tmp_str8 = tvservice_get_last_chaned_time_info(); + tmp_str16 = String16(tmp_str8); + r->writeString16(tmp_str16); + + tmp_str8 = tvservice_get_build_time_info(); + tmp_str16 = String16(tmp_str8); + r->writeString16(tmp_str16); + + tmp_str8 = tvservice_get_build_name_info(); + tmp_str16 = String16(tmp_str8); + r->writeString16(tmp_str16); + break; + } + case MISC_GET_DVB_API_VERSION: { + const char *tmp_str8; + String16 tmp_str16; + + // write dvb version info + tmp_str8 = dvb_get_git_branch_info(); + tmp_str16 = String16(tmp_str8); + r->writeString16(tmp_str16); + + tmp_str8 = dvb_get_git_version_info(); + tmp_str16 = String16(tmp_str8); + r->writeString16(tmp_str16); + + tmp_str8 = dvb_get_last_chaned_time_info(); + tmp_str16 = String16(tmp_str8); + r->writeString16(tmp_str16); + + tmp_str8 = dvb_get_build_time_info(); + tmp_str16 = String16(tmp_str8); + r->writeString16(tmp_str16); + + tmp_str8 = dvb_get_build_name_info(); + tmp_str16 = String16(tmp_str8); + r->writeString16(tmp_str16); + + break; + } + case MISC_SERIAL_SWITCH: { + int dev_id = p.readInt32(); + int switch_val = p.readInt32(); + int ret = mpTv->SetSerialSwitch(dev_id, switch_val); + r->writeInt32(ret); + break; + } + case MISC_SERIAL_SEND_DATA: { + int i = 0, tmp_buf_size = 0, ret = 0; + + int dev_id = p.readInt32(); + + tmp_buf_size = p.readInt32(); + if (tmp_buf_size > sizeof(tmp_uc_buf)) { + tmp_buf_size = sizeof(tmp_uc_buf); + } + + for (i = 0; i < tmp_buf_size; i++) { + tmp_uc_buf[i] = p.readInt32() & 0xFF; + } + + ret = mpTv->SendSerialData(dev_id, tmp_buf_size, tmp_uc_buf); + r->writeInt32(ret); + break; + } + case MISC_CHANNEL_EXPORT: { + LOGD("MISC_CHANNEL_EXPORT"); + int ret = 0; + String16 tmp_str16; + String8 tmp_str; + + tmp_str16 = p.readString16(); + tmp_str = String8(tmp_str16); + + ret = mpTv->ChannelExport(tmp_str.string()); + r->writeInt32(ret); + break; + } + case MISC_CHANNEL_IMPORT: { + LOGD("MISC_CHANNEL_IMPORT"); + String16 tmp_str16; + String8 tmp_str; + + tmp_str16 = p.readString16(); + tmp_str = String8(tmp_str16); + int ret = 0; + ret = mpTv->ChannelImport(tmp_str.string()); + r->writeInt32(ret); + break; + } + case MISC_GET_PROJECT_INFO: { + String16 tmp_str16; + project_info_t tmpInfo; + + if (mpTv->Tv_GetProjectInfo(&tmpInfo) < 0) { + strcpy(tmpInfo.version, "UNKOWN"); + strcpy(tmpInfo.panel_type, "UNKOWN"); + strcpy(tmpInfo.panel_outputmode, "UNKOWN"); + strcpy(tmpInfo.panel_rev, "UNKOWN"); + strcpy(tmpInfo.panel_name, "UNKOWN"); + strcpy(tmpInfo.amp_curve_name, "UNKOWN"); + } + + r->writeString16(String16(tmpInfo.version)); + r->writeString16(String16(tmpInfo.panel_type)); + r->writeString16(String16(tmpInfo.panel_outputmode)); + r->writeString16(String16(tmpInfo.panel_rev)); + r->writeString16(String16(tmpInfo.panel_name)); + r->writeString16(String16(tmpInfo.amp_curve_name)); + break; + } + case MISC_GET_PLATFORM_TYPE: { + int ret = mpTv->Tv_GetPlatformType(); + r->writeInt32(ret); + break; + } + //MISC END + + // EXTAR + case SET_DEBUG_SERIAL_PORT_ONOFF: { + int on_off = p.readInt32(); + int ret = mpTv->SetDebugSerialOnOff(on_off); + r->writeInt32(ret); + break; + } + + case GET_DEBUG_SERIAL_PORT_ONOFF: { + int ret = mpTv->GetDebugSerialOnOff(); + r->writeInt32(ret); + break; + } + case DELETE_DIR_FILES: { + String16 strPath = p.readString16(); + if (strPath.size() <= 0) { + r->writeInt32(-1); + break; + } + String8 strP8 = String8(strPath); + int tmp_flag = p.readInt32(); + int ret = TvMisc_DeleteDirFiles(strP8.string(), tmp_flag); + r->writeInt32(ret); + break; + } + case DTV_SUBTITLE_INIT: { + int bitmapWidth = p.readInt32(); + int bitmapHeight = p.readInt32(); + r->writeInt32(mpTv->initSubtitle(bitmapWidth, bitmapHeight)); + break; + } + case DTV_SUBTITLE_LOCK: { + r->writeInt32(mpTv->lockSubtitle()); + break; + } + case DTV_SUBTITLE_UNLOCK: { + r->writeInt32(mpTv->unlockSubtitle()); + break; + } + case DTV_GET_SUBTITLE_SWITCH: { + r->writeInt32(mpTv->getSubSwitchStatus()); + break; + } + case DTV_START_SUBTITLE: { + int dmx_id = p.readInt32(); + int pid = p.readInt32(); + int page_id = p.readInt32(); + int anc_page_id = p.readInt32(); + r->writeInt32(mpTv->startSubtitle(dmx_id, pid, page_id, anc_page_id)); + break; + } + case DTV_STOP_SUBTITLE: { + r->writeInt32(mpTv->stopSubtitle()); + break; + } + case DTV_GET_SUBTITLE_INDEX: { + int progId = p.readInt32(); + CTvProgram prog; + CTvProgram::selectByID(progId, prog); + r->writeInt32(prog.getSubtitleIndex(progId)); + break; + } + case DTV_SET_SUBTITLE_INDEX: { + int progId = p.readInt32(); + int index = p.readInt32(); + CTvProgram prog; + CTvProgram::selectByID(progId, prog); + r->writeInt32(prog.setSubtitleIndex(progId, index)); + break; + } + case ATV_GET_CURRENT_PROGRAM_ID: { + int atvLastProgramId = mpTv->getATVProgramID(); + r->writeInt32(atvLastProgramId); + break; + } + case DTV_GET_CURRENT_PROGRAM_ID: { + int dtvLastProgramId = mpTv->getDTVProgramID(); + r->writeInt32(dtvLastProgramId); + break; + } + case ATV_SAVE_PROGRAM_ID: { + int progID = p.readInt32(); + int retCnt = 0; + mpTv->saveATVProgramID(progID); + r->writeInt32(retCnt); + break; + } + case ATV_GET_MIN_MAX_FREQ: { + int min, max; + int tmpRet = mpTv->getATVMinMaxFreq(&min, &max); + r->writeInt32(min); + r->writeInt32(max); + r->writeInt32(tmpRet); + break; + } + case DTV_GET_SCAN_FREQUENCY_LIST: { + Vector > out; + int tmpRet = CTvRegion::getChannelListByName("CHINA,Default DTMB ALL", out); + r->writeInt32(out.size()); + for (int i = 0; i < (int)out.size(); i++) { + r->writeInt32(out[i]->getID()); + r->writeInt32(out[i]->getFrequency()); + } + r->writeInt32(tmpRet); + break; + } + case DTV_GET_CHANNEL_INFO: { + int dbID = p.readInt32(); + channel_info_t chan_info; + int ret = mpTv->getChannelInfoBydbID(dbID, chan_info); + r->writeInt32(chan_info.freq); + r->writeInt32(chan_info.uInfo.dtvChanInfo.strength); + r->writeInt32(chan_info.uInfo.dtvChanInfo.quality); + r->writeInt32(chan_info.uInfo.dtvChanInfo.ber); + r->writeInt32(ret); + break; + } + case ATV_GET_CHANNEL_INFO: { + int dbID = p.readInt32(); + channel_info_t chan_info; + int ret = mpTv->getChannelInfoBydbID(dbID, chan_info); + r->writeInt32(chan_info.freq); + r->writeInt32(chan_info.uInfo.atvChanInfo.finefreq); + r->writeInt32(chan_info.uInfo.atvChanInfo.videoStd); + r->writeInt32(chan_info.uInfo.atvChanInfo.audioStd); + r->writeInt32(chan_info.uInfo.atvChanInfo.isAutoStd); + r->writeInt32(ret); + break; + } + case ATV_SCAN_MANUAL: { + int tmpRet = 0; + int startFreq = p.readInt32(); + int endFreq = p.readInt32(); + int videoStd = p.readInt32(); + int audioStd = p.readInt32(); + tmpRet = mpTv->atvMunualScan(startFreq, endFreq, videoStd, audioStd); + mTvService->mpScannerClient = this; + r->writeInt32(tmpRet); + break; + } + + + case ATV_SCAN_AUTO: { + int tmpRet = 0; + LOGD("%s, atv auto scan!!!\n", "TV"); + int videoStd = p.readInt32(); + int audioStd = p.readInt32(); + int searchType = p.readInt32(); + tmpRet = mpTv->atvAutoScan(videoStd, audioStd, searchType); + mTvService->mpScannerClient = this; + r->writeInt32(tmpRet); + break; + } + case DTV_SCAN_MANUAL: { + int tmpRet = 0; + int freq = p.readInt32(); + tmpRet = mpTv->dtvManualScan(freq, freq); + mTvService->mpScannerClient = this; + r->writeInt32(tmpRet); + break; + } + case DTV_SCAN_MANUAL_BETWEEN_FREQ: { + int tmpRet = 0; + int beginFreq = p.readInt32(); + int endFreq = p.readInt32(); + int modulation = p.readInt32(); + tmpRet = mpTv->dtvManualScan(beginFreq, endFreq, modulation); + mTvService->mpScannerClient = this; + r->writeInt32(tmpRet); + break; + } + case DTV_SCAN_AUTO: { + int tmpRet = 0; + tmpRet = mpTv->dtvAutoScan(); + mTvService->mpScannerClient = this; + r->writeInt32(tmpRet); + break; + } + case DTV_SCAN_AUTO_ATSC: { + int tmpRet = 0; + int attenna = p.readInt32(); + int vstd = p.readInt32(); + int astd = p.readInt32(); + tmpRet = mpTv->dtvAutoScanAtscLock(attenna, vstd, astd); + mTvService->mpScannerClient = this; + r->writeInt32(tmpRet); + break; + } + case TV_SUBTITLE_DRAW_END: { + int tmpRet = 0; + //if(pSub)pSub->lock.unlock(); + r->writeInt32(tmpRet); + break; + } + case STOP_PROGRAM_PLAY: { + int tmpRet = -1; + tmpRet = mpTv->stopPlayingLock(); + r->writeInt32(tmpRet); + break; + } + case DTV_TEST_1: { + // int progid = p.readInt32(); + //CTvProgram prog; + // int ret = CTvProgram::selectByID(progid, prog); + //CTvEvent ev; + //ret = ev.getProgPresentEvent(prog.getSrc(), prog.getID(), mpTv->getTvTime(), ev); + //r->writeString16(String16(ev.getName())); + break; + } + case DTV_TEST_2: { + //int cmd = p.readInt32(); + //CTvDatabase::GetTvDb()->importXmlToDB("/etc/tv_default.xml"); + //r->writeString16(String16("xml")); + break; + } + + case TV_CLEAR_ALL_PROGRAM: { + int tmpRet = 0; + int arg0 = p.readInt32(); + + tmpRet = mpTv->clearAllProgram(arg0); + mTvService->mpScannerClient = this; + r->writeInt32(tmpRet); + break; + } + + case GET_DISPLAY_RESOLUTION_CONFIG: { + int tmpRet = 0; + tmpRet = mpTv->GetDisplayResolutionConfig(); + r->writeInt32(tmpRet); + break; + } + + case GET_DISPLAY_RESOLUTION_INFO: { + int tmpRet = 0; + tmpRet = mpTv->GetDisplayResolutionInfo(); + r->writeInt32(tmpRet); + break; + } + + case HDMIRX_CEC_SEND_CUSTOM_MESSAGE: { + int i = 0, tmp_buf_size = 0, ret = 0; + tmp_buf_size = p.readInt32(); + for (i = 0; i < tmp_buf_size; i++) { + tmp_uc_buf[i] = p.readInt32(); + } + + int tmpRet = 0; + tmpRet = mpTv->SendHDMIRxCECCustomMessage(tmp_uc_buf); + r->writeInt32(tmpRet); + break; + } + + case HDMIRX_CEC_SEND_CUSTOM_WAIT_REPLY_MESSAGE: { + int i = 0, tmp_buf_size = 0, ret = 0; + int WaitCmd = 0, timeout = 0; + tmp_buf_size = p.readInt32(); + for (i = 0; i < tmp_buf_size; i++) { + tmp_uc_buf[i] = p.readInt32(); + } + + WaitCmd = p.readInt32(); + timeout = p.readInt32(); + + int tmpRet = 0; + tmpRet = mpTv->SendHDMIRxCECCustomMessageAndWaitReply(tmp_uc_buf, tmp_uc_buf2, WaitCmd, timeout); + + r->writeInt32(tmpRet); + if (tmpRet > 0) { + for (i = 0; i < tmpRet; i++) { + r->writeInt32(tmp_uc_buf2[i]); + } + } + + r->writeInt32(tmpRet); + break; + } + + case HDMIRX_CEC_SEND_BROADCAST_STANDBY_MESSAGE: { + int tmpRet = 0; + tmpRet = mpTv->SendHDMIRxCECBoradcastStandbyMessage(); + r->writeInt32(tmpRet); + break; + } + + case HDMIRX_CEC_SEND_GIVE_CEC_VERSION_MESSAGE: { + int i = 0, tmp_buf_size = 0, ret = 0; + int sourceinput = p.readInt32(); + LOGD("HDMIRX_CEC_SEND_GIVE_CEC_VERSION_MESSAGE: sourceinput = %x", sourceinput); + tmp_buf_size = mpTv->SendHDMIRxCECGiveCECVersionMessage((tv_source_input_t)sourceinput, tmp_uc_buf); + r->writeInt32(tmp_buf_size); + for (i = 0; i < tmp_buf_size; i++) { + r->writeInt32(tmp_uc_buf[i]); + } + r->writeInt32(tmp_buf_size); + break; + } + + case HDMIRX_CEC_SEND_GIVE_DEV_VENDOR_ID_MESSAGE: { + int i = 0, tmp_buf_size = 0, ret = 0; + int sourceinput = p.readInt32(); + LOGD("HDMIRX_CEC_SEND_GIVE_DEV_VENDOR_ID_MESSAGE: sourceinput = %x", sourceinput); + tmp_buf_size = mpTv->SendHDMIRxCECGiveDeviceVendorIDMessage((tv_source_input_t)sourceinput, tmp_uc_buf); + r->writeInt32(tmp_buf_size); + for (i = 0; i < tmp_buf_size; i++) { + r->writeInt32(tmp_uc_buf[i]); + } + r->writeInt32(tmp_buf_size); + break; + } + + case HDMIRX_CEC_SEND_GIVE_OSD_NAME_MESSAGE: { + int i = 0, tmp_buf_size = 0, ret = 0; + int sourceinput = p.readInt32(); + LOGD("HDMIRX_CEC_SEND_GIVE_OSD_NAME_MESSAGE: sourceinput = %x", sourceinput); + tmp_buf_size = mpTv->SendHDMIRxCECGiveOSDNameMessage((tv_source_input_t)sourceinput, tmp_uc_buf); + r->writeInt32(tmp_buf_size); + for (i = 0; i < tmp_buf_size; i++) { + r->writeInt32(tmp_uc_buf[i]); + } + r->writeInt32(tmp_buf_size); + break; + } + + case GET_HDMI_KSV_INFO: { + int tmpRet = 0; + int ksv_data[2] = {0, 0}; + tmpRet = mpTv->GetHdmiHdcpKeyKsvInfo(ksv_data); + r->writeInt32(tmpRet); + r->writeInt32(ksv_data[0]); + r->writeInt32(ksv_data[1]); + break; + } + + case HDMI_OUT_TOWHAT: { + r->writeInt32(mpTv->hdmiOutWithFbc() ? 1 : 0); + break; + } + case FACTORY_FBC_UPGRADE: { + String16 tmpName = p.readString16(); + String8 strName = String8(tmpName); + sprintf((char *)tmp_uc_buf, "%s", strName.string()); + int mode = p.readInt32(); + int upgrade_blk_size = p.readInt32(); + int ret = mpTv->StartUpgradeFBC((char *)tmp_uc_buf, mode, upgrade_blk_size); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_SET_BRIGHTNESS: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_Brightness(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_BRIGHTNESS: { + int ret = mpTv->Tv_FactoryGet_FBC_Brightness(); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_SET_CONTRAST: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_Contrast(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_CONTRAST: { + int ret = mpTv->Tv_FactoryGet_FBC_Contrast(); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_SET_SATURATION: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_Saturation(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_SATURATION: { + int ret = mpTv->Tv_FactoryGet_FBC_Saturation(); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_SET_HUE: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_HueColorTint(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_HUE: { + int ret = mpTv->Tv_FactoryGet_FBC_HueColorTint(); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_SET_BACKLIGHT: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_Backlight(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_BACKLIGHT: { + int ret = mpTv->Tv_FactoryGet_FBC_Backlight(); + r->writeInt32(ret); + break; + } + case FACTROY_FBC_SET_LIGHT_SENSOR_STATUS_N310: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_LightSensor_Status_N310(value); + r->writeInt32(ret); + break; + } + + case FACTROY_FBC_GET_LIGHT_SENSOR_STATUS_N310: { + int ret = mpTv->Tv_FactoryGet_FBC_LightSensor_Status_N310(); + r->writeInt32(ret); + break; + } + case FACTROY_FBC_SET_DREAM_PANEL_STATUS_N310: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_Dream_Panel_Status_N310(value); + r->writeInt32(ret); + break; + } + + case FACTROY_FBC_GET_DREAM_PANEL_STATUS_N310: { + int ret = mpTv->Tv_FactoryGet_FBC_Dream_Panel_Status_N310(); + r->writeInt32(ret); + break; + } + case FACTROY_FBC_SET_MULT_PQ_STATUS_N310: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_MULT_PQ_Status_N310(value); + r->writeInt32(ret); + break; + } + + case FACTROY_FBC_GET_MULT_PQ_STATUS_N310: { + int ret = mpTv->Tv_FactoryGet_FBC_MULT_PQ_Status_N310(); + r->writeInt32(ret); + break; + } + case FACTROY_FBC_SET_MEMC_STATUS_N310: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_MEMC_Status_N310(value); + r->writeInt32(ret); + break; + } + + case FACTROY_FBC_GET_MEMC_STATUS_N310: { + int ret = mpTv->Tv_FactoryGet_FBC_MEMC_Status_N310(); + r->writeInt32(ret); + break; + } + + case MISC_SET_2K_TO_4K_SCALE_UP_MODE : { + int value = p.readInt32(); + int ret = mpTv->Tv_Set2k4k_ScalerUp_Mode(value); + r->writeInt32(ret); + break; + } + + case MISC_GET_2K_TO_4K_SCALE_UP_MODE: { + int ret = mpTv->Tv_Get2k4k_ScalerUp_Mode(); + r->writeInt32(ret); + break; + } + case FACTORY_FBC_SET_BACKLIGHT_EN : { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_backlight_onoff(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_BACKLIGHT_EN: { + int ret = mpTv->Tv_FactoryGet_FBC_backlight_onoff(); + r->writeInt32(ret); + break; + } + case FACTORY_FBC_TEST_PATTERN: { + int value = p.readInt32(); + int ret = mpTv->Tv_SetTestPattern(value); + r->writeInt32(ret); + break; + } + case FACTORY_FBC_SET_LVDS_SSG: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_LVDS_SSG_Set(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_SET_ELEC_MODE: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_ELEC_MODE(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_ELEC_MODE: { + int ret = mpTv->Tv_FactoryGet_FBC_ELEC_MODE(); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_SET_BACKLIGHT_N360: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_BACKLIGHT_N360(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_BACKLIGHT_N360: { + int ret = mpTv->Tv_FactoryGet_FBC_BACKLIGHT_N360(); + r->writeInt32(ret); + break; + } + + + case FACTORY_FBC_SET_PIC_MODE: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_Picture_Mode(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_PIC_MODE: { + int ret = mpTv->Tv_FactoryGet_FBC_Picture_Mode(); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_SET_TEST_PATTERN: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_Set_Test_Pattern(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_TEST_PATTERN: { + int ret = mpTv->Tv_FactoryGet_FBC_Get_Test_Pattern(); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_SET_GAIN_RED: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_Gain_Red(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_GAIN_RED: { + int ret = mpTv->Tv_FactoryGet_FBC_Gain_Red(); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_SET_GAIN_GREEN: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_Gain_Green(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_GAIN_GREEN: { + int ret = mpTv->Tv_FactoryGet_FBC_Gain_Green(); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_SET_GAIN_BLUE: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_Gain_Blue(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_GAIN_BLUE: { + int ret = mpTv->Tv_FactoryGet_FBC_Gain_Blue(); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_SET_OFFSET_RED: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_Offset_Red(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_OFFSET_RED: { + int ret = mpTv->Tv_FactoryGet_FBC_Offset_Red(); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_SET_OFFSET_GREEN: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_Offset_Green(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_OFFSET_GREEN: { + int ret = mpTv->Tv_FactoryGet_FBC_Offset_Green(); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_SET_OFFSET_BLUE: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_Offset_Blue(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_OFFSET_BLUE: { + int ret = mpTv->Tv_FactoryGet_FBC_Offset_Blue(); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_SET_COLORTEMP_MODE: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_ColorTemp_Mode(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_COLORTEMP_MODE: { + int ret = mpTv->Tv_FactoryGet_FBC_ColorTemp_Mode(); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_SET_COLORTEMP_MODE_N360: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_ColorTemp_Mode_N360(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_COLORTEMP_MODE_N360: { + int ret = mpTv->Tv_FactoryGet_FBC_ColorTemp_Mode_N360(); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_SET_WB_INIT: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySet_FBC_WB_Initial(value); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_WB_INIT: { + int ret = mpTv->Tv_FactoryGet_FBC_WB_Initial(); + r->writeInt32(ret); + break; + } + + case FACTORY_FBC_GET_MAINCODE_VERSION: { + char sw_version[64]; + char build_time[64]; + char git_version[64]; + char git_branch[64]; + char build_name[64]; + CFbcCommunication *fbcIns = GetSingletonFBC(); + if (fbcIns != NULL) { + fbcIns->cfbc_Get_FBC_MAINCODE_Version(COMM_DEV_SERIAL, sw_version, build_time, git_version, git_branch, build_name); + r->writeString16(String16(sw_version)); + r->writeString16(String16(build_time)); + r->writeString16(String16(git_version)); + r->writeString16(String16(git_branch)); + r->writeString16(String16(build_name)); + } else { + r->writeString16(String16("No FBC")); + r->writeString16(String16("No FBC")); + r->writeString16(String16("No FBC")); + r->writeString16(String16("No FBC")); + r->writeString16(String16("No FBC")); + } + break; + } + case FACTORY_SET_SN: { + char StrFactSN[256] = {0}; + String16 strTemFactorySn = p.readString16(); + String8 strFactorySn = String8(strTemFactorySn); + sprintf((char *)StrFactSN, "%s", strFactorySn.string()); + CFbcCommunication *fbcIns = GetSingletonFBC(); + if (fbcIns != NULL) { + int iRet = fbcIns->cfbc_Set_FBC_Factory_SN(COMM_DEV_SERIAL, (const char *)StrFactSN); + r->writeInt32(iRet); + } else { + r->writeInt32(-1); + } + break; + } + case FACTORY_GET_SN: { + char factorySerialNumber[256] = {0}; + memset((void *)factorySerialNumber, 0, 256); + CFbcCommunication *fbcIns = GetSingletonFBC(); + if (fbcIns != NULL) { + fbcIns->cfbc_Get_FBC_Factory_SN(COMM_DEV_SERIAL, factorySerialNumber); + r->writeString16(String16(factorySerialNumber)); + } else { + r->writeString16(String16("No FBC")); + } + break; + } + case FACTORY_FBC_PANEL_GET_INFO: { + char panel_model[64]; + CFbcCommunication *fbcIns = GetSingletonFBC(); + if (fbcIns != NULL) { + fbcIns->cfbc_Get_FBC_Get_PANel_INFO(COMM_DEV_SERIAL, panel_model); + r->writeString16(String16(panel_model)); + } else { + r->writeString16(String16("")); + } + break; + } + case FACTORY_FBC_PANEL_POWER_SWITCH: { + int value = p.readInt32(); + CFbcCommunication *fbcIns = GetSingletonFBC(); + if (fbcIns != NULL) { + int ret = fbcIns->cfbc_Set_FBC_panel_power_switch(COMM_DEV_SERIAL, value); + r->writeInt32(ret); + } else { + r->writeInt32(-1); + } + break; + } + case FACTORY_FBC_PANEL_SUSPEND: { + int value = p.readInt32(); + CFbcCommunication *fbcIns = GetSingletonFBC(); + if (fbcIns != NULL) { + int ret = fbcIns->cfbc_Set_FBC_suspend(COMM_DEV_SERIAL, value); + r->writeInt32(ret); + } else { + r->writeInt32(-1); + } + break; + } + case FACTORY_FBC_PANEL_USER_SETTING_DEFAULT: { + int value = p.readInt32(); + CFbcCommunication *fbcIns = GetSingletonFBC(); + if (fbcIns != NULL) { + int ret = fbcIns->cfbc_Set_FBC_User_Setting_Default(COMM_DEV_SERIAL, value); + r->writeInt32(ret); + } else { + r->writeInt32(-1); + } + break; + } + case FACTORY_FBC_VIDEO_MUTE: { + CFbcCommunication *fbcIns = GetSingletonFBC(); + if (fbcIns != NULL) { + int ret = fbcIns->cfbc_Set_VMute(COMM_DEV_SERIAL, 1); + r->writeInt32(ret); + } else { + r->writeInt32(-1); + } + break; + } + case FACTORY_FBC_POWER_REBOOT: { + int value = p.readInt32(); + CFbcCommunication *fbcIns = GetSingletonFBC(); + if (fbcIns != NULL) { + int ret = fbcIns->cfbc_SendRebootToUpgradeCmd(COMM_DEV_SERIAL, value); + r->writeInt32(ret); + } else { + r->writeInt32(-1); + } + break; + } + case FACTORY_FBC_SEND_KEY_TO_FBC: { + int keyCode = p.readInt32(); + int param = p.readInt32(); + CFbcCommunication *fbcIns = GetSingletonFBC(); + if (fbcIns != NULL) { + int ret = fbcIns->cfbc_FBC_Send_Key_To_Fbc(COMM_DEV_SERIAL, keyCode, param); + r->writeInt32(ret); + } else { + r->writeInt32(-1); + } + break; + } + case FACTORY_WHITE_BALANCE_SET_GAIN_RED: { + int source_type = p.readInt32(); + int colortemp_mode = p.readInt32(); + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySetWhiteBalanceRedGain(source_type, colortemp_mode, value); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_GET_GAIN_RED: { + int source_type = p.readInt32(); + int colortemp_mode = p.readInt32(); + int ret = mpTv->Tv_FactoryGetWhiteBalanceRedGain(source_type, colortemp_mode); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_SET_GAIN_GREEN: { + int source_type = p.readInt32(); + int colortemp_mode = p.readInt32(); + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySetWhiteBalanceGreenGain(source_type, colortemp_mode, value); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_GET_GAIN_GREEN: { + int source_type = p.readInt32(); + int colortemp_mode = p.readInt32(); + int ret = mpTv->Tv_FactoryGetWhiteBalanceGreenGain(source_type, colortemp_mode); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_SET_GAIN_BLUE: { + int source_type = p.readInt32(); + int colortemp_mode = p.readInt32(); + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySetWhiteBalanceBlueGain(source_type, colortemp_mode, value); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_GET_GAIN_BLUE: { + int source_type = p.readInt32(); + int colortemp_mode = p.readInt32(); + int ret = mpTv->Tv_FactoryGetWhiteBalanceBlueGain(source_type, colortemp_mode); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_SET_OFFSET_RED: { + int source_type = p.readInt32(); + int colortemp_mode = p.readInt32(); + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySetWhiteBalanceRedOffset(source_type, colortemp_mode, value); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_GET_OFFSET_RED: { + int source_type = p.readInt32(); + int colortemp_mode = p.readInt32(); + int ret = mpTv->Tv_FactoryGetWhiteBalanceRedOffset(source_type, colortemp_mode); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_SET_OFFSET_GREEN: { + int source_type = p.readInt32(); + int colortemp_mode = p.readInt32(); + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySetWhiteBalanceGreenOffset(source_type, colortemp_mode, value); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_GET_OFFSET_GREEN: { + int source_type = p.readInt32(); + int colortemp_mode = p.readInt32(); + int ret = mpTv->Tv_FactoryGetWhiteBalanceGreenOffset(source_type, colortemp_mode); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_SET_OFFSET_BLUE: { + int source_type = p.readInt32(); + int colortemp_mode = p.readInt32(); + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySetWhiteBalanceBlueOffset(source_type, colortemp_mode, value); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_GET_OFFSET_BLUE: { + int source_type = p.readInt32(); + int colortemp_mode = p.readInt32(); + int ret = mpTv->Tv_FactoryGetWhiteBalanceBlueOffset(source_type, colortemp_mode); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_GET_COLOR_TMP: { + int source_type = p.readInt32(); + int ret = mpTv->Tv_FactoryGetWhiteBalanceColorTempMode(source_type); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_SET_COLOR_TMP: { + int source_type = p.readInt32(); + int Tempmode = p.readInt32(); + int is_save = p.readInt32(); + int ret = mpTv->Tv_FactorySetWhiteBalanceColorTempMode(source_type, Tempmode, is_save); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_SAVE_PRAMAS: { + int source_type = p.readInt32(); + int mode = p.readInt32(); + int r_gain = p.readInt32(); + int g_gain = p.readInt32(); + int b_gain = p.readInt32(); + int r_offset = p.readInt32(); + int g_offset = p.readInt32(); + int b_offset = p.readInt32(); + int ret = mpTv->Tv_FactorySaveWhiteBalancePramas(source_type, mode, r_gain, g_gain, b_gain, r_offset, g_offset, b_offset); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_OPEN_GRAY_PATTERN: { + int ret = mpTv->Tv_FactoryOpenWhiteBalanceGrayPattern(); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_CLOSE_GRAY_PATTERN: { + int ret = mpTv->Tv_FactoryCloseWhiteBalanceGrayPattern(); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_SET_GRAY_PATTERN: { + int value = p.readInt32(); + int ret = mpTv->Tv_FactorySetWhiteBalanceGrayPattern(value); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_GET_GRAY_PATTERN: { + int ret = mpTv->Tv_FactoryGetWhiteBalanceGrayPattern(); + r->writeInt32(ret); + break; + } + case FACTORY_WHITE_BALANCE_GET_ALL_PRAMAS: { + int Tempmode = p.readInt32(); + tcon_rgb_ogo_t params; + int ret = mpTv->GetColorTemperatureParams((vpp_color_temperature_mode_t)Tempmode, ¶ms); + r->writeInt32(ret); + r->writeInt32(params.r_gain); + r->writeInt32(params.g_gain); + r->writeInt32(params.b_gain); + r->writeInt32(params.r_post_offset); + r->writeInt32(params.g_post_offset); + r->writeInt32(params.b_post_offset); + } + case STOP_SCAN: { + mpTv->stopScanLock(); + break; + } + case DTV_GET_SNR: { + int tmpRet = 0; + tmpRet = mpTv->getFrontendSNR(); + r->writeInt32(tmpRet); + break; + } + case DTV_GET_BER: { + int tmpRet = 0; + tmpRet = mpTv->getFrontendBER(); + r->writeInt32(tmpRet); + break; + } + case DTV_GET_STRENGTH: { + int tmpRet = 0; + tmpRet = mpTv->getFrontendSignalStrength(); + r->writeInt32(tmpRet); + break; + } + case DTV_GET_AUDIO_TRACK_NUM: { + int programId = p.readInt32(); + int retCnt = 0; + retCnt = mpTv->getAudioTrackNum(programId); + r->writeInt32(retCnt); + break; + } + case DTV_GET_AUDIO_TRACK_INFO: { + int progId = p.readInt32(); + int aIdx = p.readInt32(); + int aFmt = -1; + int iRet = -1; + String8 lang; + iRet = mpTv->getAudioInfoByIndex(progId, aIdx, &aFmt, lang); + r->writeInt32(aFmt); + r->writeString16(String16(lang)); + break; + } + case DTV_SWITCH_AUDIO_TRACK: { + int aPid = p.readInt32(); + int aFmt = p.readInt32(); + int aParam = p.readInt32(); + int ret = -1; + ret = mpTv->switchAudioTrack(aPid, aFmt, aParam); + r->writeInt32(ret); + break; + } + case DTV_GET_CURR_AUDIO_TRACK_INDEX: { + int currAduIdx = -1; + int progId = p.readInt32(); + CTvProgram prog; + CTvProgram::selectByID(progId, prog); + currAduIdx = prog.getCurrAudioTrackIndex(); + r->writeInt32(currAduIdx); + break; + } + case DTV_SET_AUDIO_CHANNEL_MOD: { + int audioChannelIdx = p.readInt32(); + mpTv->setAudioChannel(audioChannelIdx); + break; + } + case DTV_GET_AUDIO_CHANNEL_MOD: { + int currChannelMod; + currChannelMod = mpTv->getAudioChannel(); + r->writeInt32(currChannelMod); + break; + } + case DTV_GET_CUR_FREQ: { + int progId = p.readInt32(); + int freq = 0; + int iRet = -1; + CTvProgram prog; + CTvChannel channel; + + iRet = CTvProgram::selectByID(progId, prog); + if (0 != iRet) return -1; + prog.getChannel(channel); + freq = channel.getFrequency(); + r->writeInt32(freq); + break; + } + case DTV_GET_EPG_UTC_TIME: { + int iRet = -1; + int utcTime = 0; + + utcTime = mpTv->getTvTime(); + + r->writeInt32(utcTime); + break; + } + case DTV_GET_EPG_INFO_POINT_IN_TIME: { + int progid = p.readInt32(); + int utcTime = p.readInt32(); + CTvProgram prog; + int ret = CTvProgram::selectByID(progid, prog); + CTvEvent ev; + ret = ev.getProgPresentEvent(prog.getSrc(), prog.getID(), utcTime, ev); + r->writeString16(String16(ev.getName())); + r->writeString16(String16(ev.getDescription())); + r->writeString16(String16(ev.getExtDescription())); + r->writeInt32(ev.getStartTime()); + r->writeInt32(ev.getEndTime()); + r->writeInt32(ev.getSubFlag()); + r->writeInt32(ev.getEventId()); + break; + } + case DTV_GET_EPG_INFO_DURATION: { + int iRet = -1; + int iObOutSize = 0; + Vector > epgOut; + int progid = p.readInt32(); + int iUtcStartTime = p.readInt32(); + int iDurationTime = p.readInt32(); + CTvProgram prog; + CTvEvent ev; + iRet = CTvProgram::selectByID(progid, prog); + if (0 != iRet) { + break; + } + iRet = ev.getProgScheduleEvents(prog.getSrc(), prog.getID(), iUtcStartTime, iDurationTime, epgOut); + if (0 != iRet) { + break; + } + iObOutSize = epgOut.size(); + if (0 == iObOutSize) { + break; + } + + r->writeInt32(iObOutSize); + for (int i = 0; i < iObOutSize; i ++) { + r->writeString16(String16(epgOut[i]->getName())); + r->writeString16(String16(epgOut[i]->getDescription())); + r->writeString16(String16(ev.getExtDescription())); + r->writeInt32(epgOut[i]->getStartTime()); + r->writeInt32(epgOut[i]->getEndTime()); + r->writeInt32(epgOut[i]->getSubFlag()); + r->writeInt32(epgOut[i]->getEventId()); + } + break; + } + case DTV_SET_PROGRAM_NAME: { + CTvProgram prog; + int progid = p.readInt32(); + String16 tmpName = p.readString16(); + String8 strName = String8(tmpName); + prog.updateProgramName(progid, strName); + break; + } + case DTV_SET_PROGRAM_SKIPPED: { + CTvProgram prog; + int progid = p.readInt32(); + bool bSkipFlag = p.readInt32(); + prog.setSkipFlag(progid, bSkipFlag); + break; + } + case DTV_SET_PROGRAM_FAVORITE: { + CTvProgram prog; + int progid = p.readInt32(); + bool bFavorite = p.readInt32(); + prog.setFavoriteFlag(progid, bFavorite); + break; + } + case DTV_DETELE_PROGRAM: { + CTvProgram prog; + int progid = p.readInt32(); + prog.deleteProgram(progid); + break; + } + case SET_BLACKOUT_ENABLE: { + int enable = p.readInt32(); + mpTv->setBlackoutEnable(enable); + break; + } + case START_AUTO_BACKLIGHT: { + mpTv->startAutoBackLight(); + break; + } + case STOP_AUTO_BACKLIGHT: { + mpTv->stopAutoBackLight(); + break; + } + case IS_AUTO_BACKLIGHTING: { + int on = mpTv->getAutoBackLight_on_off(); + r->writeInt32(on); + break; + } + case GET_AVERAGE_LUMA: { + int ret = mpTv->getAverageLuma(); + r->writeInt32(ret); + break; + } + case GET_AUTO_BACKLIGHT_DATA: { + int i; + int size = mpTv->getAutoBacklightData(tmp_i_buf); + r->writeInt32(size); + for (i = 0; i < size; i++) { + r->writeInt32(tmp_i_buf[i]); + } + break; + } + case SET_AUTO_BACKLIGHT_DATA: { + String16 tmp_str16; + String8 value_str; + + tmp_str16 = p.readString16(); + value_str = String8(tmp_str16); + + int ret = mpTv->setAutobacklightData(value_str); + r->writeInt32(ret); + break; + } + + case SSM_READ_BLACKOUT_ENABLE: { + int enable = mpTv->getSaveBlackoutEnable(); + r->writeInt32(enable); + break; + } + case DTV_SWAP_PROGRAM: { + CTvProgram prog; + int firstProgId = p.readInt32(); + int secondProgId = p.readInt32(); + CTvProgram::selectByID(firstProgId, prog); + int firstChanOrderNum = prog.getChanOrderNum(); + CTvProgram::selectByID(secondProgId, prog); + int secondChanOrderNum = prog.getChanOrderNum(); + prog.swapChanOrder(firstProgId, firstChanOrderNum, secondProgId, secondChanOrderNum); + break; + } + case DTV_SET_PROGRAM_LOCKED: { + CTvProgram prog; + int progid = p.readInt32(); + bool bLocked = p.readInt32(); + prog.setLockFlag(progid, bLocked); + break; + } + case DTV_SET_BOOKING_FLAG: { + CTvEvent ev; + int iEvtId = p.readInt32(); + bool iBookFlag = (bool)p.readInt32(); + ev.bookEvent(iEvtId, iBookFlag); + break; + } + case DTV_GET_FREQ_BY_PROG_ID: { + int freq = 0; + int progid = p.readInt32(); + CTvProgram prog; + int ret = CTvProgram::selectByID(progid, prog); + if (ret != 0) return -1; + CTvChannel channel; + prog.getChannel(channel); + freq = channel.getFrequency(); + r->writeInt32(freq); + break; + } + case DTV_GET_BOOKED_EVENT: { + CTvBooking tvBook; + Vector > vTvBookOut; + tvBook.getBookedEventList(vTvBookOut); + int iObOutSize = vTvBookOut.size(); + if (0 == iObOutSize) { + break; + } + r->writeInt32(iObOutSize); + for (int i = 0; i < iObOutSize; i ++) { + r->writeString16(String16(vTvBookOut[i]->getProgName())); + r->writeString16(String16(vTvBookOut[i]->getEvtName())); + r->writeInt32(vTvBookOut[i]->getStartTime()); + r->writeInt32(vTvBookOut[i]->getDurationTime()); + r->writeInt32(vTvBookOut[i]->getBookId()); + r->writeInt32(vTvBookOut[i]->getProgramId()); + r->writeInt32(vTvBookOut[i]->getEventId()); + } + break; + } + case SET_FRONTEND_PARA: { + int ret = -1; + frontend_para_set_t feParms; + feParms.mode = (fe_type_t)p.readInt32(); + feParms.freq = p.readInt32(); + feParms.videoStd = (atv_video_std_t)p.readInt32(); + feParms.audioStd = (atv_audio_std_t)p.readInt32(); + feParms.para1 = p.readInt32(); + feParms.para2 = p.readInt32(); + mpTv->resetFrontEndPara(feParms); + r->writeInt32(ret); + break; + } + case PLAY_PROGRAM: { + int mode = p.readInt32(); + int freq = p.readInt32(); + if (mode == FE_ANALOG) { + int videoStd = p.readInt32(); + int audioStd = p.readInt32(); + int fineTune = p.readInt32(); + int audioCompetation = p.readInt32(); + mpTv->playAtvProgram(freq, videoStd, audioStd, fineTune, audioCompetation); + } else { + int para1 = p.readInt32(); + int para2 = p.readInt32(); + int vid = p.readInt32(); + int vfmt = p.readInt32(); + int aid = p.readInt32(); + int afmt = p.readInt32(); + int pcr = p.readInt32(); + int audioCompetation = p.readInt32(); + mpTv->playDtvProgram(mode, freq, para1, para2, vid, vfmt, aid, afmt, pcr, audioCompetation); + } + break; + } + case GET_PROGRAM_LIST: { + Vector > out; + int type = p.readInt32(); + int skip = p.readInt32(); + CTvProgram::selectByType(type, skip, out); + r->writeInt32(out.size()); + for (int i = 0; i < (int)out.size(); i++) { + r->writeInt32(out[i]->getID()); + r->writeInt32(out[i]->getChanOrderNum()); + r->writeInt32(out[i]->getMajor()); + r->writeInt32(out[i]->getMinor()); + r->writeInt32(out[i]->getProgType()); + r->writeString16(String16(out[i]->getName())); + r->writeInt32(out[i]->getProgSkipFlag()); + r->writeInt32(out[i]->getFavoriteFlag()); + r->writeInt32(out[i]->getVideo()->getFormat()); + CTvChannel ch; + out[i]->getChannel(ch); + r->writeInt32(ch.getDVBTSID()); + r->writeInt32(out[i]->getServiceId()); + r->writeInt32(out[i]->getVideo()->getPID()); + r->writeInt32(out[i]->getVideo()->getPID()); + + int audioTrackSize = out[i]->getAudioTrackSize(); + r->writeInt32(audioTrackSize); + for (int j = 0; j < audioTrackSize; j++) { + r->writeString16(String16(out[i]->getAudio(j)->getLang())); + r->writeInt32(out[i]->getAudio(j)->getFormat()); + r->writeInt32(out[i]->getAudio(j)->getPID()); + } + Vector mvSubtitles = out[i]->getSubtitles(); + int subTitleSize = mvSubtitles.size(); + r->writeInt32(subTitleSize); + if (subTitleSize > 0) { + for (int k = 0; k < subTitleSize; k++) { + r->writeInt32(mvSubtitles[k]->getPID()); + r->writeString16(String16(mvSubtitles[k]->getLang())); + r->writeInt32(mvSubtitles[k]->getCompositionPageID()); + r->writeInt32(mvSubtitles[k]->getAncillaryPageID()); + } + } + r->writeInt32(ch.getFrequency()); + } + break; + } + case DTV_GET_VIDEO_FMT_INFO: { + int srcWidth = 0; + int srcHeight = 0; + int srcFps = 0; + int srcInterlace = 0; + int iRet = -1; + + iRet == mpTv->getVideoFormatInfo(&srcWidth, &srcHeight, &srcFps, &srcInterlace); + r->writeInt32(srcWidth); + r->writeInt32(srcHeight); + r->writeInt32(srcFps); + r->writeInt32(srcInterlace); + r->writeInt32(iRet); + } + break; + + case DTV_START_RECORD: { + char buf[256]; + String16 tmpName = p.readString16(); + String8 strName = String8(tmpName); + sprintf(buf, "%s", strName.string()); + mpTv->SetRecordFileName(buf); + mpTv->StartToRecord(); + } + break; + case DTV_STOP_RECORD: + mpTv->StopRecording(); + break; + case DTV_SET_RECORD_ALL_TS: { + int sel = p.readInt32(); + mpTv->SetRecCurTsOrCurProgram(sel); + } + break; + case TV_PRINT_DEBUG_INFO: + mpTv->printDebugInfo(); + break; + case HDMIAV_HOTPLUGDETECT_ONOFF: { + int flag = mpTv->GetHdmiAvHotplugDetectOnoff(); + r->writeInt32(flag); + } + break; + + // 2.4G headset + case START_OPEN_HEADSET_DETECT: { + int flag = mpTv->StartHeadSetDetect(); + r->writeInt32(flag); + } + break; + + // EXTAR END + default: + LOGD("default"); + break; + } + + LOGD("exit client=%d cmd=%d", getCallingPid(), cmd); + return 0; } sp TvService::Client::getClientFromCookie(void *user) { - sp client = 0; - /* - TvService *service = static_cast (user); - if (service != NULL) { - Mutex::Autolock ourLock(service->mServiceLock); - if (service->mClient != 0) { - client = service->mClient.promote(); - if (client == 0) { - LOGE("getClientFromCookie: client appears to have died"); - service->mClient.clear(); - } - } else { - LOGE("getClientFromCookie: got callback but client was NULL"); - } - }*/ - return client; + sp client = 0; + /* + TvService *service = static_cast (user); + if (service != NULL) { + Mutex::Autolock ourLock(service->mServiceLock); + if (service->mClient != 0) { + client = service->mClient.promote(); + if (client == 0) { + LOGE("getClientFromCookie: client appears to have died"); + service->mClient.clear(); + } + } else { + LOGE("getClientFromCookie: got callback but client was NULL"); + } + }*/ + return client; } void TvService::Client::notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2, void *user) { - LOGD("notifyCallback(%d)", msgType); - - sp client = getClientFromCookie(user); - if (client == 0) { - return; - } - - switch (msgType) { - //case TV_MSG_SHUTTER: - // ext1 is the dimension of the yuv picture. - // client->handleShutter((image_rect_type *)ext1); - // break; - default: - sp c = client->mTvClient; - if (c != NULL) { - //c->notifyCallback(msgType, ext1, ext2); - } - break; - } + LOGD("notifyCallback(%d)", msgType); + + sp client = getClientFromCookie(user); + if (client == 0) { + return; + } + + switch (msgType) { + //case TV_MSG_SHUTTER: + // ext1 is the dimension of the yuv picture. + // client->handleShutter((image_rect_type *)ext1); + // break; + default: + sp c = client->mTvClient; + if (c != NULL) { + //c->notifyCallback(msgType, ext1, ext2); + } + break; + } #if DEBUG_CLIENT_REFERENCES - if (client->getStrongCount() == 1) { - LOGE("++++++++++++++++ (NOTIFY CALLBACK) THIS WILL CAUSE A LOCKUP!"); - client->printRefs(); - } + if (client->getStrongCount() == 1) { + LOGE("++++++++++++++++ (NOTIFY CALLBACK) THIS WILL CAUSE A LOCKUP!"); + client->printRefs(); + } #endif } int TvService::Client::notifyCallback(const int &msgtype, const Parcel &p) { - mTvClient->notifyCallback(msgtype, p); - return 0; + mTvClient->notifyCallback(msgtype, p); + return 0; } status_t TvService::onTransact(uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags) { - // permission checks... - switch (code) { - case BnTvService::CONNECT: - IPCThreadState *ipc = IPCThreadState::self(); - const int pid = ipc->getCallingPid(); - const int self_pid = getpid(); - if (pid != self_pid) { - // we're called from a different process, do the real check - /*if (!checkCallingPermission( - String16("android.permission.TV"))) - { - const int uid = ipc->getCallingUid(); - LOGE("Permission Denial: " - "can't use the tv pid=%d, uid=%d", pid, uid); - return PERMISSION_DENIED; - }*/ - } - break; - } - - status_t err = BnTvService::onTransact(code, data, reply, flags); + // permission checks... + switch (code) { + case BnTvService::CONNECT: + IPCThreadState *ipc = IPCThreadState::self(); + const int pid = ipc->getCallingPid(); + const int self_pid = getpid(); + if (pid != self_pid) { + // we're called from a different process, do the real check + /*if (!checkCallingPermission( + String16("android.permission.TV"))) + { + const int uid = ipc->getCallingUid(); + LOGE("Permission Denial: " + "can't use the tv pid=%d, uid=%d", pid, uid); + return PERMISSION_DENIED; + }*/ + } + break; + } + + status_t err = BnTvService::onTransact(code, data, reply, flags); #if DEBUG_HEAP_LEAKS - LOGE("+++ onTransact err %d code %d", err, code); - - if (err == UNKNOWN_TRANSACTION || err == PERMISSION_DENIED) { - LOGE("+++ onTransact code %d", code); - - CHECK_INTERFACE(ITvService, data, reply); - - switch (code) { - case 1000: { - if (gWeakHeap != 0) { - sp h = gWeakHeap.promote(); - IMemoryHeap *p = gWeakHeap.unsafe_get(); - LOGE("CHECKING WEAK REFERENCE %p (%p)", h.get(), p); - if (h != 0) - h->printRefs(); - bool attempt_to_delete = data.readInt32() == 1; - if (attempt_to_delete) { - // NOT SAFE! - LOGE("DELETING WEAK REFERENCE %p (%p)", h.get(), p); - if (p) delete p; - } - return NO_ERROR; - } - } - break; - default: - break; - } - } + LOGE("+++ onTransact err %d code %d", err, code); + + if (err == UNKNOWN_TRANSACTION || err == PERMISSION_DENIED) { + LOGE("+++ onTransact code %d", code); + + CHECK_INTERFACE(ITvService, data, reply); + + switch (code) { + case 1000: { + if (gWeakHeap != 0) { + sp h = gWeakHeap.promote(); + IMemoryHeap *p = gWeakHeap.unsafe_get(); + LOGE("CHECKING WEAK REFERENCE %p (%p)", h.get(), p); + if (h != 0) + h->printRefs(); + bool attempt_to_delete = data.readInt32() == 1; + if (attempt_to_delete) { + // NOT SAFE! + LOGE("DELETING WEAK REFERENCE %p (%p)", h.get(), p); + if (p) delete p; + } + return NO_ERROR; + } + } + break; + default: + break; + } + } #endif // DEBUG_HEAP_LEAKS - return err; + return err; } diff --git a/tvapi/android/tvserver/TvService.h b/tvapi/android/tvserver/TvService.h index 7507f6a..a6b4e9f 100644 --- a/tvapi/android/tvserver/TvService.h +++ b/tvapi/android/tvserver/TvService.h @@ -16,73 +16,74 @@ using namespace android; class TvService: public BnTvService , public CTv::TvIObserver, public CTvScreenCapture::TvIObserver { public: - class Client: public BnTv { - public: - Client(const sp &tvService, const sp &tvClient, pid_t clientPid, CTv *pTv); - Client(); - virtual ~Client(); - virtual void disconnect(); - virtual status_t connect(const sp &client); - virtual status_t lock(); - virtual status_t unlock(); - virtual status_t processCmd(const Parcel &p, Parcel *r); - virtual status_t createSubtitle(const sp &share_mem); - virtual status_t createVideoFrame(const sp &share_mem, int iSourceMode, int iCapVideoLayerOnly); + class Client: public BnTv { + public: + Client(const sp &tvService, const sp &tvClient, pid_t clientPid, CTv *pTv); + Client(); + virtual ~Client(); + virtual void disconnect(); + virtual status_t connect(const sp &client); + virtual status_t lock(); + virtual status_t unlock(); + virtual status_t processCmd(const Parcel &p, Parcel *r); + virtual status_t createSubtitle(const sp &share_mem); + virtual status_t createVideoFrame(const sp &share_mem, int iSourceMode, int iCapVideoLayerOnly); - // our client... - const sp &getTvClient() const - { - return mTvClient; - } + // our client... + const sp &getTvClient() const + { + return mTvClient; + } - int notifyCallback(const int &msgtype, const Parcel &p); - String16 mStrName; - static void notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2, void *user); - private: - friend class CTv; - friend class TvService; - status_t checkPid(); - static sp getClientFromCookie(void *user); + int notifyCallback(const int &msgtype, const Parcel &p); + String16 mStrName; + static void notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2, void *user); + private: + friend class CTv; + friend class TvService; + status_t checkPid(); + static sp getClientFromCookie(void *user); - mutable Mutex mLock; - mutable Condition mReady; - sp mTvService; - sp mTvClient; - pid_t mClientPid; - int mGetNotifyFlag; - int mCurProgIndex; - CTv *mpTv; - bool mIsStartTv; - sp mSubBmpBuf; - };//end client + mutable Mutex mLock; + mutable Condition mReady; + sp mTvService; + sp mTvClient; + pid_t mClientPid; + int mGetNotifyFlag; + int mCurProgIndex; + CTv *mpTv; + bool mIsStartTv; + sp mSubBmpBuf; + };//end client static void instantiate(); - static TvService* mTvService; - static TvService* getIntance() { + static TvService *mTvService; + static TvService *getIntance() + { if (mTvService == NULL) mTvService = new TvService(); return mTvService; } - virtual sp connect(const sp &tvClient); + virtual sp connect(const sp &tvClient); - virtual void onTvEvent(const CTvEv &ev); - void removeClient(const sp &tvClient); + virtual void onTvEvent(const CTvEv &ev); + void removeClient(const sp &tvClient); - Client *mpStartTvClient; - wp mpScannerClient; - wp mpSubClient; - Vector< wp > m_v_Clients; + Client *mpStartTvClient; + wp mpScannerClient; + wp mpSubClient; + Vector< wp > m_v_Clients; private: TvService(); - virtual ~TvService(); - virtual status_t onTransact(uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags); - volatile int32_t mUsers; - virtual void incUsers(); - virtual void decUsers(); - mutable Mutex mServiceLock; - static CTv *mpTv; - CTvScreenCapture mCapVidFrame; + virtual ~TvService(); + virtual status_t onTransact(uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags); + volatile int32_t mUsers; + virtual void incUsers(); + virtual void decUsers(); + mutable Mutex mServiceLock; + static CTv *mpTv; + CTvScreenCapture mCapVidFrame; }; diff --git a/tvapi/android/tvserver/main.cpp b/tvapi/android/tvserver/main.cpp index ed9847c..0218dbe 100644 --- a/tvapi/android/tvserver/main.cpp +++ b/tvapi/android/tvserver/main.cpp @@ -11,13 +11,13 @@ using namespace android; int main(int argc, char **argv) { - sp proc(ProcessState::self()); - sp sm = defaultServiceManager(); - TvService::instantiate(); + sp proc(ProcessState::self()); + sp sm = defaultServiceManager(); + TvService::instantiate(); - ProcessState::self()->startThreadPool(); - IPCThreadState::self()->joinThreadPool(); + ProcessState::self()->startThreadPool(); + IPCThreadState::self()->joinThreadPool(); - return 0; + return 0; } diff --git a/tvapi/android/tvserver/tv_callback.h b/tvapi/android/tvserver/tv_callback.h index ef97442..511bbba 100644 --- a/tvapi/android/tvserver/tv_callback.h +++ b/tvapi/android/tvserver/tv_callback.h @@ -1,18 +1,17 @@ #ifndef TV_CALLBACK #define TV_CALLBACK #include "tvapi/android/tv/CTv.h" -class TvCallback : public CTv::TvIObserver -{ - public: - TvCallback(void* data) - { - mPri = data; - } - ~TvCallback() - { - } - void onTvEvent (int32_t msgType, const Parcel &p); - private: - void* mPri; +class TvCallback : public CTv::TvIObserver { +public: + TvCallback(void *data) + { + mPri = data; + } + ~TvCallback() + { + } + void onTvEvent (int32_t msgType, const Parcel &p); +private: + void *mPri; }; #endif diff --git a/tvapi/libtv/audio/CAudioCustomerCtrl.cpp b/tvapi/libtv/audio/CAudioCustomerCtrl.cpp index 2f6edf0..4ffc8da 100644 --- a/tvapi/libtv/audio/CAudioCustomerCtrl.cpp +++ b/tvapi/libtv/audio/CAudioCustomerCtrl.cpp @@ -5,122 +5,122 @@ CAudioCustomerCtrl::CAudioCustomerCtrl() { - gExternalDacLibHandler = NULL; - mpDacMuteFun = NULL; - mpDacMainVolFun = NULL; - mpDacBalanceFun = NULL; - mpSetSourceTypeFun = NULL; + gExternalDacLibHandler = NULL; + mpDacMuteFun = NULL; + mpDacMainVolFun = NULL; + mpDacBalanceFun = NULL; + mpSetSourceTypeFun = NULL; } CAudioCustomerCtrl::~CAudioCustomerCtrl() { - UnLoadExternalDacLib(); + UnLoadExternalDacLib(); } int CAudioCustomerCtrl::UnLoadExternalDacLib(void) { - if (gExternalDacLibHandler != NULL) { - dlclose(gExternalDacLibHandler); - gExternalDacLibHandler = NULL; - } + if (gExternalDacLibHandler != NULL) { + dlclose(gExternalDacLibHandler); + gExternalDacLibHandler = NULL; + } - mpDacMuteFun = NULL; - mpDacMainVolFun = NULL; - mpDacBalanceFun = NULL; - mpSetSourceTypeFun = NULL; + mpDacMuteFun = NULL; + mpDacMainVolFun = NULL; + mpDacBalanceFun = NULL; + mpSetSourceTypeFun = NULL; - return 0; + return 0; } int CAudioCustomerCtrl::LoadExternalDacLib(void) { - char *error; - - LOGD("%s, entering...\n", __FUNCTION__); - - if (gExternalDacLibHandler != NULL) { - return 0; - } - - const char *config_value = GetAudExtDacLibPath(); - gExternalDacLibHandler = dlopen(config_value, RTLD_NOW); - if (!gExternalDacLibHandler) { - LOGE("%s, failed to load external dac lib (%s)\n", __FUNCTION__, config_value); - goto Error; - } - - mpDacMuteFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleDacMute"); - if (mpDacMuteFun == NULL) { - LOGE("%s, fail find fun mpDacMuteFun()\n", __FUNCTION__); - goto Error; - } - mpDacMainVolFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleDacMainVolume"); - if (mpDacMainVolFun == NULL) { - LOGE("%s, fail find fun HandleDacMainVolume()\n", __FUNCTION__); - goto Error; - } - mpDacBalanceFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleDacBalance"); - if (mpDacBalanceFun == NULL) { - LOGE("%s, fail find fun HandleDacBalance()\n", __FUNCTION__); - goto Error; - } - mpSetSourceTypeFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleAudioSourceType"); - if (mpSetSourceTypeFun == NULL) { - LOGE("%s, fail find fun HandleAudioSourceType()\n", __FUNCTION__); - goto Error; - } - - return 0; + char *error; + + LOGD("%s, entering...\n", __FUNCTION__); + + if (gExternalDacLibHandler != NULL) { + return 0; + } + + const char *config_value = GetAudExtDacLibPath(); + gExternalDacLibHandler = dlopen(config_value, RTLD_NOW); + if (!gExternalDacLibHandler) { + LOGE("%s, failed to load external dac lib (%s)\n", __FUNCTION__, config_value); + goto Error; + } + + mpDacMuteFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleDacMute"); + if (mpDacMuteFun == NULL) { + LOGE("%s, fail find fun mpDacMuteFun()\n", __FUNCTION__); + goto Error; + } + mpDacMainVolFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleDacMainVolume"); + if (mpDacMainVolFun == NULL) { + LOGE("%s, fail find fun HandleDacMainVolume()\n", __FUNCTION__); + goto Error; + } + mpDacBalanceFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleDacBalance"); + if (mpDacBalanceFun == NULL) { + LOGE("%s, fail find fun HandleDacBalance()\n", __FUNCTION__); + goto Error; + } + mpSetSourceTypeFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleAudioSourceType"); + if (mpSetSourceTypeFun == NULL) { + LOGE("%s, fail find fun HandleAudioSourceType()\n", __FUNCTION__); + goto Error; + } + + return 0; Error: // - mpDacMuteFun = NULL; - mpDacMainVolFun = NULL; - mpDacBalanceFun = NULL; - mpSetSourceTypeFun = NULL; - - if (gExternalDacLibHandler != NULL) { - dlclose(gExternalDacLibHandler); - gExternalDacLibHandler = NULL; - } - return -1; + mpDacMuteFun = NULL; + mpDacMainVolFun = NULL; + mpDacBalanceFun = NULL; + mpSetSourceTypeFun = NULL; + + if (gExternalDacLibHandler != NULL) { + dlclose(gExternalDacLibHandler); + gExternalDacLibHandler = NULL; + } + return -1; } // 0 mute, 1 unmute int CAudioCustomerCtrl::SetMute(int mute) { - int ret = LoadExternalDacLib(); - if (mpDacMuteFun != NULL) { - ret = (*mpDacMuteFun)(mute); - } - return ret; + int ret = LoadExternalDacLib(); + if (mpDacMuteFun != NULL) { + ret = (*mpDacMuteFun)(mute); + } + return ret; } int CAudioCustomerCtrl::SetVolumeBar(int vol) { - int ret = LoadExternalDacLib(); - if (mpDacMainVolFun != NULL) { - LOGD("%s, call external dac lib HandleDacMainVolume (para = %d).\n", __FUNCTION__, vol); - ret = (*mpDacMainVolFun)(vol); - } - return ret; + int ret = LoadExternalDacLib(); + if (mpDacMainVolFun != NULL) { + LOGD("%s, call external dac lib HandleDacMainVolume (para = %d).\n", __FUNCTION__, vol); + ret = (*mpDacMainVolFun)(vol); + } + return ret; } int CAudioCustomerCtrl::SetBlance(int balance) { - int ret = LoadExternalDacLib(); - if (mpDacBalanceFun != NULL) { - LOGD("%s, call external dac lib HandleDacBalance (para = %d).\n", __FUNCTION__, balance); - ret = (*mpDacBalanceFun)(balance); - } - return ret; + int ret = LoadExternalDacLib(); + if (mpDacBalanceFun != NULL) { + LOGD("%s, call external dac lib HandleDacBalance (para = %d).\n", __FUNCTION__, balance); + ret = (*mpDacBalanceFun)(balance); + } + return ret; } int CAudioCustomerCtrl::SetSource(int source) { - int ret = LoadExternalDacLib(); - if (mpSetSourceTypeFun != NULL) { - LOGD("%s, call external dac lib HandleAudioSourceType (para = %d).\n", __FUNCTION__, source); - ret = (*mpSetSourceTypeFun)(source); - } - return ret; + int ret = LoadExternalDacLib(); + if (mpSetSourceTypeFun != NULL) { + LOGD("%s, call external dac lib HandleAudioSourceType (para = %d).\n", __FUNCTION__, source); + ret = (*mpSetSourceTypeFun)(source); + } + return ret; } diff --git a/tvapi/libtv/audio/CAudioCustomerCtrl.h b/tvapi/libtv/audio/CAudioCustomerCtrl.h index dc98889..b9c8540 100644 --- a/tvapi/libtv/audio/CAudioCustomerCtrl.h +++ b/tvapi/libtv/audio/CAudioCustomerCtrl.h @@ -8,24 +8,24 @@ typedef int (*TYPE_AudioSourceType_FUN)(int source_type); class CAudioCustomerCtrl { public: - static const int MUTE = 0; - static const int UNMUTE = 1; + static const int MUTE = 0; + static const int UNMUTE = 1; - CAudioCustomerCtrl(); - ~CAudioCustomerCtrl(); - int LoadExternalDacLib(void); - int UnLoadExternalDacLib(void); - int SendCmdToOffBoardCustomerLibExternalDac(int, int); - int SetMute(int mute); - int SetVolumeBar(int vol); - int SetBlance(int balance); - int SetSource(int source); + CAudioCustomerCtrl(); + ~CAudioCustomerCtrl(); + int LoadExternalDacLib(void); + int UnLoadExternalDacLib(void); + int SendCmdToOffBoardCustomerLibExternalDac(int, int); + int SetMute(int mute); + int SetVolumeBar(int vol); + int SetBlance(int balance); + int SetSource(int source); private: - void *gExternalDacLibHandler; - TYPE_DacMute_FUN mpDacMuteFun; - TYPE_DacMainVolume_FUN mpDacMainVolFun; - TYPE_DacBalance_FUN mpDacBalanceFun; - TYPE_AudioSourceType_FUN mpSetSourceTypeFun; + void *gExternalDacLibHandler; + TYPE_DacMute_FUN mpDacMuteFun; + TYPE_DacMainVolume_FUN mpDacMainVolFun; + TYPE_DacBalance_FUN mpDacBalanceFun; + TYPE_AudioSourceType_FUN mpSetSourceTypeFun; }; #endif diff --git a/tvapi/libtv/audio/CTvAudio.h b/tvapi/libtv/audio/CTvAudio.h index 50ccfec..f2701a8 100644 --- a/tvapi/libtv/audio/CTvAudio.h +++ b/tvapi/libtv/audio/CTvAudio.h @@ -9,14 +9,14 @@ #include "CAudioCustomerCtrl.h" enum CC_AUDIO_SWITCH_STATUS { - CC_SWITCH_OFF, - CC_SWITCH_ON, + CC_SWITCH_OFF, + CC_SWITCH_ON, }; enum CC_AMAUDIO_OUT_MODE { - CC_AMAUDIO_OUT_MODE_DIRECT, - CC_AMAUDIO_OUT_MODE_INTER_MIX, - CC_AMAUDIO_OUT_MODE_DIRECT_MIX, + CC_AMAUDIO_OUT_MODE_DIRECT, + CC_AMAUDIO_OUT_MODE_INTER_MIX, + CC_AMAUDIO_OUT_MODE_DIRECT_MIX, }; static const int CC_SPDIF_MODE_PCM = 0; @@ -44,33 +44,33 @@ static const int CC_NO_LINE_POINTS_MAX_CNT = 101; enum CC_AUD_SOUND_MODE { - CC_SOUND_MODE_START = 0, - CC_SOUND_MODE_STD = 0, - CC_SOUND_MODE_MUSIC, - CC_SOUND_MODE_NEWS, - CC_SOUND_MODE_THEATER, - CC_SOUND_MODE_USER, - CC_SOUND_MODE_END = CC_SOUND_MODE_USER + CC_SOUND_MODE_START = 0, + CC_SOUND_MODE_STD = 0, + CC_SOUND_MODE_MUSIC, + CC_SOUND_MODE_NEWS, + CC_SOUND_MODE_THEATER, + CC_SOUND_MODE_USER, + CC_SOUND_MODE_END = CC_SOUND_MODE_USER }; enum CC_AUD_EQ_MODE { - CC_EQ_MODE_START = 0, - CC_EQ_MODE_NOMAL = 0, - CC_EQ_MODE_POP, - CC_EQ_MODE_JAZZ, - CC_EQ_MODE_ROCK, - CC_EQ_MODE_CLASSIC, - CC_EQ_MODE_DANCE, - CC_EQ_MODE_PARTY, - CC_EQ_MODE_BASS, - CC_EQ_MODE_TREBLE, - CC_EQ_MODE_CUSTOM, - CC_EQ_MODE_END = CC_EQ_MODE_CUSTOM + CC_EQ_MODE_START = 0, + CC_EQ_MODE_NOMAL = 0, + CC_EQ_MODE_POP, + CC_EQ_MODE_JAZZ, + CC_EQ_MODE_ROCK, + CC_EQ_MODE_CLASSIC, + CC_EQ_MODE_DANCE, + CC_EQ_MODE_PARTY, + CC_EQ_MODE_BASS, + CC_EQ_MODE_TREBLE, + CC_EQ_MODE_CUSTOM, + CC_EQ_MODE_END = CC_EQ_MODE_CUSTOM }; class CTvAudio { public: - CTvAudio(); - ~CTvAudio(); + CTvAudio(); + ~CTvAudio(); }; #endif //__TV_AUDIO_API_H__ diff --git a/tvapi/libtv/audio/audio_alsa.cpp b/tvapi/libtv/audio/audio_alsa.cpp index 1a65ef9..8e8bb78 100644 --- a/tvapi/libtv/audio/audio_alsa.cpp +++ b/tvapi/libtv/audio/audio_alsa.cpp @@ -20,249 +20,249 @@ #include "audio_amaudio.h" static const int DEFAULT_MAIN_DIGIT_LUT[] = { - // - 0, 40, 50, 60, 70, 87, 110, 120, 130, 140, // 0~9 - 150, 152, 155, 158, 161, 164, 167, 170, 173, 174, // 10~19 - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, // 20~29 - 191, 191, 192, 193, 194, 195, 196, 196, 197, 197, // 30~39 - 198, 198, 198, 199, 199, 200, 200, 201, 201, 201, // 40~49 - 202, 202, 202, 203, 203, 203, 203, 204, 204, 204, // 50~59 - 205, 205, 205, 205, 206, 206, 206, 206, 206, 207, // 60~69 - 207, 207, 207, 207, 207, 207, 207, 208, 208, 208, // 70~79 - 208, 208, 208, 208, 208, 208, 208, 208, 208, 209, // 80~89 - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, // 90~99 - 209, // 100 + // + 0, 40, 50, 60, 70, 87, 110, 120, 130, 140, // 0~9 + 150, 152, 155, 158, 161, 164, 167, 170, 173, 174, // 10~19 + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, // 20~29 + 191, 191, 192, 193, 194, 195, 196, 196, 197, 197, // 30~39 + 198, 198, 198, 199, 199, 200, 200, 201, 201, 201, // 40~49 + 202, 202, 202, 203, 203, 203, 203, 204, 204, 204, // 50~59 + 205, 205, 205, 205, 206, 206, 206, 206, 206, 207, // 60~69 + 207, 207, 207, 207, 207, 207, 207, 208, 208, 208, // 70~79 + 208, 208, 208, 208, 208, 208, 208, 208, 208, 209, // 80~89 + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, // 90~99 + 209, // 100 }; static const int DEFAULT_SUPPER_BASS_DIGIT_LUT_BUF[] = { - // - 0, 122, 123, 124, 125, 126, 127, 128, 129, 130, // 0~9 - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, // 10~19 - 141, 142, 143, 144, 145, 147, 147, 148, 148, 149, // 20~29 - 149, 150, 150, 151, 151, 152, 152, 153, 153, 154, // 30~39 - 154, 155, 155, 156, 156, 157, 157, 158, 158, 159, // 40~49 - 160, 160, 160, 160, 161, 161, 161, 161, 162, 162, // 50~59 - 162, 163, 163, 163, 163, 164, 164, 164, 165, 165, // 60~69 - 165, 165, 166, 166, 166, 167, 168, 169, 170, 171, // 70~79 - 173, 174, 175, 176, 177, 179, 180, 181, 182, 183, // 80~89 - 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, // 90~99 - 197 // 100 + // + 0, 122, 123, 124, 125, 126, 127, 128, 129, 130, // 0~9 + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, // 10~19 + 141, 142, 143, 144, 145, 147, 147, 148, 148, 149, // 20~29 + 149, 150, 150, 151, 151, 152, 152, 153, 153, 154, // 30~39 + 154, 155, 155, 156, 156, 157, 157, 158, 158, 159, // 40~49 + 160, 160, 160, 160, 161, 161, 161, 161, 162, 162, // 50~59 + 162, 163, 163, 163, 163, 164, 164, 164, 165, 165, // 60~69 + 165, 165, 166, 166, 166, 167, 168, 169, 170, 171, // 70~79 + 173, 174, 175, 176, 177, 179, 180, 181, 182, 183, // 80~89 + 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, // 90~99 + 197 // 100 }; CAudioAlsa::CAudioAlsa() { - int card_id; - card_id = get_aml_card(); - LOGD("[%s:%d] card_id:%d\n", __FUNCTION__, __LINE__, card_id); - mpMixer = mixer_open(card_id); + int card_id; + card_id = get_aml_card(); + LOGD("[%s:%d] card_id:%d\n", __FUNCTION__, __LINE__, card_id); + mpMixer = mixer_open(card_id); - card_id = get_USB_Audio_card(); - LOGD("[%s:%d] card_id:%d\n", __FUNCTION__, __LINE__, card_id); - mpUsbMixer = mixer_open(card_id); - mMainVolumeGainVal = 0; - mSupperBassVolumeGainVal = 0; - ArrayCopy(mMainDigitLutBuf, DEFAULT_MAIN_DIGIT_LUT, CC_VOL_TRANS_LUT_BUF_SIZE); - ArrayCopy(mSupperBassDigitLutBuf, DEFAULT_SUPPER_BASS_DIGIT_LUT_BUF, CC_VOL_TRANS_LUT_BUF_SIZE); + card_id = get_USB_Audio_card(); + LOGD("[%s:%d] card_id:%d\n", __FUNCTION__, __LINE__, card_id); + mpUsbMixer = mixer_open(card_id); + mMainVolumeGainVal = 0; + mSupperBassVolumeGainVal = 0; + ArrayCopy(mMainDigitLutBuf, DEFAULT_MAIN_DIGIT_LUT, CC_VOL_TRANS_LUT_BUF_SIZE); + ArrayCopy(mSupperBassDigitLutBuf, DEFAULT_SUPPER_BASS_DIGIT_LUT_BUF, CC_VOL_TRANS_LUT_BUF_SIZE); } CAudioAlsa::~CAudioAlsa() { - if (NULL != mpMixer) { - mixer_close(mpMixer); - } + if (NULL != mpMixer) { + mixer_close(mpMixer); + } - if (NULL != mpUsbMixer) { - mixer_close(mpUsbMixer); - } + if (NULL != mpUsbMixer) { + mixer_close(mpUsbMixer); + } } int CAudioAlsa::get_aml_card() { - int card = -1, err = 0; - int fd = -1; - char read_buf[512], *pd = NULL; - static const char *const SOUND_CARDS_PATH = "/proc/asound/cards"; - fd = open(SOUND_CARDS_PATH, O_RDONLY); - if (fd < 0) { - LOGE("ERROR: failed to open config file %s error: %d\n", SOUND_CARDS_PATH, errno); - close(fd); - return -EINVAL; - } - memset(read_buf, 0x0, 512); - err = read(fd, read_buf, 512); - if (fd < 0) { - LOGE("ERROR: failed to read config file %s error: %d\n", SOUND_CARDS_PATH, errno); - close(fd); - return -EINVAL; - } - pd = strstr(read_buf, "AML"); - card = *(pd - 3) - '0'; - close(fd); - return card; + int card = -1, err = 0; + int fd = -1; + char read_buf[512], *pd = NULL; + static const char *const SOUND_CARDS_PATH = "/proc/asound/cards"; + fd = open(SOUND_CARDS_PATH, O_RDONLY); + if (fd < 0) { + LOGE("ERROR: failed to open config file %s error: %d\n", SOUND_CARDS_PATH, errno); + close(fd); + return -EINVAL; + } + memset(read_buf, 0x0, 512); + err = read(fd, read_buf, 512); + if (fd < 0) { + LOGE("ERROR: failed to read config file %s error: %d\n", SOUND_CARDS_PATH, errno); + close(fd); + return -EINVAL; + } + pd = strstr(read_buf, "AML"); + card = *(pd - 3) - '0'; + close(fd); + return card; } int CAudioAlsa::AudioControlSetValue(int val_count, int data_buf[], char *match_names) { - struct mixer_ctl *pctl; - unsigned int expected_val_count; - unsigned int value_index; - - if (NULL == mpMixer) { - LOGE("[%s:%d] Failed to open mixer\n", __FUNCTION__, __LINE__); - goto err_exit; - } - - pctl = mixer_get_ctl_by_name(mpMixer, match_names); - if (NULL == pctl) { - LOGE("[%s:%d] Failed to get mixer control for:%s\n", __FUNCTION__, __LINE__, match_names); - goto err_exit; - } - expected_val_count = mixer_ctl_get_num_values(pctl); - if (expected_val_count != (unsigned int)val_count) { - LOGE("[%s:%d] val_count != expected_val_count\n", __FUNCTION__, __LINE__); - goto err_exit; - } - for (value_index = 0; value_index < expected_val_count; value_index++) { - if (mixer_ctl_set_value(pctl, value_index, data_buf[value_index]) != 0) { - LOGE("[%s:%d] Failed to set value:%d\n", __FUNCTION__, __LINE__, value_index); - goto err_exit; - } - } - return 0; + struct mixer_ctl *pctl; + unsigned int expected_val_count; + unsigned int value_index; + + if (NULL == mpMixer) { + LOGE("[%s:%d] Failed to open mixer\n", __FUNCTION__, __LINE__); + goto err_exit; + } + + pctl = mixer_get_ctl_by_name(mpMixer, match_names); + if (NULL == pctl) { + LOGE("[%s:%d] Failed to get mixer control for:%s\n", __FUNCTION__, __LINE__, match_names); + goto err_exit; + } + expected_val_count = mixer_ctl_get_num_values(pctl); + if (expected_val_count != (unsigned int)val_count) { + LOGE("[%s:%d] val_count != expected_val_count\n", __FUNCTION__, __LINE__); + goto err_exit; + } + for (value_index = 0; value_index < expected_val_count; value_index++) { + if (mixer_ctl_set_value(pctl, value_index, data_buf[value_index]) != 0) { + LOGE("[%s:%d] Failed to set value:%d\n", __FUNCTION__, __LINE__, value_index); + goto err_exit; + } + } + return 0; err_exit: - return -1; + return -1; } int CAudioAlsa::AudioControlGetValue(int val_count, int ret_buf[], char *match_names) { - struct mixer_ctl *pctl; - unsigned int expected_val_count; - unsigned int value_index; - - if (NULL == mpMixer) { - LOGE("[%s:%d] Failed to open mixer\n", __FUNCTION__, __LINE__); - goto err_exit; - } - pctl = mixer_get_ctl_by_name(mpMixer, match_names); - if (NULL == pctl) { - LOGE("[%s:%d] Failed to get mixer control for:%s\n", __FUNCTION__, __LINE__, match_names); - goto err_exit; - } - expected_val_count = mixer_ctl_get_num_values(pctl); - if (expected_val_count != (unsigned int)val_count) { - LOGE("[%s:%d] val_count != expected_val_count\n", __FUNCTION__, __LINE__); - goto err_exit; - } - for (value_index = 0; value_index < expected_val_count; value_index++) { - ret_buf[value_index] = mixer_ctl_get_value(pctl, value_index); - } - return 0; + struct mixer_ctl *pctl; + unsigned int expected_val_count; + unsigned int value_index; + + if (NULL == mpMixer) { + LOGE("[%s:%d] Failed to open mixer\n", __FUNCTION__, __LINE__); + goto err_exit; + } + pctl = mixer_get_ctl_by_name(mpMixer, match_names); + if (NULL == pctl) { + LOGE("[%s:%d] Failed to get mixer control for:%s\n", __FUNCTION__, __LINE__, match_names); + goto err_exit; + } + expected_val_count = mixer_ctl_get_num_values(pctl); + if (expected_val_count != (unsigned int)val_count) { + LOGE("[%s:%d] val_count != expected_val_count\n", __FUNCTION__, __LINE__); + goto err_exit; + } + for (value_index = 0; value_index < expected_val_count; value_index++) { + ret_buf[value_index] = mixer_ctl_get_value(pctl, value_index); + } + return 0; err_exit: - return -1; + return -1; } int CAudioAlsa::get_USB_Audio_card() { - int card = -1, err = 0; - int fd = -1; - char read_buf[512], *pd = NULL; - static const char *const SOUND_CARDS_PATH = "/proc/asound/cards"; - fd = open(SOUND_CARDS_PATH, O_RDONLY); - if (fd < 0) { - LOGE("ERROR: failed to open config file %s error: %d\n", SOUND_CARDS_PATH, errno); - close(fd); - return -EINVAL; - } - memset(read_buf, 0x0, 512); - err = read(fd, read_buf, 512); - if (fd < 0) { - LOGE("ERROR: failed to read config file %s error: %d\n", SOUND_CARDS_PATH, errno); - close(fd); - return -EINVAL; - } - pd = strstr(read_buf, "Receiver"); - if (pd == NULL) { - LOGE("ERROR: failed to read config file %s error: %d\n", SOUND_CARDS_PATH, errno); - close(fd); - return -EINVAL; - } - - card = *(pd - 3) - '0'; - close(fd); - return card; + int card = -1, err = 0; + int fd = -1; + char read_buf[512], *pd = NULL; + static const char *const SOUND_CARDS_PATH = "/proc/asound/cards"; + fd = open(SOUND_CARDS_PATH, O_RDONLY); + if (fd < 0) { + LOGE("ERROR: failed to open config file %s error: %d\n", SOUND_CARDS_PATH, errno); + close(fd); + return -EINVAL; + } + memset(read_buf, 0x0, 512); + err = read(fd, read_buf, 512); + if (fd < 0) { + LOGE("ERROR: failed to read config file %s error: %d\n", SOUND_CARDS_PATH, errno); + close(fd); + return -EINVAL; + } + pd = strstr(read_buf, "Receiver"); + if (pd == NULL) { + LOGE("ERROR: failed to read config file %s error: %d\n", SOUND_CARDS_PATH, errno); + close(fd); + return -EINVAL; + } + + card = *(pd - 3) - '0'; + close(fd); + return card; } int CAudioAlsa::HandleUSBAudioControlValue(int val_count, int data_buf[], int match_count, char **match_names) { - struct mixer_ctl *pctl; - unsigned int expected_val_count; - unsigned int match_index; - unsigned int value_index; - char card_id_str[9] = {0}; - - if (NULL == mpUsbMixer) { - LOGE("[%s:%d] Failed to open mixer\n", __FUNCTION__, __LINE__); - goto err_exit; - } - - for (match_index = 0; match_index < match_count; match_index++) { - pctl = mixer_get_ctl_by_name(mpUsbMixer, match_names[match_index]); - if (NULL == pctl) { - LOGE("[%s:%d] Failed to get mixer control for:%s\n", __FUNCTION__, __LINE__, match_names[match_index]); - goto err_exit; - } - expected_val_count = mixer_ctl_get_num_values(pctl); - if (expected_val_count != (unsigned int)val_count) { - LOGE("[%s:%d] val_count != expected_val_count\n", __FUNCTION__, __LINE__); - goto err_exit; - } - for (value_index = 0; value_index < expected_val_count; value_index++) { - if (mixer_ctl_set_value(pctl, value_index, data_buf[value_index]) != 0) { - LOGE("[%s:%d] Failed to set value:%d\n", __FUNCTION__, __LINE__, value_index); - goto err_exit; - } - } - } - - return 0; + struct mixer_ctl *pctl; + unsigned int expected_val_count; + unsigned int match_index; + unsigned int value_index; + char card_id_str[9] = {0}; + + if (NULL == mpUsbMixer) { + LOGE("[%s:%d] Failed to open mixer\n", __FUNCTION__, __LINE__); + goto err_exit; + } + + for (match_index = 0; match_index < match_count; match_index++) { + pctl = mixer_get_ctl_by_name(mpUsbMixer, match_names[match_index]); + if (NULL == pctl) { + LOGE("[%s:%d] Failed to get mixer control for:%s\n", __FUNCTION__, __LINE__, match_names[match_index]); + goto err_exit; + } + expected_val_count = mixer_ctl_get_num_values(pctl); + if (expected_val_count != (unsigned int)val_count) { + LOGE("[%s:%d] val_count != expected_val_count\n", __FUNCTION__, __LINE__); + goto err_exit; + } + for (value_index = 0; value_index < expected_val_count; value_index++) { + if (mixer_ctl_set_value(pctl, value_index, data_buf[value_index]) != 0) { + LOGE("[%s:%d] Failed to set value:%d\n", __FUNCTION__, __LINE__, value_index); + goto err_exit; + } + } + } + + return 0; err_exit: - return -1; + return -1; } int CAudioAlsa::CheckVolume(int digit_vol, int digit_min, int digit_max, int hd_min, - int hd_max) + int hd_max) { - int tmp_val = digit_vol; + int tmp_val = digit_vol; - if (digit_vol < hd_min) { - return hd_min; - } else if (digit_vol > hd_max) { - return hd_max; - } + if (digit_vol < hd_min) { + return hd_min; + } else if (digit_vol > hd_max) { + return hd_max; + } - return digit_vol; + return digit_vol; } int CAudioAlsa::GetTwoChannelVolume(int vol_buf[], int l_min_vol, int l_max_vol, - int r_min_vol, int r_max_vol, char *match_names, int hd_min, - int hd_max) + int r_min_vol, int r_max_vol, char *match_names, int hd_min, + int hd_max) { - vol_buf[0] = 0; - vol_buf[1] = 0; - return AudioControlGetValue(2, vol_buf, match_names); + vol_buf[0] = 0; + vol_buf[1] = 0; + return AudioControlGetValue(2, vol_buf, match_names); } int CAudioAlsa::GetLineInMaxVol() { - return 127; + return 127; } int CAudioAlsa::GetLineOutMaxVol() { - return 255; + return 255; } #define CC_GET_ALSA_CTL_AUDIO_IN_SOURCE_NAME (0) @@ -290,530 +290,530 @@ int CAudioAlsa::GetLineOutMaxVol() #define CC_GET_ALSA_CTL_AUDIO_IN_SWITCH (22) static char gG9AlsaNames[32][48] = { - {"Audio In Source"},//0 - {"PGA IN Gain"},//1 - {"ADC Digital Capture Volume"},//2 - {"DAC Digital Playback Volume"},//3 - {"Linein right switch"},//4 - {"Linein left switch"}, - {"ADC Digital Capture Volume"}, - {"DAC Digital Playback Volume"}, - {"Audio i2s mute"},//8 - {"Audio spdif mute"}, - {"Hardware resample enable"},//10 - {"AMP Master Volume"}, - {"AMP Ch1 Volume"},//12 - {"AMP Ch2 Volume"}, - {"AMP Ch3 Volume"}, - {"AMP Ch1 Switch"}, - {"AMP Ch2 Switch"}, - {"AMP Ch3 Switch"},//17 - {"AMP EQ Mode"}, - {"PCM Playback Volume"}, - {"PCM Playback Switch"}, - {"Output Swap"}, - {"AudioIn Switch"},//22 + {"Audio In Source"},//0 + {"PGA IN Gain"},//1 + {"ADC Digital Capture Volume"},//2 + {"DAC Digital Playback Volume"},//3 + {"Linein right switch"},//4 + {"Linein left switch"}, + {"ADC Digital Capture Volume"}, + {"DAC Digital Playback Volume"}, + {"Audio i2s mute"},//8 + {"Audio spdif mute"}, + {"Hardware resample enable"},//10 + {"AMP Master Volume"}, + {"AMP Ch1 Volume"},//12 + {"AMP Ch2 Volume"}, + {"AMP Ch3 Volume"}, + {"AMP Ch1 Switch"}, + {"AMP Ch2 Switch"}, + {"AMP Ch3 Switch"},//17 + {"AMP EQ Mode"}, + {"PCM Playback Volume"}, + {"PCM Playback Switch"}, + {"Output Swap"}, + {"AudioIn Switch"},//22 }; char *CAudioAlsa::GetAlsaControlName(int get_type) { - return gG9AlsaNames[get_type]; + return gG9AlsaNames[get_type]; } int CAudioAlsa::SetAudioInSource(int source_type) { - int set_val = 0; - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_AUDIO_IN_SOURCE_NAME); - set_val = source_type; - return AudioControlSetValue(1, &set_val, match_names); + int set_val = 0; + char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_AUDIO_IN_SOURCE_NAME); + set_val = source_type; + return AudioControlSetValue(1, &set_val, match_names); } int CAudioAlsa::GetAudioInSource(void) { - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_AUDIO_IN_SOURCE_NAME); - int source_type = 0; - AudioControlGetValue(1, &source_type, match_names); - return source_type; + char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_AUDIO_IN_SOURCE_NAME); + int source_type = 0; + AudioControlGetValue(1, &source_type, match_names); + return source_type; } int CAudioAlsa::SetAudioInternalDacPGAInGain(int gain_l_val, int gain_r_val) { - int GainBuf[2] = {0, 0}; - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_PGA_IN_GAIN); + int GainBuf[2] = {0, 0}; + char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_PGA_IN_GAIN); - GainBuf[0] = gain_l_val; - GainBuf[1] = gain_r_val; - if (gain_l_val < 0 || gain_l_val > 31) { - GainBuf[0] = 16; - } - if (gain_r_val < 0 || gain_r_val > 31) { - GainBuf[1] = 16; - } + GainBuf[0] = gain_l_val; + GainBuf[1] = gain_r_val; + if (gain_l_val < 0 || gain_l_val > 31) { + GainBuf[0] = 16; + } + if (gain_r_val < 0 || gain_r_val > 31) { + GainBuf[1] = 16; + } - return AudioControlSetValue(2, GainBuf, match_names); + return AudioControlSetValue(2, GainBuf, match_names); } int CAudioAlsa::GetAudioInternalDacPGAInGain(int *gain_l_val, int *gain_r_val) { - int GainBuf[2] = {0, 0}; - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_PGA_IN_GAIN); + int GainBuf[2] = {0, 0}; + char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_PGA_IN_GAIN); - AudioControlGetValue(2, GainBuf, match_names); + AudioControlGetValue(2, GainBuf, match_names); - *gain_l_val = GainBuf[0]; - *gain_r_val = GainBuf[1]; + *gain_l_val = GainBuf[0]; + *gain_r_val = GainBuf[1]; - return 0; + return 0; } int CAudioAlsa::SetAudioInternalDacADCDigitalCaptureVolume(int vol_l_val, int vol_r_val) { - int VolumeBuf[2] = {0, 0}; - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_ADC_DIGITAL_CAPTURE_VOLUME_NAME); + int VolumeBuf[2] = {0, 0}; + char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_ADC_DIGITAL_CAPTURE_VOLUME_NAME); - VolumeBuf[0] = vol_l_val; - VolumeBuf[1] = vol_r_val; - if (vol_l_val < 0 || vol_l_val > 127) { - VolumeBuf[0] = 82; - } - if (vol_r_val < 0 || vol_r_val > 127) { - VolumeBuf[1] = 82; - } + VolumeBuf[0] = vol_l_val; + VolumeBuf[1] = vol_r_val; + if (vol_l_val < 0 || vol_l_val > 127) { + VolumeBuf[0] = 82; + } + if (vol_r_val < 0 || vol_r_val > 127) { + VolumeBuf[1] = 82; + } - return AudioControlSetValue(2, VolumeBuf, match_names); + return AudioControlSetValue(2, VolumeBuf, match_names); } int CAudioAlsa::GetAudioInternalDacADCDigitalCaptureVolume(int *vol_l_val, int *vol_r_val) { - int VolumeBuf[2] = {0, 0}; - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_ADC_DIGITAL_CAPTURE_VOLUME_NAME); + int VolumeBuf[2] = {0, 0}; + char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_ADC_DIGITAL_CAPTURE_VOLUME_NAME); - AudioControlGetValue(2, VolumeBuf, match_names); + AudioControlGetValue(2, VolumeBuf, match_names); - *vol_l_val = VolumeBuf[0]; - *vol_r_val = VolumeBuf[1]; + *vol_l_val = VolumeBuf[0]; + *vol_r_val = VolumeBuf[1]; - return 0; + return 0; } int CAudioAlsa::SetAudioInternalDacDACDigitalPlayBackVolume(int vol_l_val, int vol_r_val) { - int VolumeBuf[2] = {0, 0}; - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_DAC_DIGITAL_PLAYBACK_VOLUME_NAME); + int VolumeBuf[2] = {0, 0}; + char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_DAC_DIGITAL_PLAYBACK_VOLUME_NAME); - VolumeBuf[0] = vol_l_val; - VolumeBuf[1] = vol_r_val; - if (vol_l_val < 0 || vol_l_val > 255) { - VolumeBuf[0] = 255; - } - if (vol_r_val < 0 || vol_r_val > 255) { - VolumeBuf[1] = 255; - } + VolumeBuf[0] = vol_l_val; + VolumeBuf[1] = vol_r_val; + if (vol_l_val < 0 || vol_l_val > 255) { + VolumeBuf[0] = 255; + } + if (vol_r_val < 0 || vol_r_val > 255) { + VolumeBuf[1] = 255; + } - return AudioControlSetValue(2, VolumeBuf, match_names); + return AudioControlSetValue(2, VolumeBuf, match_names); } int CAudioAlsa::GetAudioInternalDacDACDigitalPlayBackVolume(int *vol_l_val, int *vol_r_val) { - int VolumeBuf[2] = {0, 0}; - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_DAC_DIGITAL_PLAYBACK_VOLUME_NAME); + int VolumeBuf[2] = {0, 0}; + char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_DAC_DIGITAL_PLAYBACK_VOLUME_NAME); - AudioControlGetValue(2, VolumeBuf, match_names); + AudioControlGetValue(2, VolumeBuf, match_names); - *vol_l_val = VolumeBuf[0]; - *vol_r_val = VolumeBuf[1]; + *vol_l_val = VolumeBuf[0]; + *vol_r_val = VolumeBuf[1]; - return 0; + return 0; } int CAudioAlsa::SetInternalDacLineInSelectChannel(int line_in_number) { - int tmp_ret = 0; - char *match_names = NULL; + int tmp_ret = 0; + char *match_names = NULL; - if (line_in_number < 0 || line_in_number > 7) { - return -1; - } + if (line_in_number < 0 || line_in_number > 7) { + return -1; + } - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_LEFT_LINEIN_SEL_NAME); - tmp_ret |= AudioControlSetValue(1, &line_in_number, match_names); + match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_LEFT_LINEIN_SEL_NAME); + tmp_ret |= AudioControlSetValue(1, &line_in_number, match_names); - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_RIGHT_LINEIN_SEL_NAME); - tmp_ret |= AudioControlSetValue(1, &line_in_number, match_names); + match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_RIGHT_LINEIN_SEL_NAME); + tmp_ret |= AudioControlSetValue(1, &line_in_number, match_names); - return tmp_ret; + return tmp_ret; } int CAudioAlsa::SetInternalDacLineInCaptureVolume(int l_vol, int r_vol) { - int max_val = GetLineInMaxVol(); - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_LINEIN_CAPTURE_VOLUME_NAME); - int VolumeBuf[2]; + int max_val = GetLineInMaxVol(); + char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_LINEIN_CAPTURE_VOLUME_NAME); + int VolumeBuf[2]; - VolumeBuf[0] = CheckVolume(l_vol, 0, max_val, 0, max_val); - VolumeBuf[1] = CheckVolume(r_vol, 0, max_val, 0, max_val); + VolumeBuf[0] = CheckVolume(l_vol, 0, max_val, 0, max_val); + VolumeBuf[1] = CheckVolume(r_vol, 0, max_val, 0, max_val); - return AudioControlSetValue(2, VolumeBuf, match_names); + return AudioControlSetValue(2, VolumeBuf, match_names); } int CAudioAlsa::GetInternalDacLineInCaptureVolume(int vol_buf[]) { - int max_val = GetLineInMaxVol(); - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_LINEIN_CAPTURE_VOLUME_NAME); + int max_val = GetLineInMaxVol(); + char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_LINEIN_CAPTURE_VOLUME_NAME); - return GetTwoChannelVolume(vol_buf, 0, max_val, 0, max_val, match_names, 0, max_val); + return GetTwoChannelVolume(vol_buf, 0, max_val, 0, max_val, match_names, 0, max_val); } int CAudioAlsa::SetInternalDacLineOutPlayBackVolume(int l_vol, int r_vol) { - int max_val = GetLineOutMaxVol(); - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_LINEOUT_PLAYBACK_VOLUME_NAME); - int VolumeBuf[2]; + int max_val = GetLineOutMaxVol(); + char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_LINEOUT_PLAYBACK_VOLUME_NAME); + int VolumeBuf[2]; - VolumeBuf[0] = CheckVolume(l_vol, 0, max_val, 0, max_val); - VolumeBuf[1] = CheckVolume(r_vol, 0, max_val, 0, max_val); + VolumeBuf[0] = CheckVolume(l_vol, 0, max_val, 0, max_val); + VolumeBuf[1] = CheckVolume(r_vol, 0, max_val, 0, max_val); - return AudioControlSetValue(2, VolumeBuf, match_names); + return AudioControlSetValue(2, VolumeBuf, match_names); } int CAudioAlsa::GetInternalDacLineOutPlayBackVolume(int vol_buf[]) { - int max_val = GetLineOutMaxVol(); - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_LINEOUT_PLAYBACK_VOLUME_NAME); + int max_val = GetLineOutMaxVol(); + char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_LINEOUT_PLAYBACK_VOLUME_NAME); - return GetTwoChannelVolume(vol_buf, 0, max_val, 0, max_val, match_names, 0, max_val); + return GetTwoChannelVolume(vol_buf, 0, max_val, 0, max_val, match_names, 0, max_val); } int CAudioAlsa::SetAudioPcmPlaybackVolume(int vol) { - if (get_USB_Audio_card() == -EINVAL) return 0; - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_PCM_PLAYBACK_VOLUME); - return HandleUSBAudioControlValue(1, &vol, 1, &match_names); + if (get_USB_Audio_card() == -EINVAL) return 0; + char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_PCM_PLAYBACK_VOLUME); + return HandleUSBAudioControlValue(1, &vol, 1, &match_names); } int CAudioAlsa::SetAudioPcmPlaybackSwitch(int vol) { - if (get_USB_Audio_card() == -EINVAL) return 0; - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_PCM_PLAYBACK_SWITCH); - return HandleUSBAudioControlValue(1, &vol, 1, &match_names); + if (get_USB_Audio_card() == -EINVAL) return 0; + char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_PCM_PLAYBACK_SWITCH); + return HandleUSBAudioControlValue(1, &vol, 1, &match_names); } int CAudioAlsa::SetExternalDacChannelSwitch(int chan_ind, int switch_val) { - char *match_names = NULL; + char *match_names = NULL; - if (chan_ind == 1) { - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_CH1_SWITCH_NAME); - } else if (chan_ind == 2) { - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_CH2_SWITCH_NAME); - } else if (chan_ind == 3) { - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_CH3_SWITCH_NAME); - } else { - return -1; - } + if (chan_ind == 1) { + match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_CH1_SWITCH_NAME); + } else if (chan_ind == 2) { + match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_CH2_SWITCH_NAME); + } else if (chan_ind == 3) { + match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_CH3_SWITCH_NAME); + } else { + return -1; + } - return AudioControlSetValue(1, &switch_val, match_names); + return AudioControlSetValue(1, &switch_val, match_names); } int CAudioAlsa::SetExternalDacChannelVolume(int chan_ind, int main_vol) { - int tmp_ret = 0; - char *match_names = NULL; + int tmp_ret = 0; + char *match_names = NULL; - if (chan_ind == 0) { - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_MASTER_VOLUME_NAME); - } else if (chan_ind == 1) { - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_CH1_VOLUME_NAME); - } else if (chan_ind == 2) { - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_CH2_VOLUME_NAME); - } else if (chan_ind == 3) { - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_CH3_VOLUME_NAME); - } else { - return -1; - } + if (chan_ind == 0) { + match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_MASTER_VOLUME_NAME); + } else if (chan_ind == 1) { + match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_CH1_VOLUME_NAME); + } else if (chan_ind == 2) { + match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_CH2_VOLUME_NAME); + } else if (chan_ind == 3) { + match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_CH3_VOLUME_NAME); + } else { + return -1; + } - return AudioControlSetValue(1, &main_vol, match_names); + return AudioControlSetValue(1, &main_vol, match_names); } int CAudioAlsa::SetAudioSwitchIO(int value) { - char *match_names = gG9AlsaNames[CC_GET_ALSA_CTL_AUDIO_IN_SWITCH]; + char *match_names = gG9AlsaNames[CC_GET_ALSA_CTL_AUDIO_IN_SWITCH]; - return AudioControlSetValue(1, &value, match_names); + return AudioControlSetValue(1, &value, match_names); } int CAudioAlsa::SetOutput_Swap(int value) { - char *match_names = gG9AlsaNames[CC_GET_ALSA_CTL_SETOUTPUT_SWAP]; + char *match_names = gG9AlsaNames[CC_GET_ALSA_CTL_SETOUTPUT_SWAP]; - return AudioControlSetValue(1, &value, match_names); + return AudioControlSetValue(1, &value, match_names); } int CAudioAlsa::SetExternalDacEQMode(int mode_val) { - char *match_names = NULL; + char *match_names = NULL; - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_EQ_MODE_NAME); - return AudioControlSetValue(1, &mode_val, match_names); + match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_EQ_MODE_NAME); + return AudioControlSetValue(1, &mode_val, match_names); } int CAudioAlsa::SetI2SMute(int mute_status) { - char *match_names = NULL; + char *match_names = NULL; - if (mute_status != CC_I2S_MUTE_ON && mute_status != CC_I2S_MUTE_OFF) { - LOGE("%s, I2S mute value (%d) error!\n", __FUNCTION__, mute_status); - return -1; - } + if (mute_status != CC_I2S_MUTE_ON && mute_status != CC_I2S_MUTE_OFF) { + LOGE("%s, I2S mute value (%d) error!\n", __FUNCTION__, mute_status); + return -1; + } - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_I2S_MUTE_NAME); - return AudioControlSetValue(1, &mute_status, match_names); + match_names = GetAlsaControlName(CC_GET_ALSA_CTL_I2S_MUTE_NAME); + return AudioControlSetValue(1, &mute_status, match_names); } int CAudioAlsa::SetSPDIFMute(int mute_status) { - int set_val = 0; - char *match_names = NULL; + int set_val = 0; + char *match_names = NULL; - if (mute_status == CC_AUDIO_MUTE) { - set_val = CC_SPDIF_MUTE_ON; - } else if (mute_status == CC_AUDIO_UNMUTE) { - set_val = CC_SPDIF_MUTE_OFF; - } else { - return -1; - } - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_SPDIF_MUTE_NAME); - return AudioControlSetValue(1, &mute_status, match_names); + if (mute_status == CC_AUDIO_MUTE) { + set_val = CC_SPDIF_MUTE_ON; + } else if (mute_status == CC_AUDIO_UNMUTE) { + set_val = CC_SPDIF_MUTE_OFF; + } else { + return -1; + } + match_names = GetAlsaControlName(CC_GET_ALSA_CTL_SPDIF_MUTE_NAME); + return AudioControlSetValue(1, &mute_status, match_names); } #define CC_SAMPLE_BUF_SIZE (32) enum CC_HW_RESAMPLE_TYPE { - CC_HW_RESAMPLE_DISABLE, - CC_HW_RESAMPLE_48K, - CC_HW_RESAMPLE_44K, - CC_HW_RESAMPLE_32K, + CC_HW_RESAMPLE_DISABLE, + CC_HW_RESAMPLE_48K, + CC_HW_RESAMPLE_44K, + CC_HW_RESAMPLE_32K, }; int CAudioAlsa::SetHardwareResample(int sr) { - int i = 0, set_val = 0, tmp_val = 0; - int diff_val = 0x7FFFFFFF, diff_ind = -1; - char *match_names = NULL; - int sample_buf[CC_SAMPLE_BUF_SIZE] = {48000, 44100, 32000, -1}; - - if (sr < 0) { - set_val = 0; - } else { - for (i = 0; i < CC_SAMPLE_BUF_SIZE; i++) { - if (sample_buf[i] < 0) { - break; - } - - if (sample_buf[i] >= sr) { - tmp_val = sample_buf[i] - sr; - } else { - tmp_val = sr - sample_buf[i]; - } - - if (tmp_val <= diff_val) { - diff_val = tmp_val; - diff_ind = i; - } - } - - if (diff_ind < 0) { - set_val = 0; - } else { - set_val = diff_ind + 1; - } - } - - LOGD("%s, set_val = %d.\n", __FUNCTION__, set_val); - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_HW_RESAMPLE_NAME); - return AudioControlSetValue(1, &set_val, match_names); + int i = 0, set_val = 0, tmp_val = 0; + int diff_val = 0x7FFFFFFF, diff_ind = -1; + char *match_names = NULL; + int sample_buf[CC_SAMPLE_BUF_SIZE] = {48000, 44100, 32000, -1}; + + if (sr < 0) { + set_val = 0; + } else { + for (i = 0; i < CC_SAMPLE_BUF_SIZE; i++) { + if (sample_buf[i] < 0) { + break; + } + + if (sample_buf[i] >= sr) { + tmp_val = sample_buf[i] - sr; + } else { + tmp_val = sr - sample_buf[i]; + } + + if (tmp_val <= diff_val) { + diff_val = tmp_val; + diff_ind = i; + } + } + + if (diff_ind < 0) { + set_val = 0; + } else { + set_val = diff_ind + 1; + } + } + + LOGD("%s, set_val = %d.\n", __FUNCTION__, set_val); + match_names = GetAlsaControlName(CC_GET_ALSA_CTL_HW_RESAMPLE_NAME); + return AudioControlSetValue(1, &set_val, match_names); } int CAudioAlsa::SetMixerBypassSwitch(int switch_val) { - char match_names[48] = "Output Mixer Bypass Switch" ; - int ctl_buf[2]; + char match_names[48] = "Output Mixer Bypass Switch" ; + int ctl_buf[2]; - if (switch_val != 0 && switch_val != 1) { - return -1; - } + if (switch_val != 0 && switch_val != 1) { + return -1; + } - ctl_buf[0] = switch_val; - ctl_buf[1] = switch_val; + ctl_buf[0] = switch_val; + ctl_buf[1] = switch_val; - return AudioControlSetValue(2, ctl_buf, match_names); + return AudioControlSetValue(2, ctl_buf, match_names); } int CAudioAlsa::GetMixerBypassSwitch(void) { - char match_names[48] = "Output Mixer Bypass Switch" ; - int ctl_buf[2]; + char match_names[48] = "Output Mixer Bypass Switch" ; + int ctl_buf[2]; - AudioControlSetValue(2, ctl_buf, match_names); + AudioControlSetValue(2, ctl_buf, match_names); - return ctl_buf[0]; + return ctl_buf[0]; } int CAudioAlsa::SetMixerDacSwitch(int switch_val) { - char match_names[48] = "Output Mixer DAC Switch" ; - int ctl_buf[2]; + char match_names[48] = "Output Mixer DAC Switch" ; + int ctl_buf[2]; - if (switch_val != 0 && switch_val != 1) { - return -1; - } + if (switch_val != 0 && switch_val != 1) { + return -1; + } - ctl_buf[0] = switch_val; - ctl_buf[1] = switch_val; + ctl_buf[0] = switch_val; + ctl_buf[1] = switch_val; - return AudioControlSetValue(2, ctl_buf, match_names); + return AudioControlSetValue(2, ctl_buf, match_names); } int CAudioAlsa::GetMixerDacSwitch(void) { - char *match_names = "Output Mixer DAC Switch" ; - int ctl_buf[2]; + char *match_names = "Output Mixer DAC Switch" ; + int ctl_buf[2]; - AudioControlGetValue(2, ctl_buf, match_names); + AudioControlGetValue(2, ctl_buf, match_names); - return ctl_buf[0]; + return ctl_buf[0]; } int CAudioAlsa::TransVolumeBarVolToDigitalVol(int digit_lut_buf[], int digit_vol) { - return digit_lut_buf[digit_vol]; + return digit_lut_buf[digit_vol]; } int CAudioAlsa::TransDigitalVolToVolumeBarVol(int digit_lut_buf[], int hd_vol, int hd_min, - int hd_max, int digit_min, int digit_max) + int hd_max, int digit_min, int digit_max) { - int i; + int i; - for (i = 0; i < CC_VOL_TRANS_LUT_BUF_SIZE - 1; i++) { - if (digit_lut_buf[i] >= hd_vol && digit_lut_buf[i + 1] < hd_vol) - break; - } + for (i = 0; i < CC_VOL_TRANS_LUT_BUF_SIZE - 1; i++) { + if (digit_lut_buf[i] >= hd_vol && digit_lut_buf[i + 1] < hd_vol) + break; + } - if (i < CC_VOL_TRANS_LUT_BUF_SIZE - 1) - return i; + if (i < CC_VOL_TRANS_LUT_BUF_SIZE - 1) + return i; - return digit_max; + return digit_max; } void CAudioAlsa::SetMainVolDigitLutBuf(int digit_lut_buf[]) { - memcpy((void *) mMainDigitLutBuf, digit_lut_buf, - CC_VOL_TRANS_LUT_BUF_SIZE * sizeof(int)); + memcpy((void *) mMainDigitLutBuf, digit_lut_buf, + CC_VOL_TRANS_LUT_BUF_SIZE * sizeof(int)); } int *CAudioAlsa::GetMainVolDigitLutBuf() { - return mMainDigitLutBuf; + return mMainDigitLutBuf; } void CAudioAlsa::SetSupperBassVolDigitLutBuf(int digit_lut_buf[]) { - memcpy((void *) mSupperBassDigitLutBuf, digit_lut_buf, - CC_VOL_TRANS_LUT_BUF_SIZE * sizeof(int)); + memcpy((void *) mSupperBassDigitLutBuf, digit_lut_buf, + CC_VOL_TRANS_LUT_BUF_SIZE * sizeof(int)); } int CAudioAlsa::SetMainVolumeGain(int gain_val) { - mMainVolumeGainVal = gain_val; - return mMainVolumeGainVal; + mMainVolumeGainVal = gain_val; + return mMainVolumeGainVal; } int CAudioAlsa::GetMainVolumeGain() { - return mMainVolumeGainVal; + return mMainVolumeGainVal; } int CAudioAlsa::SetSupperBassVolumeGain(int gain_val) { - int tmp_val = 0; - tmp_val = mSupperBassVolumeGainVal; - mSupperBassVolumeGainVal = gain_val; - return tmp_val; + int tmp_val = 0; + tmp_val = mSupperBassVolumeGainVal; + mSupperBassVolumeGainVal = gain_val; + return tmp_val; } int CAudioAlsa::GetSupperBassVolumeGain() { - int tmp_val = 0; - tmp_val = mSupperBassVolumeGainVal; - return tmp_val; + int tmp_val = 0; + tmp_val = mSupperBassVolumeGainVal; + return tmp_val; } int CAudioAlsa::CalculateBalanceVol(int max_vol, int balance_val, int vol_buf[]) { - int bal_mid_vol = 0, bal_cal_len = 0; - int tmp_val = 0; + int bal_mid_vol = 0, bal_cal_len = 0; + int tmp_val = 0; - vol_buf[0] = max_vol; - vol_buf[1] = max_vol; + vol_buf[0] = max_vol; + vol_buf[1] = max_vol; - bal_mid_vol = (CC_MIN_SOUND_BALANCE_VAL + CC_MAX_SOUND_BALANCE_VAL) / 2; - bal_cal_len = (CC_MAX_SOUND_BALANCE_VAL - CC_MIN_SOUND_BALANCE_VAL) / 2; + bal_mid_vol = (CC_MIN_SOUND_BALANCE_VAL + CC_MAX_SOUND_BALANCE_VAL) / 2; + bal_cal_len = (CC_MAX_SOUND_BALANCE_VAL - CC_MIN_SOUND_BALANCE_VAL) / 2; - if (balance_val == bal_mid_vol) { - LOGD( - "%s, balance value = %d, bal_mid_vol = %d, vol_buf[0] = %d, vol_buf[1] = %d.\n", - __FUNCTION__, balance_val, bal_mid_vol, vol_buf[0], vol_buf[1]); - return 0; - } else if (balance_val < bal_mid_vol) { - vol_buf[1] = (bal_cal_len - (bal_mid_vol - balance_val)) * max_vol / bal_cal_len; - } else if (balance_val > bal_mid_vol) { - vol_buf[0] = (bal_cal_len - (balance_val - bal_mid_vol)) * max_vol / bal_cal_len; - } + if (balance_val == bal_mid_vol) { + LOGD( + "%s, balance value = %d, bal_mid_vol = %d, vol_buf[0] = %d, vol_buf[1] = %d.\n", + __FUNCTION__, balance_val, bal_mid_vol, vol_buf[0], vol_buf[1]); + return 0; + } else if (balance_val < bal_mid_vol) { + vol_buf[1] = (bal_cal_len - (bal_mid_vol - balance_val)) * max_vol / bal_cal_len; + } else if (balance_val > bal_mid_vol) { + vol_buf[0] = (bal_cal_len - (balance_val - bal_mid_vol)) * max_vol / bal_cal_len; + } - if (GetAudioAmplifierBalanceExchangeCFG() != 0) { - tmp_val = vol_buf[0]; - vol_buf[0] = vol_buf[1]; - vol_buf[1] = tmp_val; - } + if (GetAudioAmplifierBalanceExchangeCFG() != 0) { + tmp_val = vol_buf[0]; + vol_buf[0] = vol_buf[1]; + vol_buf[1] = tmp_val; + } - LOGD( - "%s, balance value = %d, bal_mid_vol = %d, vol_buf[0] = %d, vol_buf[1] = %d.\n", - __FUNCTION__, balance_val, bal_mid_vol, vol_buf[0], vol_buf[1]); - return 0; + LOGD( + "%s, balance value = %d, bal_mid_vol = %d, vol_buf[0] = %d, vol_buf[1] = %d.\n", + __FUNCTION__, balance_val, bal_mid_vol, vol_buf[0], vol_buf[1]); + return 0; } int CAudioAlsa::SetInternalDacMute(int mute_state) { - int ret = 0; - if (mute_state == CC_AUDIO_MUTE) - ret = SetAudioInternalDacDACDigitalPlayBackVolume(0, 0); - else - ret = SetAudioInternalDacDACDigitalPlayBackVolume(255, 255); - return ret; + int ret = 0; + if (mute_state == CC_AUDIO_MUTE) + ret = SetAudioInternalDacDACDigitalPlayBackVolume(0, 0); + else + ret = SetAudioInternalDacDACDigitalPlayBackVolume(255, 255); + return ret; } int CAudioAlsa::setAudioPcmPlaybackMute(int mute_state) { - char prop[256]; - property_get("audio.output.double_output", prop, "null"); - if ( Get2d4gHeadsetEnable() == 1 && (strcmp(prop, "0") == 0 || strcmp(prop, "null") == 0)) { - SetAudioPcmPlaybackSwitch(mute_state); - } - return 0; + char prop[256]; + property_get("audio.output.double_output", prop, "null"); + if ( Get2d4gHeadsetEnable() == 1 && (strcmp(prop, "0") == 0 || strcmp(prop, "null") == 0)) { + SetAudioPcmPlaybackSwitch(mute_state); + } + return 0; } int CAudioAlsa::SetInternalDacMainVolume(int main_vol) { - int tmp_ret = 0, digit_vol = 0; - digit_vol = TransVolumeBarVolToDigitalVol(mMainDigitLutBuf, main_vol); + int tmp_ret = 0, digit_vol = 0; + digit_vol = TransVolumeBarVolToDigitalVol(mMainDigitLutBuf, main_vol); - return SetInternalDacLineOutPlayBackVolume(digit_vol, digit_vol); + return SetInternalDacLineOutPlayBackVolume(digit_vol, digit_vol); } @@ -823,38 +823,38 @@ static int gDigitalRightVol = 0; int CAudioAlsa::SetDigitalVolume(int l_val, int r_val) { - amAudioSetLeftGain(l_val); - amAudioSetRightGain(r_val); - LOGD("%s, l_val = %d, r_val = %d.\n", __FUNCTION__, l_val, r_val); - return 0; + amAudioSetLeftGain(l_val); + amAudioSetRightGain(r_val); + LOGD("%s, l_val = %d, r_val = %d.\n", __FUNCTION__, l_val, r_val); + return 0; } int CAudioAlsa::SetDigitalMainVolume(int l_vol, int r_vol) { - int tmp_ret = 0, l_val = 0, r_val = 0; + int tmp_ret = 0, l_val = 0, r_val = 0; - //handle l&r channel volume for balance - l_val = TransVolumeBarVolToDigitalVol(mMainDigitLutBuf, l_vol); - r_val = TransVolumeBarVolToDigitalVol(mMainDigitLutBuf, r_vol); + //handle l&r channel volume for balance + l_val = TransVolumeBarVolToDigitalVol(mMainDigitLutBuf, l_vol); + r_val = TransVolumeBarVolToDigitalVol(mMainDigitLutBuf, r_vol); - gDigitalLeftVol = l_val; - gDigitalRightVol = r_val; - if (gDigitalMuteStatus == CC_AUDIO_UNMUTE) { - SetDigitalVolume(l_val, r_val); - } + gDigitalLeftVol = l_val; + gDigitalRightVol = r_val; + if (gDigitalMuteStatus == CC_AUDIO_UNMUTE) { + SetDigitalVolume(l_val, r_val); + } - return tmp_ret; + return tmp_ret; } int CAudioAlsa::SetDigitalMute(int mute_status) { - gDigitalMuteStatus = mute_status; - if (mute_status == CC_AUDIO_MUTE) { - SetDigitalVolume(0, 0); - } else if (mute_status == CC_AUDIO_UNMUTE) { - SetDigitalVolume(gDigitalLeftVol, gDigitalRightVol); - } + gDigitalMuteStatus = mute_status; + if (mute_status == CC_AUDIO_MUTE) { + SetDigitalVolume(0, 0); + } else if (mute_status == CC_AUDIO_UNMUTE) { + SetDigitalVolume(gDigitalLeftVol, gDigitalRightVol); + } - return 0; + return 0; } diff --git a/tvapi/libtv/audio/audio_alsa.h b/tvapi/libtv/audio/audio_alsa.h index 6cd0198..af22cb7 100644 --- a/tvapi/libtv/audio/audio_alsa.h +++ b/tvapi/libtv/audio/audio_alsa.h @@ -2,23 +2,23 @@ #define __TV_AUDIO_ALSA_H__ enum CC_AUD_I2S_MUTE { - CC_I2S_MUTE_OFF, - CC_I2S_MUTE_ON, + CC_I2S_MUTE_OFF, + CC_I2S_MUTE_ON, }; enum CC_AUDIO_MUTE_STATUS { - CC_MUTE_ON, - CC_MUTE_OFF, + CC_MUTE_ON, + CC_MUTE_OFF, }; enum CC_AUD_SPDIF_MUTE { - CC_SPDIF_MUTE_OFF, - CC_SPDIF_MUTE_ON, + CC_SPDIF_MUTE_OFF, + CC_SPDIF_MUTE_ON, }; enum CC_AUD_IN_TYPE { - CC_AUDIO_IN_SOURCE_LINEIN, - CC_AUDIO_IN_SOURCE_ATV, - CC_AUDIO_IN_SOURCE_HDMI, + CC_AUDIO_IN_SOURCE_LINEIN, + CC_AUDIO_IN_SOURCE_ATV, + CC_AUDIO_IN_SOURCE_HDMI, }; @@ -40,88 +40,88 @@ static const int CC_AUDIO_MUTE = 1; static const int CC_AUDIO_UNMUTE = 0; enum CC_AUDIO_SOURCE_TYPE { - AUDIO_HDMI_SOURCE, - AUDIO_ATV_SOURCE, - AUDIO_AV_SOURCE, - AUDIO_MPEG_SOURCE, - AUDIO_MAX_SOURCE + AUDIO_HDMI_SOURCE, + AUDIO_ATV_SOURCE, + AUDIO_AV_SOURCE, + AUDIO_MPEG_SOURCE, + AUDIO_MAX_SOURCE }; //use tinyalsa,is a like alsa-lib for android class CAudioAlsa { public: - CAudioAlsa(); - ~CAudioAlsa(); - int SetAudioInSource(int source_type); - int GetAudioInSource(void); - int SetAudioInternalDacPGAInGain(int gain_l_val, int gain_r_val); - int GetAudioInternalDacPGAInGain(int *gain_l_val, int *gain_r_val); - int SetAudioInternalDacADCDigitalCaptureVolume(int vol_l_val, int vol_r_val); - int GetAudioInternalDacADCDigitalCaptureVolume(int *vol_l_val, int *vol_r_val); - int SetAudioInternalDacDACDigitalPlayBackVolume(int vol_l_val, int vol_r_val); - int GetAudioInternalDacDACDigitalPlayBackVolume(int *vol_l_val, int *vol_r_val); - int SetInternalDacLineInSelectChannel(int line_in_number); - int SetInternalDacLineInCaptureVolume(int l_vol, int r_vol); - int GetInternalDacLineInCaptureVolume(int vol_buf[]); - int SetInternalDacLineOutPlayBackVolume(int l_vol, int r_vol); - int GetInternalDacLineOutPlayBackVolume(int vol_buf[]); - int SetExternalDacChannelSwitch(int chan_ind, int switch_val); - int SetExternalDacChannelVolume(int chan_ind, int main_vol); - int SetExternalDacEQMode(int mode_val); - int SetI2SMute(int mute_status); - int SetSPDIFMute(int mute_status); - int SetHardwareResample(int sr); - int SetAudioSwitchIO(int value); - int SetAudioPcmPlaybackVolume(int val); - int SetAudioPcmPlaybackSwitch(int vol); + CAudioAlsa(); + ~CAudioAlsa(); + int SetAudioInSource(int source_type); + int GetAudioInSource(void); + int SetAudioInternalDacPGAInGain(int gain_l_val, int gain_r_val); + int GetAudioInternalDacPGAInGain(int *gain_l_val, int *gain_r_val); + int SetAudioInternalDacADCDigitalCaptureVolume(int vol_l_val, int vol_r_val); + int GetAudioInternalDacADCDigitalCaptureVolume(int *vol_l_val, int *vol_r_val); + int SetAudioInternalDacDACDigitalPlayBackVolume(int vol_l_val, int vol_r_val); + int GetAudioInternalDacDACDigitalPlayBackVolume(int *vol_l_val, int *vol_r_val); + int SetInternalDacLineInSelectChannel(int line_in_number); + int SetInternalDacLineInCaptureVolume(int l_vol, int r_vol); + int GetInternalDacLineInCaptureVolume(int vol_buf[]); + int SetInternalDacLineOutPlayBackVolume(int l_vol, int r_vol); + int GetInternalDacLineOutPlayBackVolume(int vol_buf[]); + int SetExternalDacChannelSwitch(int chan_ind, int switch_val); + int SetExternalDacChannelVolume(int chan_ind, int main_vol); + int SetExternalDacEQMode(int mode_val); + int SetI2SMute(int mute_status); + int SetSPDIFMute(int mute_status); + int SetHardwareResample(int sr); + int SetAudioSwitchIO(int value); + int SetAudioPcmPlaybackVolume(int val); + int SetAudioPcmPlaybackSwitch(int vol); - int SetOutput_Swap(int value); + int SetOutput_Swap(int value); - int SetMixerBypassSwitch(int switch_val); - int GetMixerBypassSwitch(void); - int SetMixerDacSwitch(int switch_val); - int GetMixerDacSwitch(void); - //dac - void SetMainVolDigitLutBuf(int digit_lut_buf[]); - int *GetMainVolDigitLutBuf(); - void SetSupperBassVolDigitLutBuf(int digit_lut_buf[]); - int SetMainVolumeGain(int gain_val); - int GetMainVolumeGain(); - int SetSupperBassVolumeGain(int gain_val); - int GetSupperBassVolumeGain(); - int SetInternalDacMute(int); - int setAudioPcmPlaybackMute(int); - //end dac - int TransVolumeBarVolToDigitalVol(int *, int); - int TransDigitalVolToVolumeBarVol(int *, int, int, int, int, int); - int CalculateBalanceVol(int, int, int *); - int SetExternalDacMainVolume(int); - int SetInternalDacMainVolume(int); - int SetDigitalVolume(int, int); - int SetDigitalMainVolume(int, int); - int SetDigitalMute(int); + int SetMixerBypassSwitch(int switch_val); + int GetMixerBypassSwitch(void); + int SetMixerDacSwitch(int switch_val); + int GetMixerDacSwitch(void); + //dac + void SetMainVolDigitLutBuf(int digit_lut_buf[]); + int *GetMainVolDigitLutBuf(); + void SetSupperBassVolDigitLutBuf(int digit_lut_buf[]); + int SetMainVolumeGain(int gain_val); + int GetMainVolumeGain(); + int SetSupperBassVolumeGain(int gain_val); + int GetSupperBassVolumeGain(); + int SetInternalDacMute(int); + int setAudioPcmPlaybackMute(int); + //end dac + int TransVolumeBarVolToDigitalVol(int *, int); + int TransDigitalVolToVolumeBarVol(int *, int, int, int, int, int); + int CalculateBalanceVol(int, int, int *); + int SetExternalDacMainVolume(int); + int SetInternalDacMainVolume(int); + int SetDigitalVolume(int, int); + int SetDigitalMainVolume(int, int); + int SetDigitalMute(int); private: - int get_aml_card(); - int AudioControlSetValue(int val_count, int data_buf[], char *match_names); - int AudioControlGetValue(int val_count, int ret_buf[], char *match_names); - int get_USB_Audio_card(); - int HandleUSBAudioControlValue(int val_count, int data_buf[], int match_count, char **match_names); - int CheckVolume(int digit_vol, int digit_min, int digit_max, int hd_min, int hd_max); - int GetTwoChannelVolume(int vol_buf[], int l_min_vol, int l_max_vol, int r_min_vol, int r_max_vol, char *match_names, int hd_min, int hd_max); - int GetLineInMaxVol(); - int GetLineOutMaxVol(); - char *GetAlsaControlName(int get_type); - // - // - //mem - struct mixer *mpMixer; - struct mixer *mpUsbMixer; - int mMainVolumeBalanceVal; - int mMainVolumeGainVal; - int mSupperBassVolumeGainVal; - int mMainDigitLutBuf[CC_VOL_TRANS_LUT_BUF_SIZE]; - int mSupperBassDigitLutBuf[CC_VOL_TRANS_LUT_BUF_SIZE]; + int get_aml_card(); + int AudioControlSetValue(int val_count, int data_buf[], char *match_names); + int AudioControlGetValue(int val_count, int ret_buf[], char *match_names); + int get_USB_Audio_card(); + int HandleUSBAudioControlValue(int val_count, int data_buf[], int match_count, char **match_names); + int CheckVolume(int digit_vol, int digit_min, int digit_max, int hd_min, int hd_max); + int GetTwoChannelVolume(int vol_buf[], int l_min_vol, int l_max_vol, int r_min_vol, int r_max_vol, char *match_names, int hd_min, int hd_max); + int GetLineInMaxVol(); + int GetLineOutMaxVol(); + char *GetAlsaControlName(int get_type); + // + // + //mem + struct mixer *mpMixer; + struct mixer *mpUsbMixer; + int mMainVolumeBalanceVal; + int mMainVolumeGainVal; + int mSupperBassVolumeGainVal; + int mMainDigitLutBuf[CC_VOL_TRANS_LUT_BUF_SIZE]; + int mSupperBassDigitLutBuf[CC_VOL_TRANS_LUT_BUF_SIZE]; }; #endif //__TV_AUDIO_ALSA_H__ diff --git a/tvapi/libtv/audio/audio_effect.cpp b/tvapi/libtv/audio/audio_effect.cpp index 659b966..e6f0074 100644 --- a/tvapi/libtv/audio/audio_effect.cpp +++ b/tvapi/libtv/audio/audio_effect.cpp @@ -26,103 +26,103 @@ CAudioEffect::~CAudioEffect() int CAudioEffect::GetEQBandCount() { - return CC_BAND_ITEM_CNT; + return CC_BAND_ITEM_CNT; } int CAudioEffect::SetEQSwitch(int switch_val) { - int tmp_ret = 0; - tmp_ret |= amAudioSetEQEnable(switch_val); - return tmp_ret; + int tmp_ret = 0; + tmp_ret |= amAudioSetEQEnable(switch_val); + return tmp_ret; } int CAudioEffect::GetEQSwitch() { - int tmp_ret = 0; - return 0; + int tmp_ret = 0; + return 0; } int CAudioEffect::SetEQValue(int gain_val_buf[]) { - int tmp_ret = 0; - tmp_ret |= amAudioSetEQGain(gain_val_buf, CC_BAND_ITEM_CNT); - return tmp_ret; + int tmp_ret = 0; + tmp_ret |= amAudioSetEQGain(gain_val_buf, CC_BAND_ITEM_CNT); + return tmp_ret; } int CAudioEffect::GetEQValue(int gain_val_buf[]) { - int tmp_ret = 0; - return 0; + int tmp_ret = 0; + return 0; } int CAudioEffect::SetSrsSurroundSwitch(int switch_val) { - int tmp_ret = 0; - tmp_ret |= amAudioSetSRSSurroundSwitch(switch_val); - return tmp_ret; + int tmp_ret = 0; + tmp_ret |= amAudioSetSRSSurroundSwitch(switch_val); + return tmp_ret; } int CAudioEffect::SetSrsSurroundGain(int gain_val) { - int tmp_ret = 0; - tmp_ret |= amAudioSetSRSSurroundGain(gain_val); - return tmp_ret; + int tmp_ret = 0; + tmp_ret |= amAudioSetSRSSurroundGain(gain_val); + return tmp_ret; } int CAudioEffect::SetSrsInputOutputGain(int input_gain_val, int output_gain_val) { - int tmp_ret = 0; - tmp_ret |= amAudioSetSRSGain(input_gain_val, output_gain_val); - return tmp_ret; + int tmp_ret = 0; + tmp_ret |= amAudioSetSRSGain(input_gain_val, output_gain_val); + return tmp_ret; } int CAudioEffect::SetSrsTruBassSwitch(int switch_val) { - int tmp_ret = 0; - tmp_ret |= amAudioSetSRSTrubassSwitch(switch_val); - return tmp_ret; + int tmp_ret = 0; + tmp_ret |= amAudioSetSRSTrubassSwitch(switch_val); + return tmp_ret; } int CAudioEffect::SetSrsTruBassGain(int gain_val) { - int tmp_ret = 0; - tmp_ret |= amAudioSetSRSTrubassGain(gain_val); - return tmp_ret; + int tmp_ret = 0; + tmp_ret |= amAudioSetSRSTrubassGain(gain_val); + return tmp_ret; } int CAudioEffect::SetSrsDialogClaritySwitch(int switch_val) { - int tmp_ret = 0; - tmp_ret |= amAudioSetSRSDialogClaritySwitch(switch_val); - return tmp_ret; + int tmp_ret = 0; + tmp_ret |= amAudioSetSRSDialogClaritySwitch(switch_val); + return tmp_ret; } int CAudioEffect::SetSrsDialogClarityGain(int gain_val) { - int tmp_ret = 0; - tmp_ret |= amAudioSetSRSDialogClarityGain(gain_val); - return tmp_ret; + int tmp_ret = 0; + tmp_ret |= amAudioSetSRSDialogClarityGain(gain_val); + return tmp_ret; } int CAudioEffect::SetSrsDefinitionGain(int gain_val) { - int tmp_ret = 0; - tmp_ret |= amAudioSetSRSDefinitionGain(gain_val); - return tmp_ret; + int tmp_ret = 0; + tmp_ret |= amAudioSetSRSDefinitionGain(gain_val); + return tmp_ret; } int CAudioEffect::SetSrsTrubassSpeakerSize(int set_val) { - int tmp_ret = 0; - tmp_ret |= amAudioSetSRSTrubassSpeakerSize(set_val); - return tmp_ret; + int tmp_ret = 0; + tmp_ret |= amAudioSetSRSTrubassSpeakerSize(set_val); + return tmp_ret; } int CAudioEffect::DbxTv_SetMode(int mode, int son_value, int vol_value, int sur_value) { - int ret = 0; + int ret = 0; #ifdef TV_AUDIO_USE_DBX_TV - ret |= amAudioSetDBXTVParameter( son_value, vol_value, sur_value); + ret |= amAudioSetDBXTVParameter( son_value, vol_value, sur_value); #endif - return ret; + return ret; } diff --git a/tvapi/libtv/audio/audio_effect.h b/tvapi/libtv/audio/audio_effect.h index 6ff398a..65e8003 100644 --- a/tvapi/libtv/audio/audio_effect.h +++ b/tvapi/libtv/audio/audio_effect.h @@ -3,24 +3,24 @@ #define CC_BAND_ITEM_CNT ( 6 ) class CAudioEffect { public: - CAudioEffect(); - ~CAudioEffect(); - int GetEQBandCount(); - int SetEQSwitch(int switch_val); - int GetEQSwitch(); - int SetEQValue(int gain_val_buf[]); - int GetEQValue(int gain_val_buf[]); + CAudioEffect(); + ~CAudioEffect(); + int GetEQBandCount(); + int SetEQSwitch(int switch_val); + int GetEQSwitch(); + int SetEQValue(int gain_val_buf[]); + int GetEQValue(int gain_val_buf[]); - int SetSrsSurroundSwitch(int switch_val); - int SetSrsInputOutputGain(int input_gain_val, int output_gain_val); - int SetSrsSurroundGain(int gain_val); - int SetSrsTruBassSwitch(int switch_val); - int SetSrsTruBassGain(int gain_val); - int SetSrsDialogClaritySwitch(int switch_val); - int SetSrsDialogClarityGain(int gain_val); - int SetSrsDefinitionGain(int gain_val); - int SetSrsTrubassSpeakerSize(int tmp_val); - int DbxTv_SetMode(int mode, int son_value, int vol_value, int sur_value); + int SetSrsSurroundSwitch(int switch_val); + int SetSrsInputOutputGain(int input_gain_val, int output_gain_val); + int SetSrsSurroundGain(int gain_val); + int SetSrsTruBassSwitch(int switch_val); + int SetSrsTruBassGain(int gain_val); + int SetSrsDialogClaritySwitch(int switch_val); + int SetSrsDialogClarityGain(int gain_val); + int SetSrsDefinitionGain(int gain_val); + int SetSrsTrubassSpeakerSize(int tmp_val); + int DbxTv_SetMode(int mode, int son_value, int vol_value, int sur_value); private: }; diff --git a/tvapi/libtv/include/amstream.h b/tvapi/libtv/include/amstream.h index 14282fd..434c028 100644 --- a/tvapi/libtv/include/amstream.h +++ b/tvapi/libtv/include/amstream.h @@ -138,78 +138,78 @@ enum VIDEO_DEC_TYPE }; */ struct buf_status { - int size; - int data_len; - int free_len; - unsigned int read_pointer; - unsigned int write_pointer; + int size; + int data_len; + int free_len; + unsigned int read_pointer; + unsigned int write_pointer; }; struct vdec_status { - unsigned int width; - unsigned int height; - unsigned int fps; - unsigned int error_count; - unsigned int status; + unsigned int width; + unsigned int height; + unsigned int fps; + unsigned int error_count; + unsigned int status; }; struct adec_status { - unsigned int channels; - unsigned int sample_rate; - unsigned int resolution; - unsigned int error_count; - unsigned int status; + unsigned int channels; + unsigned int sample_rate; + unsigned int resolution; + unsigned int error_count; + unsigned int status; }; struct am_io_param { - union { - int data; - int id;//get bufstatus? //or others - }; - - int len; //buffer size; - - union { - char buf[1]; - struct buf_status status; - struct vdec_status vstatus; - struct adec_status astatus; - }; + union { + int data; + int id;//get bufstatus? //or others + }; + + int len; //buffer size; + + union { + char buf[1]; + struct buf_status status; + struct vdec_status vstatus; + struct adec_status astatus; + }; }; struct audio_info { - int valid; - int sample_rate; - int channels; - int bitrate; - int codec_id; - int block_align; - int extradata_size; - char extradata[AUDIO_EXTRA_DATA_SIZE]; + int valid; + int sample_rate; + int channels; + int bitrate; + int codec_id; + int block_align; + int extradata_size; + char extradata[AUDIO_EXTRA_DATA_SIZE]; }; struct dec_sysinfo { - unsigned int format; - unsigned int width; - unsigned int height; - unsigned int rate; - unsigned int extra; - unsigned int status; - unsigned int ratio; - void *param; - unsigned long long ratio64; + unsigned int format; + unsigned int width; + unsigned int height; + unsigned int rate; + unsigned int extra; + unsigned int status; + unsigned int ratio; + void *param; + unsigned long long ratio64; }; struct subtitle_info { - unsigned char id; - unsigned char width; - unsigned char height; - unsigned char type; + unsigned char id; + unsigned char width; + unsigned char height; + unsigned char type; }; struct codec_profile_t { - char *name; // video codec short name - char *profile; // Attributes,seperated by commas + char *name; // video codec short name + char *profile; // Attributes,seperated by commas }; #define SUPPORT_VDEC_NUM (8) @@ -220,15 +220,15 @@ int vcodec_profile_read(char *buf); #ifdef ENABLE_DEMUX_DRIVER /*TS demux operation interface*/ struct tsdemux_ops { - int (*reset)(void); - int (*set_reset_flag)(void); - int (*request_irq)(irq_handler_t handler, void *data); - int (*free_irq)(void); - int (*set_vid)(int vpid); - int (*set_aid)(int apid); - int (*set_sid)(int spid); - int (*set_skipbyte)(int skipbyte); - int (*set_demux)(int dev); + int (*reset)(void); + int (*set_reset_flag)(void); + int (*request_irq)(irq_handler_t handler, void *data); + int (*free_irq)(void); + int (*set_vid)(int vpid); + int (*set_aid)(int apid); + int (*set_sid)(int spid); + int (*set_skipbyte)(int skipbyte); + int (*set_demux)(int dev); }; void tsdemux_set_ops(struct tsdemux_ops *ops); @@ -244,20 +244,20 @@ int get_sub_type(void); #endif typedef struct tcon_gamma_table_s { - unsigned short data[256]; + unsigned short data[256]; } tcon_gamma_table_t; typedef struct tcon_rgb_ogo_s { - unsigned int en; - int r_pre_offset; // s11.0, range -1024~+1023, default is 0 - int g_pre_offset; // s11.0, range -1024~+1023, default is 0 - int b_pre_offset; // s11.0, range -1024~+1023, default is 0 - unsigned int r_gain; // u1.10, range 0~2047, default is 1024 (1.0x) - unsigned int g_gain; // u1.10, range 0~2047, default is 1024 (1.0x) - unsigned int b_gain; // u1.10, range 0~2047, default is 1024 (1.0x) - int r_post_offset; // s11.0, range -1024~+1023, default is 0 - int g_post_offset; // s11.0, range -1024~+1023, default is 0 - int b_post_offset; // s11.0, range -1024~+1023, default is 0 + unsigned int en; + int r_pre_offset; // s11.0, range -1024~+1023, default is 0 + int g_pre_offset; // s11.0, range -1024~+1023, default is 0 + int b_pre_offset; // s11.0, range -1024~+1023, default is 0 + unsigned int r_gain; // u1.10, range 0~2047, default is 1024 (1.0x) + unsigned int g_gain; // u1.10, range 0~2047, default is 1024 (1.0x) + unsigned int b_gain; // u1.10, range 0~2047, default is 1024 (1.0x) + int r_post_offset; // s11.0, range -1024~+1023, default is 0 + int g_post_offset; // s11.0, range -1024~+1023, default is 0 + int b_post_offset; // s11.0, range -1024~+1023, default is 0 } tcon_rgb_ogo_t; #endif //__AMSTREAM_H__ diff --git a/tvapi/libtv/include/cm.h b/tvapi/libtv/include/cm.h index 4d5bd86..bb516db 100644 --- a/tvapi/libtv/include/cm.h +++ b/tvapi/libtv/include/cm.h @@ -8,43 +8,43 @@ // *************************************************************************** typedef enum cm_region_idx_e { - CM_REGION_IDX_0 = 0, - CM_REGION_IDX_1, - CM_REGION_IDX_2, - CM_REGION_IDX_3, - CM_REGION_IDX_4, - CM_REGION_IDX_5, - CM_REGION_IDX_6, - CM_REGION_IDX_7, + CM_REGION_IDX_0 = 0, + CM_REGION_IDX_1, + CM_REGION_IDX_2, + CM_REGION_IDX_3, + CM_REGION_IDX_4, + CM_REGION_IDX_5, + CM_REGION_IDX_6, + CM_REGION_IDX_7, } cm_region_idx_t; typedef enum cm_sat_shape_e { - CM_SAT_SHAPE_RIGHT_BIGGEST = 0, - CM_SAT_SHAPE_LEFT_BIGGEST, + CM_SAT_SHAPE_RIGHT_BIGGEST = 0, + CM_SAT_SHAPE_LEFT_BIGGEST, } cm_sat_shape_t; typedef enum cm_hue_shape_e { - CM_HUE_SHAPE_LEFT_MORE = 0, - CM_HUE_SHAPE_RIGHT_MORE, + CM_HUE_SHAPE_LEFT_MORE = 0, + CM_HUE_SHAPE_RIGHT_MORE, } cm_hue_shape_t; typedef enum cm_demo_pos_e { - CM_DEMO_POS_TOP = 0, - CM_DEMO_POS_BOTTOM, - CM_DEMO_POS_LEFT, - CM_DEMO_POS_RIGHT, + CM_DEMO_POS_TOP = 0, + CM_DEMO_POS_BOTTOM, + CM_DEMO_POS_LEFT, + CM_DEMO_POS_RIGHT, } cm_demo_pos_t; typedef enum cm_sat_sel_e { - CM_SAT_SEL_U2_V2 = 0, - CM_SAT_SEL_UV_MAX, + CM_SAT_SEL_U2_V2 = 0, + CM_SAT_SEL_UV_MAX, } cm_sat_sel_t; typedef enum cm_csc_e { - CM_CSC_601 = 0, - CM_CSC_709, - CM_CSC_FULL_601, - CM_CSC_FULL_709, + CM_CSC_601 = 0, + CM_CSC_709, + CM_CSC_FULL_601, + CM_CSC_FULL_709, } cm_csc_t; // *************************************************************************** @@ -52,103 +52,103 @@ typedef enum cm_csc_e { // *************************************************************************** typedef struct cm_region_s { - enum cm_region_idx_e region_idx; - // sym - unsigned char sym_en; - // sat - top - unsigned char sat_en; - unsigned char sat_central_en; - enum cm_sat_shape_e sat_shape; - unsigned char sat_gain; - unsigned char sat_inc; - // sat - lum - unsigned char sat_lum_h_slope; - unsigned char sat_lum_l_slope; - unsigned char sat_lum_h; - unsigned char sat_lum_l; - // sat - sat - unsigned char sat_sat_h_slope; - unsigned char sat_sat_l_slope; - unsigned char sat_sat_h; - unsigned char sat_sat_l; - // hue - top - unsigned char hue_en; - unsigned char hue_central_en; - enum cm_hue_shape_e hue_shape; - unsigned char hue_gain; - unsigned char hue_clockwise; - unsigned char hue_shf_ran; - unsigned short hue_shf_sta; - // hue - lum - unsigned char hue_lum_h_slope; - unsigned char hue_lum_l_slope; - unsigned char hue_lum_h; - unsigned char hue_lum_l; - // hue - sat - unsigned char hue_sat_h_slope; - unsigned char hue_sat_l_slope; - unsigned char hue_sat_h; - unsigned char hue_sat_l; + enum cm_region_idx_e region_idx; + // sym + unsigned char sym_en; + // sat - top + unsigned char sat_en; + unsigned char sat_central_en; + enum cm_sat_shape_e sat_shape; + unsigned char sat_gain; + unsigned char sat_inc; + // sat - lum + unsigned char sat_lum_h_slope; + unsigned char sat_lum_l_slope; + unsigned char sat_lum_h; + unsigned char sat_lum_l; + // sat - sat + unsigned char sat_sat_h_slope; + unsigned char sat_sat_l_slope; + unsigned char sat_sat_h; + unsigned char sat_sat_l; + // hue - top + unsigned char hue_en; + unsigned char hue_central_en; + enum cm_hue_shape_e hue_shape; + unsigned char hue_gain; + unsigned char hue_clockwise; + unsigned char hue_shf_ran; + unsigned short hue_shf_sta; + // hue - lum + unsigned char hue_lum_h_slope; + unsigned char hue_lum_l_slope; + unsigned char hue_lum_h; + unsigned char hue_lum_l; + // hue - sat + unsigned char hue_sat_h_slope; + unsigned char hue_sat_l_slope; + unsigned char hue_sat_h; + unsigned char hue_sat_l; } cm_region_t; typedef struct cm_top_s { - unsigned char chroma_en; - enum cm_sat_sel_e sat_sel; - unsigned char uv_adj_en; - unsigned char rgb_to_hue_en; - enum cm_csc_e csc_sel; + unsigned char chroma_en; + enum cm_sat_sel_e sat_sel; + unsigned char uv_adj_en; + unsigned char rgb_to_hue_en; + enum cm_csc_e csc_sel; } cm_top_t; typedef struct cm_cbar_s { - unsigned char en; - unsigned char wid; - unsigned char cr; - unsigned char cb; - unsigned char y; + unsigned char en; + unsigned char wid; + unsigned char cr; + unsigned char cb; + unsigned char y; } cm_cbar_t; typedef struct cm_demo_s { - unsigned char en; - enum cm_demo_pos_e pos; - unsigned char hlight_adj; - unsigned short wid; - struct cm_cbar_s cbar; + unsigned char en; + enum cm_demo_pos_e pos; + unsigned char hlight_adj; + unsigned short wid; + struct cm_cbar_s cbar; } cm_demo_t; typedef struct cm_regmap_s { - unsigned long reg[50]; + unsigned long reg[50]; } cm_regmap_t; typedef enum reg_bus_type_e { - REG_TYPE_PHY = 0, - REG_TYPE_CBUS, - REG_TYPE_APB, - REG_TYPE_AXI, - REG_TYPE_AHB, - REG_TYPE_MPEG, - REG_TYPE_INDEX_VPPCHROMA, - REG_TYPE_INDEX_GAMMA, - VALUE_TYPE_CONTRAST_BRIGHTNESS, - REG_TYPE_INDEX_VPP_COEF, - REG_TYPE_MAX, + REG_TYPE_PHY = 0, + REG_TYPE_CBUS, + REG_TYPE_APB, + REG_TYPE_AXI, + REG_TYPE_AHB, + REG_TYPE_MPEG, + REG_TYPE_INDEX_VPPCHROMA, + REG_TYPE_INDEX_GAMMA, + VALUE_TYPE_CONTRAST_BRIGHTNESS, + REG_TYPE_INDEX_VPP_COEF, + REG_TYPE_MAX, } reg_bus_type_t; /* Register table structure */ typedef struct am_reg_s { - unsigned int type; //32-bits; 0: CBUS; 1: APB BUS... - unsigned int addr; //32-bits; Register address - unsigned int mask; //32-bits; Valid bits - unsigned int val; //32-bits; Register Value + unsigned int type; //32-bits; 0: CBUS; 1: APB BUS... + unsigned int addr; //32-bits; Register address + unsigned int mask; //32-bits; Valid bits + unsigned int val; //32-bits; Register Value } am_reg_t; #ifdef AMVIDEO_REG_TABLE_DYNAMIC typedef struct am_regs_s { - unsigned int length; // Length of total am_reg - struct am_reg_s *am_reg; + unsigned int length; // Length of total am_reg + struct am_reg_s *am_reg; } am_regs_t; #else typedef struct am_regs_s { - unsigned int length; // Length of total am_reg - struct am_reg_s am_reg[REGS_MAX_NUMBER]; + unsigned int length; // Length of total am_reg + struct am_reg_s am_reg[REGS_MAX_NUMBER]; } am_regs_t; #endif diff --git a/tvapi/libtv/include/hdmirx_cec.h b/tvapi/libtv/include/hdmirx_cec.h index 495e210..e7bfd06 100644 --- a/tvapi/libtv/include/hdmirx_cec.h +++ b/tvapi/libtv/include/hdmirx_cec.h @@ -15,282 +15,282 @@ #define CEC_MSG_QUEUE_SIZE 20 typedef enum _cec_logic_addr { - E_LA_TV = 0, - E_LA_RECORDER1 = 1, - E_LA_RECORDER2 = 2, - E_LA_TUNER1 = 3, - E_LA_PLAYBACK1 = 4, - E_LA_AUDIO_SYS = 5, - E_LA_TUNER2 = 6, - E_LA_TUNER3 = 7, - E_LA_PLAYBACK2 = 8, - E_LA_RECORER3 = 9, - E_LA_TUNER4 = 10, - E_LA_PLYBACK3 = 11, - RESERVED_1 = 12, - RESERVED_2 = 13, - E_LA_FREE_USE = 14, - E_LA_UNREGISTERED = 15, - E_LA_BROADCAST = 15, - E_LA_MAX = 15, + E_LA_TV = 0, + E_LA_RECORDER1 = 1, + E_LA_RECORDER2 = 2, + E_LA_TUNER1 = 3, + E_LA_PLAYBACK1 = 4, + E_LA_AUDIO_SYS = 5, + E_LA_TUNER2 = 6, + E_LA_TUNER3 = 7, + E_LA_PLAYBACK2 = 8, + E_LA_RECORER3 = 9, + E_LA_TUNER4 = 10, + E_LA_PLYBACK3 = 11, + RESERVED_1 = 12, + RESERVED_2 = 13, + E_LA_FREE_USE = 14, + E_LA_UNREGISTERED = 15, + E_LA_BROADCAST = 15, + E_LA_MAX = 15, } _cec_logic_addr; typedef enum _cec_dev_type { - E_DEVICE_TYPE_TV = 0, - E_DEVICE_TYPE_RECORDING_DEVICE = 1, - E_DEVICE_TYPE_RESERVED = 2, - E_DEVICE_TYPE_TUNER = 3, - E_DEVICE_TYPE_PLAYBACK_DEVICE = 4, - E_DEVICE_TYPE_AUDIO_SYSTEM = 5, - E_DEVICE_TYPE_PURE_CEC_SWITCH = 6, - E_DEVICE_TYPE_VIDEO_PROCESSOR = 7 + E_DEVICE_TYPE_TV = 0, + E_DEVICE_TYPE_RECORDING_DEVICE = 1, + E_DEVICE_TYPE_RESERVED = 2, + E_DEVICE_TYPE_TUNER = 3, + E_DEVICE_TYPE_PLAYBACK_DEVICE = 4, + E_DEVICE_TYPE_AUDIO_SYSTEM = 5, + E_DEVICE_TYPE_PURE_CEC_SWITCH = 6, + E_DEVICE_TYPE_VIDEO_PROCESSOR = 7 } _cec_dev_type; typedef enum _cec_cmd { - //----- One Touch Play ---------------------------- - E_MSG_ACTIVE_SOURCE = 0x82, - E_MSG_IMAGE_VIEW_ON = 0x04, - E_MSG_TEXT_VIEW_ON = 0x0D, - //----- Routing Control --------------------------- - //E_MSG_RC_ACTIVE_SOURCE = 0x82, - E_MSG_INACTIVE_SOURCE = 0x9D, - E_MSG_REQUEST_ACTIVE_SOURCE = 0x85, - E_MSG_ROUTING_CHANGE = 0x80, - E_MSG_ROUTING_INFO = 0x81, - E_MSG_SET_STREM_PATH = 0x86, - //----- Standby Command --------------------------- - E_MSG_STANDBY = 0x36, - //----- One Touch Record--------------------------- - E_MSG_RECORD_ON = 0x09, - E_MSG_RECORD_OFF = 0x0B, - E_MSG_RECORD_STATUS = 0x0A, - E_MSG_RECORD_TV_SCREEN = 0x0F, - //----- Timer programmer -------------------------- CEC1.3a - E_MSG_CLEAR_ANALOG_TIMER = 0x33, - E_MSG_CLEAR_DIGITAL_TIMER = 0x99, - E_MSG_CLEAR_EXT_TIMER = 0xA1, - E_MSG_SET_ANALOG_TIMER = 0x34, - E_MSG_SET_DIGITAL_TIMER = 0x97, - E_MSG_SET_EXT_TIMER = 0xA2, - E_MSG_SET_TIMER_PROGRAM_TITLE = 0x67, - E_MSG_TIMER_CLEARD_STATUS = 0x43, - E_MSG_TIMER_STATUS = 0x35, - //----- System Information ------------------------ - E_MSG_CEC_VERSION = 0x9E, //1.3a - E_MSG_GET_CEC_VERSION = 0x9F, //1.3a - E_MSG_GIVE_PHYSICAL_ADDRESS = 0x83, - E_MSG_REPORT_PHYSICAL_ADDRESS = 0x84, - E_MSG_GET_MENU_LANGUAGE = 0x91, - E_MSG_SET_MENU_LANGUAGE = 0x32, - //E_MSG_POLLING_MESSAGE = ?, - //E_MSG_REC_TYPE_PRESET = 0x00, //parameter ? - //E_MSG_REC_TYPE_OWNSRC = 0x01, //parameter ? - //----- Deck Control Feature----------------------- - E_MSG_DECK_CTRL = 0x42, - E_MSG_DECK_STATUS = 0x1B, - E_MSG_GIVE_DECK_STATUS = 0x1A, - E_MSG_PLAY = 0x41, - //----- Tuner Control ------------------------------ - E_MSG_GIVE_TUNER_STATUS = 0x08, - E_MSG_SEL_ANALOG_SERVICE = 0x92, - E_MSG_SEL_DIGITAL_SERVICE = 0x93, - E_MSG_TUNER_DEVICE_STATUS = 0x07, - E_MSG_TUNER_STEP_DEC = 0x06, - E_MSG_TUNER_STEP_INC = 0x05, - //---------Vendor Specific ------------------------- - //E_MSG_CEC_VERSION = 0x9E, //1.3a - //E_MSG_GET_CEC_VERSION = 0x9F, //1.3a - E_MSG_DEVICE_VENDOR_ID = 0x87, - E_MSG_GIVE_DEVICE_VENDOR_ID = 0x8C, - E_MSG_VENDOR_COMMAND = 0x89, - E_MSG_VENDOR_COMMAND_WITH_ID = 0xA0, //1.3a - E_MSG_VENDOR_RC_BUT_DOWN = 0x8A, - E_MSG_VENDOR_RC_BUT_UP = 0x8B, - //----- OSD Display -------------------------------- - E_MSG_SET_OSD_STRING = 0x64, - //----- Device OSD Name Transfer ------------------------- - E_MSG_OSDNT_GIVE_OSD_NAME = 0x46, - E_MSG_OSDNT_SET_OSD_NAME = 0x47, - //----- Device Menu Control ------------------------ - E_MSG_DMC_MENU_REQUEST = 0x8D, - E_MSG_DMC_MENU_STATUS = 0x8E, - E_MSG_UI_PRESS = 0x44, - E_MSG_UI_RELEASE = 0x45, - //----- Remote Control Passthrough ---------------- - //E_MSG_UI_PRESS = 0x44, - //E_MSG_UI_RELEASE = 0x45, - //----- Power Status ------------------------------ - E_MSG_GIVE_DEVICE_POWER_STATUS = 0x8F, - E_MSG_REPORT_POWER_STATUS = 0x90, - //----- General Protocal Message ------------------ - E_MSG_ABORT_MESSAGE = 0xFF, //Abort msg - E_MSG_FEATURE_ABORT = 0x00, //Feature Abort - //----- System Audio Control ---------------------- - E_MSG_ARC_GIVE_AUDIO_STATUS = 0x71, - E_MSG_ARC_GIVE_SYSTEM_AUDIO_MODE_STATUS = 0x7D, - E_MSG_ARC_REPORT_AUDIO_STATUS = 0x7A, - E_MSG_ARC_SET_SYSTEM_AUDIO_MODE = 0x72, - E_MSG_ARC_SYSTEM_AUDIO_MODE_REQUEST = 0x70, - E_MSG_ARC_SYSTEM_AUDIO_MODE_STATUS = 0x7E, - E_MSG_ARC_SET_AUDIO_RATE = 0x9A, - //----- Audio Return Channel Control ------------- - E_MSG_ARC_INITIATE_ARC = 0xC0, - E_MSG_ARC_REPORT_ARC_INITIATED = 0xC1, - E_MSG_ARC_REPORT_ARC_TERMINATED = 0xC2, - E_MSG_ARC_REQUEST_ARC_INITATION = 0xC3, - E_MSG_ARC_REQUEST_ARC_TERMINATION = 0xC4, - E_MSG_ARC_TERMINATED_ARC = 0xC5, + //----- One Touch Play ---------------------------- + E_MSG_ACTIVE_SOURCE = 0x82, + E_MSG_IMAGE_VIEW_ON = 0x04, + E_MSG_TEXT_VIEW_ON = 0x0D, + //----- Routing Control --------------------------- + //E_MSG_RC_ACTIVE_SOURCE = 0x82, + E_MSG_INACTIVE_SOURCE = 0x9D, + E_MSG_REQUEST_ACTIVE_SOURCE = 0x85, + E_MSG_ROUTING_CHANGE = 0x80, + E_MSG_ROUTING_INFO = 0x81, + E_MSG_SET_STREM_PATH = 0x86, + //----- Standby Command --------------------------- + E_MSG_STANDBY = 0x36, + //----- One Touch Record--------------------------- + E_MSG_RECORD_ON = 0x09, + E_MSG_RECORD_OFF = 0x0B, + E_MSG_RECORD_STATUS = 0x0A, + E_MSG_RECORD_TV_SCREEN = 0x0F, + //----- Timer programmer -------------------------- CEC1.3a + E_MSG_CLEAR_ANALOG_TIMER = 0x33, + E_MSG_CLEAR_DIGITAL_TIMER = 0x99, + E_MSG_CLEAR_EXT_TIMER = 0xA1, + E_MSG_SET_ANALOG_TIMER = 0x34, + E_MSG_SET_DIGITAL_TIMER = 0x97, + E_MSG_SET_EXT_TIMER = 0xA2, + E_MSG_SET_TIMER_PROGRAM_TITLE = 0x67, + E_MSG_TIMER_CLEARD_STATUS = 0x43, + E_MSG_TIMER_STATUS = 0x35, + //----- System Information ------------------------ + E_MSG_CEC_VERSION = 0x9E, //1.3a + E_MSG_GET_CEC_VERSION = 0x9F, //1.3a + E_MSG_GIVE_PHYSICAL_ADDRESS = 0x83, + E_MSG_REPORT_PHYSICAL_ADDRESS = 0x84, + E_MSG_GET_MENU_LANGUAGE = 0x91, + E_MSG_SET_MENU_LANGUAGE = 0x32, + //E_MSG_POLLING_MESSAGE = ?, + //E_MSG_REC_TYPE_PRESET = 0x00, //parameter ? + //E_MSG_REC_TYPE_OWNSRC = 0x01, //parameter ? + //----- Deck Control Feature----------------------- + E_MSG_DECK_CTRL = 0x42, + E_MSG_DECK_STATUS = 0x1B, + E_MSG_GIVE_DECK_STATUS = 0x1A, + E_MSG_PLAY = 0x41, + //----- Tuner Control ------------------------------ + E_MSG_GIVE_TUNER_STATUS = 0x08, + E_MSG_SEL_ANALOG_SERVICE = 0x92, + E_MSG_SEL_DIGITAL_SERVICE = 0x93, + E_MSG_TUNER_DEVICE_STATUS = 0x07, + E_MSG_TUNER_STEP_DEC = 0x06, + E_MSG_TUNER_STEP_INC = 0x05, + //---------Vendor Specific ------------------------- + //E_MSG_CEC_VERSION = 0x9E, //1.3a + //E_MSG_GET_CEC_VERSION = 0x9F, //1.3a + E_MSG_DEVICE_VENDOR_ID = 0x87, + E_MSG_GIVE_DEVICE_VENDOR_ID = 0x8C, + E_MSG_VENDOR_COMMAND = 0x89, + E_MSG_VENDOR_COMMAND_WITH_ID = 0xA0, //1.3a + E_MSG_VENDOR_RC_BUT_DOWN = 0x8A, + E_MSG_VENDOR_RC_BUT_UP = 0x8B, + //----- OSD Display -------------------------------- + E_MSG_SET_OSD_STRING = 0x64, + //----- Device OSD Name Transfer ------------------------- + E_MSG_OSDNT_GIVE_OSD_NAME = 0x46, + E_MSG_OSDNT_SET_OSD_NAME = 0x47, + //----- Device Menu Control ------------------------ + E_MSG_DMC_MENU_REQUEST = 0x8D, + E_MSG_DMC_MENU_STATUS = 0x8E, + E_MSG_UI_PRESS = 0x44, + E_MSG_UI_RELEASE = 0x45, + //----- Remote Control Passthrough ---------------- + //E_MSG_UI_PRESS = 0x44, + //E_MSG_UI_RELEASE = 0x45, + //----- Power Status ------------------------------ + E_MSG_GIVE_DEVICE_POWER_STATUS = 0x8F, + E_MSG_REPORT_POWER_STATUS = 0x90, + //----- General Protocal Message ------------------ + E_MSG_ABORT_MESSAGE = 0xFF, //Abort msg + E_MSG_FEATURE_ABORT = 0x00, //Feature Abort + //----- System Audio Control ---------------------- + E_MSG_ARC_GIVE_AUDIO_STATUS = 0x71, + E_MSG_ARC_GIVE_SYSTEM_AUDIO_MODE_STATUS = 0x7D, + E_MSG_ARC_REPORT_AUDIO_STATUS = 0x7A, + E_MSG_ARC_SET_SYSTEM_AUDIO_MODE = 0x72, + E_MSG_ARC_SYSTEM_AUDIO_MODE_REQUEST = 0x70, + E_MSG_ARC_SYSTEM_AUDIO_MODE_STATUS = 0x7E, + E_MSG_ARC_SET_AUDIO_RATE = 0x9A, + //----- Audio Return Channel Control ------------- + E_MSG_ARC_INITIATE_ARC = 0xC0, + E_MSG_ARC_REPORT_ARC_INITIATED = 0xC1, + E_MSG_ARC_REPORT_ARC_TERMINATED = 0xC2, + E_MSG_ARC_REQUEST_ARC_INITATION = 0xC3, + E_MSG_ARC_REQUEST_ARC_TERMINATION = 0xC4, + E_MSG_ARC_TERMINATED_ARC = 0xC5, - E_MSG_CDC_MESSAGE = 0xF8, - //amlogic cmd - //TCL - CMD_TCL_WIFI = 0x01, - CMD_TCL_ETHERNET = 0x02, - CMD_TCL_3D = 0x03, - CMD_TCL_PANEL_REVERSE = 0x04, - CMD_RESERVE1 = 0x05, - CMD_RESERVE2 = 0x06, - CMD_RESERVE3 = 0x07, - //VPU - CMD_VPU_INIT = 0x08, - CMD_VPU_ENABLE = 0x09, - CMD_VPU_BYPASS = 0x0a, - CMD_VPU_OUTPUT_MUX = 0x0b, - CMD_VPU_TIMING = 0x0c, - CMD_VPU_SOURCE = 0x0d, - CMD_RESERVE4 = 0x0e, - CMD_RESERVE5 = 0x0f, - //TCL || AML - CMD_TCL_BRIDGE_SW_VER = 0x10, - //CMD_G9_MAINCODE_VER = 0x10, - CMD_TCL_DEVICE_ID = 0x11, - //CMD_G9_BOOTCODE_VER = 0x11, - CMD_TCL_CLIENT_TYPE = 0x12, - //CMD_INFO_G9_TO_FBC = 0x12, - CMD_TCL_DEVICE_NUM = 0x13, - //CMD_INFO_FBC_TO_G9 = 0x13, - CMD_TCL_ACTIVE_KEY = 0x14, - //CMD_TIME_SYNC = 0x14, - CMD_TCL_ACTIVE_STATUS = 0x15, - //CMD_KEY_TRANSLATION = 0x15, - CMD_RESERVE6 = 0x16, - CMD_RESERVE7 = 0x17, - //DEBUG READ - CMD_DBG_RD_REGISTER_ACCESS = 0x18, - CMD_DBG_RD_MEMORY_ACCESS = 0x19, - CMD_DBG_RD_SPI_ACCESS = 0x1a, - CMD_DBG_RD_VPU_MEMORY_ACCESS = 0x1b, - CMD_DBG_RD_MEMORY_TRANSFER = 0x1c, - CMD_DBG_INPUT_KEY_DOWN = 0x1d, - CMD_DBG_INPUT_KEY_UP = 0x1e, - CMD_DBG_INPUT_REBOOT = 0x1f, - //DEBUG WRITE - CMD_DBG_WR_REGISTER_ACCESS = 0x98, - CMD_DBG_WR_MEMORY_ACCESS = 0x99, - CMD_DBG_WR_SPI_ACCESS = 0x9a, - CMD_DBG_WR_VPU_MEMORY_ACCESS = 0x9b, - CMD_DBG_WR_MEMORY_TRANSFER = 0x9c, - //USER - CMD_NATURE_LIGHT_ONOFF = 0x20, - CMD_USR_BACKLIGHT_ONOFF = 0x21, - CMD_USR_BRIGHTNESS = 0x22, - CMD_USR_CONTRAST = 0x23, - CMD_USR_BACKLIGHT = 0x24, - CMD_RESERVE25 = 0x25, - CMD_USR_SATURATION = 0x26, - CMD_USR_DYNAMIC_CONTRAST = 0x27, - CMD_USR_PICTURE_MODE = 0x28, - CMD_TEST_PATTERN_ONOFF = 0x29, - CMD_TEST_PATTERN_SELECT = 0x2a, - CMD_RESERVE8 = 0x2b, - CMD_RESERVE9 = 0x2c, - CMD_RESERVE10 = 0x2d, - CMD_RESERVE11 = 0x2e, - CMD_USR_GAMMA = 0x2f, - //FACTORY - CMD_DEF_SOUND_MODE = 0x30, - CMD_DEF_COLOR_TEMPERATURE = 0x31, - CMD_DEF_BRIGHTNESS = 0x32, - CMD_DEF_CONTRAST = 0x33, - CMD_DEF_COLOR = 0x34, - CMD_RESERVE12 = 0x35, - CMD_DEF_BACKLIGHT = 0x36, - CMD_RESERVE13 = 0x37, - CMD_AUTO_LUMA_ONOFF = 0x38, - CMD_HISTOGRAM = 0x39, - CMD_BLEND = 0x3a, - CMD_DEMULA = 0x3b, - CMD_COLORSPACE_CONVERSION = 0x3c, - CMD_CM2 = 0x3d, - CMD_RESERVE14 = 0x3e, - CMD_RESERVE15 = 0x3f, - // GAIN & OFFSET & WHITEBLANCE - CMD_DEF_RED_GAIN = 0x40, - CMD_DEF_GREEN_GAIN = 0x41, - CMD_DEF_BLUE_GAIN = 0x42, - CMD_DEF_RED_OFFSET = 0x43, - CMD_DEF_GREEN_OFFSET = 0x44, - CMD_DEF_BLUE_OFFSET = 0x45, - CMD_DEF_PRE_RED_OFFSET = 0x46, - CMD_DEF_PRE_GREEN_OFFSET = 0x47, - CMD_DEF_PRE_BLUE_OFFSET = 0x48, - CMD_RESERVE16 = 0x49, - CMD_WHITEBLANCE = 0x4a, + E_MSG_CDC_MESSAGE = 0xF8, + //amlogic cmd + //TCL + CMD_TCL_WIFI = 0x01, + CMD_TCL_ETHERNET = 0x02, + CMD_TCL_3D = 0x03, + CMD_TCL_PANEL_REVERSE = 0x04, + CMD_RESERVE1 = 0x05, + CMD_RESERVE2 = 0x06, + CMD_RESERVE3 = 0x07, + //VPU + CMD_VPU_INIT = 0x08, + CMD_VPU_ENABLE = 0x09, + CMD_VPU_BYPASS = 0x0a, + CMD_VPU_OUTPUT_MUX = 0x0b, + CMD_VPU_TIMING = 0x0c, + CMD_VPU_SOURCE = 0x0d, + CMD_RESERVE4 = 0x0e, + CMD_RESERVE5 = 0x0f, + //TCL || AML + CMD_TCL_BRIDGE_SW_VER = 0x10, + //CMD_G9_MAINCODE_VER = 0x10, + CMD_TCL_DEVICE_ID = 0x11, + //CMD_G9_BOOTCODE_VER = 0x11, + CMD_TCL_CLIENT_TYPE = 0x12, + //CMD_INFO_G9_TO_FBC = 0x12, + CMD_TCL_DEVICE_NUM = 0x13, + //CMD_INFO_FBC_TO_G9 = 0x13, + CMD_TCL_ACTIVE_KEY = 0x14, + //CMD_TIME_SYNC = 0x14, + CMD_TCL_ACTIVE_STATUS = 0x15, + //CMD_KEY_TRANSLATION = 0x15, + CMD_RESERVE6 = 0x16, + CMD_RESERVE7 = 0x17, + //DEBUG READ + CMD_DBG_RD_REGISTER_ACCESS = 0x18, + CMD_DBG_RD_MEMORY_ACCESS = 0x19, + CMD_DBG_RD_SPI_ACCESS = 0x1a, + CMD_DBG_RD_VPU_MEMORY_ACCESS = 0x1b, + CMD_DBG_RD_MEMORY_TRANSFER = 0x1c, + CMD_DBG_INPUT_KEY_DOWN = 0x1d, + CMD_DBG_INPUT_KEY_UP = 0x1e, + CMD_DBG_INPUT_REBOOT = 0x1f, + //DEBUG WRITE + CMD_DBG_WR_REGISTER_ACCESS = 0x98, + CMD_DBG_WR_MEMORY_ACCESS = 0x99, + CMD_DBG_WR_SPI_ACCESS = 0x9a, + CMD_DBG_WR_VPU_MEMORY_ACCESS = 0x9b, + CMD_DBG_WR_MEMORY_TRANSFER = 0x9c, + //USER + CMD_NATURE_LIGHT_ONOFF = 0x20, + CMD_USR_BACKLIGHT_ONOFF = 0x21, + CMD_USR_BRIGHTNESS = 0x22, + CMD_USR_CONTRAST = 0x23, + CMD_USR_BACKLIGHT = 0x24, + CMD_RESERVE25 = 0x25, + CMD_USR_SATURATION = 0x26, + CMD_USR_DYNAMIC_CONTRAST = 0x27, + CMD_USR_PICTURE_MODE = 0x28, + CMD_TEST_PATTERN_ONOFF = 0x29, + CMD_TEST_PATTERN_SELECT = 0x2a, + CMD_RESERVE8 = 0x2b, + CMD_RESERVE9 = 0x2c, + CMD_RESERVE10 = 0x2d, + CMD_RESERVE11 = 0x2e, + CMD_USR_GAMMA = 0x2f, + //FACTORY + CMD_DEF_SOUND_MODE = 0x30, + CMD_DEF_COLOR_TEMPERATURE = 0x31, + CMD_DEF_BRIGHTNESS = 0x32, + CMD_DEF_CONTRAST = 0x33, + CMD_DEF_COLOR = 0x34, + CMD_RESERVE12 = 0x35, + CMD_DEF_BACKLIGHT = 0x36, + CMD_RESERVE13 = 0x37, + CMD_AUTO_LUMA_ONOFF = 0x38, + CMD_HISTOGRAM = 0x39, + CMD_BLEND = 0x3a, + CMD_DEMULA = 0x3b, + CMD_COLORSPACE_CONVERSION = 0x3c, + CMD_CM2 = 0x3d, + CMD_RESERVE14 = 0x3e, + CMD_RESERVE15 = 0x3f, + // GAIN & OFFSET & WHITEBLANCE + CMD_DEF_RED_GAIN = 0x40, + CMD_DEF_GREEN_GAIN = 0x41, + CMD_DEF_BLUE_GAIN = 0x42, + CMD_DEF_RED_OFFSET = 0x43, + CMD_DEF_GREEN_OFFSET = 0x44, + CMD_DEF_BLUE_OFFSET = 0x45, + CMD_DEF_PRE_RED_OFFSET = 0x46, + CMD_DEF_PRE_GREEN_OFFSET = 0x47, + CMD_DEF_PRE_BLUE_OFFSET = 0x48, + CMD_RESERVE16 = 0x49, + CMD_WHITEBLANCE = 0x4a, - CMD_SET_SW_VERSION = 0x57, - CMD_3D = 0xd0, + CMD_SET_SW_VERSION = 0x57, + CMD_3D = 0xd0, - CMD_MAX = 0xff + CMD_MAX = 0xff } _cec_cmd; typedef struct _cec_msg { - unsigned char addr; //refer as enum _cec_logic_addr - unsigned char cmd; //refer as enum _cec_cmd - unsigned char msg_data[14]; - unsigned char msg_len; + unsigned char addr; //refer as enum _cec_logic_addr + unsigned char cmd; //refer as enum _cec_cmd + unsigned char msg_data[14]; + unsigned char msg_len; } _cec_msg; typedef union tagCECMsgStream { - unsigned char buf[17]; - struct _cec_msg msg; + unsigned char buf[17]; + struct _cec_msg msg; } CECMsgStream; typedef struct _cec_dev_map { - enum _cec_logic_addr logic_addr; - unsigned int phy_addr; - int cec_dev_type; - char cec_dev_name[14]; + enum _cec_logic_addr logic_addr; + unsigned int phy_addr; + int cec_dev_type; + char cec_dev_name[14]; } _cec_dev_map; typedef struct _cec_msg_queue { - struct _cec_msg cec_msg[CEC_MSG_QUEUE_SIZE]; - int wr_index; - int rd_index; + struct _cec_msg cec_msg[CEC_MSG_QUEUE_SIZE]; + int wr_index; + int rd_index; } _cec_msg_queue; typedef enum _cec_status { - E_CEC_FEATURE_ABORT = 0x00, - E_CEC_RX_SUCCESS = 0x01, - E_CEC_TX_SUCCESS = 0x02, - E_CEC_RF = 0x04, - E_CEC_LOST_ABT = 0x08, - E_CEC_BIT_SHORT = 0x10, - E_CEC_BIT_LONG = 0x20, - E_CEC_NACK = 0x40, - E_CEC_SYSTEM_BUSY = 0x80, + E_CEC_FEATURE_ABORT = 0x00, + E_CEC_RX_SUCCESS = 0x01, + E_CEC_TX_SUCCESS = 0x02, + E_CEC_RF = 0x04, + E_CEC_LOST_ABT = 0x08, + E_CEC_BIT_SHORT = 0x10, + E_CEC_BIT_LONG = 0x20, + E_CEC_NACK = 0x40, + E_CEC_SYSTEM_BUSY = 0x80, } _cec_status; typedef enum _cec_map_status { - E_CEC_MAP_UPDATE_START = 0, - E_CEC_MAP_POLLLING = 1, - E_CEC_MAP_GET_VENDOR_ID = 2, - E_CEC_MAP_GET_PHYSICAL_ADDR = 3, - E_CEC_MAP_GET_OSD_NAME = 4, - E_CEC_MAP_GET_CEC_VERSION = 5, - E_CEC_MAP_UPDATE_COMPLETED = 6, + E_CEC_MAP_UPDATE_START = 0, + E_CEC_MAP_POLLLING = 1, + E_CEC_MAP_GET_VENDOR_ID = 2, + E_CEC_MAP_GET_PHYSICAL_ADDR = 3, + E_CEC_MAP_GET_OSD_NAME = 4, + E_CEC_MAP_GET_CEC_VERSION = 5, + E_CEC_MAP_UPDATE_COMPLETED = 6, } _cec_map_status; #define HDMI_IOC_MAGIC 'H' diff --git a/tvapi/libtv/include/ve.h b/tvapi/libtv/include/ve.h index a54c44c..160ad12 100644 --- a/tvapi/libtv/include/ve.h +++ b/tvapi/libtv/include/ve.h @@ -6,22 +6,22 @@ // *************************************************************************** typedef enum ve_demo_pos_e { - VE_DEMO_POS_TOP = 0, - VE_DEMO_POS_BOTTOM, - VE_DEMO_POS_LEFT, - VE_DEMO_POS_RIGHT, + VE_DEMO_POS_TOP = 0, + VE_DEMO_POS_BOTTOM, + VE_DEMO_POS_LEFT, + VE_DEMO_POS_RIGHT, } ve_demo_pos_t; typedef enum ve_dnlp_rt_e { - VE_DNLP_RT_0S = 0, - VE_DNLP_RT_1S = 6, - VE_DNLP_RT_2S, - VE_DNLP_RT_4S, - VE_DNLP_RT_8S, - VE_DNLP_RT_16S, - VE_DNLP_RT_32S, - VE_DNLP_RT_64S, - VE_DNLP_RT_FREEZE, + VE_DNLP_RT_0S = 0, + VE_DNLP_RT_1S = 6, + VE_DNLP_RT_2S, + VE_DNLP_RT_4S, + VE_DNLP_RT_8S, + VE_DNLP_RT_16S, + VE_DNLP_RT_32S, + VE_DNLP_RT_64S, + VE_DNLP_RT_FREEZE, } ve_dnlp_rt_t; // *************************************************************************** @@ -29,64 +29,64 @@ typedef enum ve_dnlp_rt_e { // *************************************************************************** typedef enum ve_dnlp_rl_e { - VE_DNLP_RL_01 = 1, // max_contrast = 1.0625x - VE_DNLP_RL_02, // max_contrast = 1.1250x - VE_DNLP_RL_03, // max_contrast = 1.1875x - VE_DNLP_RL_04, // max_contrast = 1.2500x - VE_DNLP_RL_05, // max_contrast = 1.3125x - VE_DNLP_RL_06, // max_contrast = 1.3750x - VE_DNLP_RL_07, // max_contrast = 1.4375x - VE_DNLP_RL_08, // max_contrast = 1.5000x - VE_DNLP_RL_09, // max_contrast = 1.5625x - VE_DNLP_RL_10, // max_contrast = 1.6250x - VE_DNLP_RL_11, // max_contrast = 1.6875x - VE_DNLP_RL_12, // max_contrast = 1.7500x - VE_DNLP_RL_13, // max_contrast = 1.8125x - VE_DNLP_RL_14, // max_contrast = 1.8750x - VE_DNLP_RL_15, // max_contrast = 1.9375x - VE_DNLP_RL_16, // max_contrast = 2.0000x + VE_DNLP_RL_01 = 1, // max_contrast = 1.0625x + VE_DNLP_RL_02, // max_contrast = 1.1250x + VE_DNLP_RL_03, // max_contrast = 1.1875x + VE_DNLP_RL_04, // max_contrast = 1.2500x + VE_DNLP_RL_05, // max_contrast = 1.3125x + VE_DNLP_RL_06, // max_contrast = 1.3750x + VE_DNLP_RL_07, // max_contrast = 1.4375x + VE_DNLP_RL_08, // max_contrast = 1.5000x + VE_DNLP_RL_09, // max_contrast = 1.5625x + VE_DNLP_RL_10, // max_contrast = 1.6250x + VE_DNLP_RL_11, // max_contrast = 1.6875x + VE_DNLP_RL_12, // max_contrast = 1.7500x + VE_DNLP_RL_13, // max_contrast = 1.8125x + VE_DNLP_RL_14, // max_contrast = 1.8750x + VE_DNLP_RL_15, // max_contrast = 1.9375x + VE_DNLP_RL_16, // max_contrast = 2.0000x } ve_dnlp_rl_t; typedef enum ve_dnlp_ext_e { - VE_DNLP_EXT_00 = 0, // weak - VE_DNLP_EXT_01, - VE_DNLP_EXT_02, - VE_DNLP_EXT_03, - VE_DNLP_EXT_04, - VE_DNLP_EXT_05, - VE_DNLP_EXT_06, - VE_DNLP_EXT_07, - VE_DNLP_EXT_08, - VE_DNLP_EXT_09, - VE_DNLP_EXT_10, - VE_DNLP_EXT_11, - VE_DNLP_EXT_12, - VE_DNLP_EXT_13, - VE_DNLP_EXT_14, - VE_DNLP_EXT_15, - VE_DNLP_EXT_16, // strong + VE_DNLP_EXT_00 = 0, // weak + VE_DNLP_EXT_01, + VE_DNLP_EXT_02, + VE_DNLP_EXT_03, + VE_DNLP_EXT_04, + VE_DNLP_EXT_05, + VE_DNLP_EXT_06, + VE_DNLP_EXT_07, + VE_DNLP_EXT_08, + VE_DNLP_EXT_09, + VE_DNLP_EXT_10, + VE_DNLP_EXT_11, + VE_DNLP_EXT_12, + VE_DNLP_EXT_13, + VE_DNLP_EXT_14, + VE_DNLP_EXT_15, + VE_DNLP_EXT_16, // strong } ve_dnlp_ext_t; typedef struct ve_bext_s { - unsigned char en; - unsigned char start; - unsigned char slope1; - unsigned char midpt; - unsigned char slope2; + unsigned char en; + unsigned char start; + unsigned char slope1; + unsigned char midpt; + unsigned char slope2; } ve_bext_t; typedef struct ve_dnlp_s { - unsigned int en; - enum ve_dnlp_rt_e rt; - enum ve_dnlp_rl_e rl; - enum ve_dnlp_ext_e black; - enum ve_dnlp_ext_e white; + unsigned int en; + enum ve_dnlp_rt_e rt; + enum ve_dnlp_rl_e rl; + enum ve_dnlp_ext_e black; + enum ve_dnlp_ext_e white; } ve_dnlp_t; typedef struct ve_hist_s { - unsigned long sum; - int width; - int height; - int ave; + unsigned long sum; + int width; + int height; + int ave; } ve_hist_t; /*typedef struct ve_dnlp_table_s { unsigned int en; @@ -99,136 +99,136 @@ typedef struct ve_hist_s { unsigned int hghalpha; } ve_dnlp_table_t;*/ typedef struct ve_dnlp_table_s { - unsigned int en; - unsigned int method; - unsigned int cliprate; - unsigned int lowrange; - unsigned int hghrange; - unsigned int lowalpha; - unsigned int midalpha; - unsigned int hghalpha; - unsigned int adj_level; - unsigned int new_adj_level; - unsigned int new_mvreflsh; - unsigned int new_gmma_rate; - unsigned int new_lowalpha; - unsigned int new_hghalpha; - unsigned int new_sbgnbnd; - unsigned int new_sendbnd; - unsigned int new_clashBgn; - unsigned int new_clashEnd; - unsigned int new_cliprate; - unsigned int new_mtdbld_rate; - unsigned int new_blkgma_rate; + unsigned int en; + unsigned int method; + unsigned int cliprate; + unsigned int lowrange; + unsigned int hghrange; + unsigned int lowalpha; + unsigned int midalpha; + unsigned int hghalpha; + unsigned int adj_level; + unsigned int new_adj_level; + unsigned int new_mvreflsh; + unsigned int new_gmma_rate; + unsigned int new_lowalpha; + unsigned int new_hghalpha; + unsigned int new_sbgnbnd; + unsigned int new_sendbnd; + unsigned int new_clashBgn; + unsigned int new_clashEnd; + unsigned int new_cliprate; + unsigned int new_mtdbld_rate; + unsigned int new_blkgma_rate; } ve_dnlp_table_t; typedef struct ve_hsvs_s { - unsigned char en; - unsigned char peak_gain_h1; - unsigned char peak_gain_h2; - unsigned char peak_gain_h3; - unsigned char peak_gain_h4; - unsigned char peak_gain_h5; - unsigned char peak_gain_v1; - unsigned char peak_gain_v2; - unsigned char peak_gain_v3; - unsigned char peak_gain_v4; - unsigned char peak_gain_v5; - unsigned char peak_gain_v6; - unsigned char hpeak_slope1; - unsigned char hpeak_slope2; - unsigned char hpeak_thr1; - unsigned char hpeak_thr2; - unsigned char hpeak_nlp_cor_thr; - unsigned char hpeak_nlp_gain_pos; - unsigned char hpeak_nlp_gain_neg; - unsigned char vpeak_slope1; - unsigned char vpeak_slope2; - unsigned char vpeak_thr1; - unsigned char vpeak_thr2; - unsigned char vpeak_nlp_cor_thr; - unsigned char vpeak_nlp_gain_pos; - unsigned char vpeak_nlp_gain_neg; - unsigned char speak_slope1; - unsigned char speak_slope2; - unsigned char speak_thr1; - unsigned char speak_thr2; - unsigned char speak_nlp_cor_thr; - unsigned char speak_nlp_gain_pos; - unsigned char speak_nlp_gain_neg; - unsigned char peak_cor_gain; - unsigned char peak_cor_thr_l; - unsigned char peak_cor_thr_h; - unsigned char vlti_step; - unsigned char vlti_step2; - unsigned char vlti_thr; - unsigned char vlti_gain_pos; - unsigned char vlti_gain_neg; - unsigned char vlti_blend_factor; - unsigned char hlti_step; - unsigned char hlti_thr; - unsigned char hlti_gain_pos; - unsigned char hlti_gain_neg; - unsigned char hlti_blend_factor; - unsigned char vlimit_coef_h; - unsigned char vlimit_coef_l; - unsigned char hlimit_coef_h; - unsigned char hlimit_coef_l; - unsigned char cti_444_422_en; - unsigned char cti_422_444_en; - unsigned char cti_blend_factor; - unsigned char vcti_buf_en; - unsigned char vcti_buf_mode_c5l; - unsigned char vcti_filter; - unsigned char hcti_step; - unsigned char hcti_step2; - unsigned char hcti_thr; - unsigned char hcti_gain; - unsigned char hcti_mode_median; + unsigned char en; + unsigned char peak_gain_h1; + unsigned char peak_gain_h2; + unsigned char peak_gain_h3; + unsigned char peak_gain_h4; + unsigned char peak_gain_h5; + unsigned char peak_gain_v1; + unsigned char peak_gain_v2; + unsigned char peak_gain_v3; + unsigned char peak_gain_v4; + unsigned char peak_gain_v5; + unsigned char peak_gain_v6; + unsigned char hpeak_slope1; + unsigned char hpeak_slope2; + unsigned char hpeak_thr1; + unsigned char hpeak_thr2; + unsigned char hpeak_nlp_cor_thr; + unsigned char hpeak_nlp_gain_pos; + unsigned char hpeak_nlp_gain_neg; + unsigned char vpeak_slope1; + unsigned char vpeak_slope2; + unsigned char vpeak_thr1; + unsigned char vpeak_thr2; + unsigned char vpeak_nlp_cor_thr; + unsigned char vpeak_nlp_gain_pos; + unsigned char vpeak_nlp_gain_neg; + unsigned char speak_slope1; + unsigned char speak_slope2; + unsigned char speak_thr1; + unsigned char speak_thr2; + unsigned char speak_nlp_cor_thr; + unsigned char speak_nlp_gain_pos; + unsigned char speak_nlp_gain_neg; + unsigned char peak_cor_gain; + unsigned char peak_cor_thr_l; + unsigned char peak_cor_thr_h; + unsigned char vlti_step; + unsigned char vlti_step2; + unsigned char vlti_thr; + unsigned char vlti_gain_pos; + unsigned char vlti_gain_neg; + unsigned char vlti_blend_factor; + unsigned char hlti_step; + unsigned char hlti_thr; + unsigned char hlti_gain_pos; + unsigned char hlti_gain_neg; + unsigned char hlti_blend_factor; + unsigned char vlimit_coef_h; + unsigned char vlimit_coef_l; + unsigned char hlimit_coef_h; + unsigned char hlimit_coef_l; + unsigned char cti_444_422_en; + unsigned char cti_422_444_en; + unsigned char cti_blend_factor; + unsigned char vcti_buf_en; + unsigned char vcti_buf_mode_c5l; + unsigned char vcti_filter; + unsigned char hcti_step; + unsigned char hcti_step2; + unsigned char hcti_thr; + unsigned char hcti_gain; + unsigned char hcti_mode_median; } ve_hsvs_t; typedef struct ve_ccor_s { - unsigned char en; - unsigned char slope; - unsigned char thr; + unsigned char en; + unsigned char slope; + unsigned char thr; } ve_ccor_t; typedef struct ve_benh_s { - unsigned char en; - unsigned char cb_inc; - unsigned char cr_inc; - unsigned char gain_cr; - unsigned char gain_cb4cr; - unsigned char luma_h; - unsigned char err_crp; - unsigned char err_crn; - unsigned char err_cbp; - unsigned char err_cbn; + unsigned char en; + unsigned char cb_inc; + unsigned char cr_inc; + unsigned char gain_cr; + unsigned char gain_cb4cr; + unsigned char luma_h; + unsigned char err_crp; + unsigned char err_crn; + unsigned char err_cbp; + unsigned char err_cbn; } ve_benh_t; typedef struct ve_cbar_s { - unsigned char en; - unsigned char wid; - unsigned char cr; - unsigned char cb; - unsigned char y; + unsigned char en; + unsigned char wid; + unsigned char cr; + unsigned char cb; + unsigned char y; } ve_cbar_t; typedef struct ve_demo_s { - unsigned char bext; - unsigned char dnlp; - unsigned char hsvs; - unsigned char ccor; - unsigned char benh; - enum ve_demo_pos_e pos; - unsigned long wid; - struct ve_cbar_s cbar; + unsigned char bext; + unsigned char dnlp; + unsigned char hsvs; + unsigned char ccor; + unsigned char benh; + enum ve_demo_pos_e pos; + unsigned long wid; + struct ve_cbar_s cbar; } ve_demo_t; typedef struct vdo_meas_s { - //... + //... } vdo_meas_t; typedef struct ve_regmap_s { - unsigned long reg[43]; + unsigned long reg[43]; } ve_regmap_t; // *************************************************************************** diff --git a/tvapi/libtv/tv/AutoBackLight.cpp b/tvapi/libtv/tv/AutoBackLight.cpp index c87635a..98bf02d 100644 --- a/tvapi/libtv/tv/AutoBackLight.cpp +++ b/tvapi/libtv/tv/AutoBackLight.cpp @@ -22,60 +22,60 @@ AutoBackLight::AutoBackLight( CVpp *mVpp, CTvin *pTvin ) { - mAutoBacklightSource = SOURCE_TYPE_TV; - myVpp = mVpp; - myTvin = pTvin; - mCur_source_default_backlight = 100; - mCur_sig_state == SIG_STATE_NOSIG; - mAutoBacklight_OnOff_Flag = false; - mCurrent_backlight = 100; - mCur_dest_backlight = 100; + mAutoBacklightSource = SOURCE_TYPE_TV; + myVpp = mVpp; + myTvin = pTvin; + mCur_source_default_backlight = 100; + mCur_sig_state == SIG_STATE_NOSIG; + mAutoBacklight_OnOff_Flag = false; + mCurrent_backlight = 100; + mCur_dest_backlight = 100; } AutoBackLight::~AutoBackLight() { - mAutoBacklight_OnOff_Flag = false; + mAutoBacklight_OnOff_Flag = false; } bool AutoBackLight::isAutoBacklightOn() { - return mAutoBacklight_OnOff_Flag; + return mAutoBacklight_OnOff_Flag; } void AutoBackLight::updateSigState(int state) { - mCur_sig_state = state; - LOGD("updateSigState = %d", mCur_sig_state); + mCur_sig_state = state; + LOGD("updateSigState = %d", mCur_sig_state); } void AutoBackLight::startAutoBacklight( tv_source_input_type_t source_type ) { - mAutoBacklightSource = source_type; - mCur_source_default_backlight = myVpp->GetBacklight(source_type); - mCurrent_backlight = mCur_source_default_backlight; - myVpp->SetBacklight(mCur_source_default_backlight, source_type, 1); - - /* - mDefault_auto_bl_value = def_source_bl_value; - dynamicGamma = mDefault_auto_bl_value * mCur_source_default_backlight / 100; - // this if should not happen - if (dynamicGamma > mCur_source_default_backlight) { - dynamicGamma = mCur_source_default_backlight; - } - */ - - if (!mAutoBacklight_OnOff_Flag) { - mAutoBacklight_OnOff_Flag = true; - this->run(); - } + mAutoBacklightSource = source_type; + mCur_source_default_backlight = myVpp->GetBacklight(source_type); + mCurrent_backlight = mCur_source_default_backlight; + myVpp->SetBacklight(mCur_source_default_backlight, source_type, 1); + + /* + mDefault_auto_bl_value = def_source_bl_value; + dynamicGamma = mDefault_auto_bl_value * mCur_source_default_backlight / 100; + // this if should not happen + if (dynamicGamma > mCur_source_default_backlight) { + dynamicGamma = mCur_source_default_backlight; + } + */ + + if (!mAutoBacklight_OnOff_Flag) { + mAutoBacklight_OnOff_Flag = true; + this->run(); + } } void AutoBackLight::stopAutoBacklight() { - if (mAutoBacklight_OnOff_Flag) { - mAutoBacklight_OnOff_Flag = false; - myVpp->SetBacklight(mCur_source_default_backlight, mAutoBacklightSource, 1); - } + if (mAutoBacklight_OnOff_Flag) { + mAutoBacklight_OnOff_Flag = false; + myVpp->SetBacklight(mCur_source_default_backlight, mAutoBacklightSource, 1); + } } /** @@ -87,90 +87,90 @@ void AutoBackLight::stopAutoBacklight() */ void AutoBackLight::adjustDstBacklight() { - if (mCur_sig_state == SIG_STATE_STABLE) { - //the node is used to adjust current ts is static or dynamtic frame - char temp_str = 0; - int fd = open("/sys/module/di/parameters/frame_dynamic", O_RDWR); - if (fd <= 0) { - LOGE("open /sys/module/di/parameters/frame_dynamic ERROR!!\n"); - return; - } - - if (read(fd, &temp_str, 1) > 0) { - - if (temp_str == 'N') { - mCur_dest_backlight = mCur_source_default_backlight; - } else if (temp_str == 'Y') { - int pwm = HistogramGet_AVE(); - if (pwm <= 20) { - mCur_dest_backlight = 14; - } else if (pwm > 20 && pwm <= 160) { - mCur_dest_backlight = 57; - } else { - mCur_dest_backlight = 100; - } - //LOGD("pwm = %d, mCur_dest_backlight = %d", pwm, mCur_dest_backlight); - } - } - close(fd); - } else { - mCurrent_backlight = mCur_dest_backlight = mCur_source_default_backlight; - myVpp->SetBacklight(mCurrent_backlight, mAutoBacklightSource, 0); - } - - /* - if (pwm > 0) - pwm_max = pwm; - else - pwm_min = pwm; - pwm = 255 - pwm; - int average = (pwm_min + pwm_max) / 2; - dynamicGammaOffset = (pwm - average) / 10; - dynamicGammaOffset = dynamicGammaOffset * mDefault_auto_bl_value / 100; - - //the node is used to adjust current ts is static or dynamtic frame - char temp_str = 0; - int fd = open("/sys/module/di/parameters/frame_dynamic", O_RDWR); - if (fd <= 0) { - LOGE("open /sys/module/di/parameters/frame_dynamic ERROR!!\n"); - return; - } - - if (read(fd, &temp_str, 1) > 0) { - if (temp_str== 'N') { - mCur_dest_backlight = mCur_source_default_backlight; - } - else if (temp_str == 'Y') { - mCur_dest_backlight = dynamicGamma + dynamicGammaOffset; - - if (mCur_dest_backlight > mCur_source_default_backlight) { - mCur_dest_backlight = mCur_source_default_backlight; - } - else if (mCur_dest_backlight < 0) { - mCur_dest_backlight = 0; - } - } - } - close(fd); - */ + if (mCur_sig_state == SIG_STATE_STABLE) { + //the node is used to adjust current ts is static or dynamtic frame + char temp_str = 0; + int fd = open("/sys/module/di/parameters/frame_dynamic", O_RDWR); + if (fd <= 0) { + LOGE("open /sys/module/di/parameters/frame_dynamic ERROR!!\n"); + return; + } + + if (read(fd, &temp_str, 1) > 0) { + + if (temp_str == 'N') { + mCur_dest_backlight = mCur_source_default_backlight; + } else if (temp_str == 'Y') { + int pwm = HistogramGet_AVE(); + if (pwm <= 20) { + mCur_dest_backlight = 14; + } else if (pwm > 20 && pwm <= 160) { + mCur_dest_backlight = 57; + } else { + mCur_dest_backlight = 100; + } + //LOGD("pwm = %d, mCur_dest_backlight = %d", pwm, mCur_dest_backlight); + } + } + close(fd); + } else { + mCurrent_backlight = mCur_dest_backlight = mCur_source_default_backlight; + myVpp->SetBacklight(mCurrent_backlight, mAutoBacklightSource, 0); + } + + /* + if (pwm > 0) + pwm_max = pwm; + else + pwm_min = pwm; + pwm = 255 - pwm; + int average = (pwm_min + pwm_max) / 2; + dynamicGammaOffset = (pwm - average) / 10; + dynamicGammaOffset = dynamicGammaOffset * mDefault_auto_bl_value / 100; + + //the node is used to adjust current ts is static or dynamtic frame + char temp_str = 0; + int fd = open("/sys/module/di/parameters/frame_dynamic", O_RDWR); + if (fd <= 0) { + LOGE("open /sys/module/di/parameters/frame_dynamic ERROR!!\n"); + return; + } + + if (read(fd, &temp_str, 1) > 0) { + if (temp_str== 'N') { + mCur_dest_backlight = mCur_source_default_backlight; + } + else if (temp_str == 'Y') { + mCur_dest_backlight = dynamicGamma + dynamicGammaOffset; + + if (mCur_dest_backlight > mCur_source_default_backlight) { + mCur_dest_backlight = mCur_source_default_backlight; + } + else if (mCur_dest_backlight < 0) { + mCur_dest_backlight = 0; + } + } + } + close(fd); + */ } void AutoBackLight::adjustBacklight() { - if (mCurrent_backlight == mCur_dest_backlight) { - return; - } else if ((mCurrent_backlight - mCur_dest_backlight) > -2 && (mCurrent_backlight - mCur_dest_backlight) < 2) { - mCurrent_backlight = mCur_dest_backlight; - myVpp->SetBacklight(mCurrent_backlight, mAutoBacklightSource, 0); - } else if (mCurrent_backlight < mCur_dest_backlight) { - mCurrent_backlight = mCurrent_backlight + 2; - myVpp->SetBacklight(mCurrent_backlight, mAutoBacklightSource, 0); - } else if (mCurrent_backlight > mCur_dest_backlight) { - mCurrent_backlight = mCurrent_backlight - 2; - myVpp->SetBacklight(mCurrent_backlight, mAutoBacklightSource, 0); - } - - //LOGD("mCurrent_backlight = %d", mCurrent_backlight); + if (mCurrent_backlight == mCur_dest_backlight) { + return; + } else if ((mCurrent_backlight - mCur_dest_backlight) > -2 && (mCurrent_backlight - mCur_dest_backlight) < 2) { + mCurrent_backlight = mCur_dest_backlight; + myVpp->SetBacklight(mCurrent_backlight, mAutoBacklightSource, 0); + } else if (mCurrent_backlight < mCur_dest_backlight) { + mCurrent_backlight = mCurrent_backlight + 2; + myVpp->SetBacklight(mCurrent_backlight, mAutoBacklightSource, 0); + } else if (mCurrent_backlight > mCur_dest_backlight) { + mCurrent_backlight = mCurrent_backlight - 2; + myVpp->SetBacklight(mCurrent_backlight, mAutoBacklightSource, 0); + } + + //LOGD("mCurrent_backlight = %d", mCurrent_backlight); } /** @@ -179,34 +179,34 @@ void AutoBackLight::adjustBacklight() */ int AutoBackLight::HistogramGet_AVE() { - int hist_ave = 0; - tvin_parm_t vdinParam; - if (0 == myTvin->VDIN_GetVdinParam(&vdinParam)) { - if (vdinParam.pixel_sum != 0) { - hist_ave = vdinParam.luma_sum / vdinParam.pixel_sum; - LOGD("[hist_ave][%d].", hist_ave); - return hist_ave; - } - LOGE("vdinParam.pixel_sum is zero, so the value is infinity\n"); - return -1; - } - LOGE("VDIN_GetVdinParam get data error!!!\n"); - return -1; + int hist_ave = 0; + tvin_parm_t vdinParam; + if (0 == myTvin->VDIN_GetVdinParam(&vdinParam)) { + if (vdinParam.pixel_sum != 0) { + hist_ave = vdinParam.luma_sum / vdinParam.pixel_sum; + LOGD("[hist_ave][%d].", hist_ave); + return hist_ave; + } + LOGE("vdinParam.pixel_sum is zero, so the value is infinity\n"); + return -1; + } + LOGE("VDIN_GetVdinParam get data error!!!\n"); + return -1; } bool AutoBackLight::threadLoop() { - int sleeptime = 50;//ms - int adjustBacklightCount = 0; - while ( mAutoBacklight_OnOff_Flag ) { - usleep ( sleeptime * 1000 ); - adjustBacklightCount++; - if (adjustBacklightCount == 24) { - adjustBacklightCount = 0; - adjustDstBacklight(); - } - adjustBacklight(); - } - - return false;//return true, run again, return false,not run. + int sleeptime = 50;//ms + int adjustBacklightCount = 0; + while ( mAutoBacklight_OnOff_Flag ) { + usleep ( sleeptime * 1000 ); + adjustBacklightCount++; + if (adjustBacklightCount == 24) { + adjustBacklightCount = 0; + adjustDstBacklight(); + } + adjustBacklight(); + } + + return false;//return true, run again, return false,not run. } diff --git a/tvapi/libtv/tv/AutoBackLight.h b/tvapi/libtv/tv/AutoBackLight.h index 8ad02b4..c862121 100644 --- a/tvapi/libtv/tv/AutoBackLight.h +++ b/tvapi/libtv/tv/AutoBackLight.h @@ -18,31 +18,31 @@ class AutoBackLight: public CThread { private: - tv_source_input_type_t mAutoBacklightSource; - int mCur_source_default_backlight; - int mCur_sig_state; - bool mAutoBacklight_OnOff_Flag; - int mCurrent_backlight; - int mCur_dest_backlight; + tv_source_input_type_t mAutoBacklightSource; + int mCur_source_default_backlight; + int mCur_sig_state; + bool mAutoBacklight_OnOff_Flag; + int mCurrent_backlight; + int mCur_dest_backlight; - void adjustDstBacklight(); - void adjustBacklight(); - int HistogramGet_AVE(); - bool threadLoop(); + void adjustDstBacklight(); + void adjustBacklight(); + int HistogramGet_AVE(); + bool threadLoop(); public: - enum SIG_STATE { - SIG_STATE_STABLE = 1, - SIG_STATE_NOSIG = 2, - }; - CVpp *myVpp; - CTvin *myTvin; + enum SIG_STATE { + SIG_STATE_STABLE = 1, + SIG_STATE_NOSIG = 2, + }; + CVpp *myVpp; + CTvin *myTvin; - AutoBackLight( CVpp *mVpp, CTvin *pTvin ); - ~AutoBackLight(); - void updateSigState(int state); - void startAutoBacklight( tv_source_input_type_t source_type ); - void stopAutoBacklight(); - bool isAutoBacklightOn(); + AutoBackLight( CVpp *mVpp, CTvin *pTvin ); + ~AutoBackLight(); + void updateSigState(int state); + void startAutoBacklight( tv_source_input_type_t source_type ); + void stopAutoBacklight(); + bool isAutoBacklightOn(); }; #endif diff --git a/tvapi/libtv/tv/CAutoPQparam.cpp b/tvapi/libtv/tv/CAutoPQparam.cpp index 2737c0d..7cdb23f 100644 --- a/tvapi/libtv/tv/CAutoPQparam.cpp +++ b/tvapi/libtv/tv/CAutoPQparam.cpp @@ -24,50 +24,50 @@ CAutoPQparam::CAutoPQparam( CVpp *mVpp, CTvin *pTvin, CAv *mAv) { - myVpp = mVpp; - myTvin = pTvin; - myAv = mAv; - preFmtType = 0; - curFmtType = 0; - autofreq_checkcount = 0; - autofreq_checkflag = 0; - mAutoPQ_OnOff_Flag = false; + myVpp = mVpp; + myTvin = pTvin; + myAv = mAv; + preFmtType = 0; + curFmtType = 0; + autofreq_checkcount = 0; + autofreq_checkflag = 0; + mAutoPQ_OnOff_Flag = false; } CAutoPQparam::~CAutoPQparam() { - mAutoPQ_OnOff_Flag = false; + mAutoPQ_OnOff_Flag = false; } bool CAutoPQparam::isAutoPQing() { - return mAutoPQ_OnOff_Flag; + return mAutoPQ_OnOff_Flag; } void CAutoPQparam::startAutoPQ( tv_source_input_type_t source_type ) { #ifndef CC_PROJECT_DISABLE_AUTO_PQ - mAutoPQSource = source_type; + mAutoPQSource = source_type; - LOGD("---------startAutoPQParameters --------mAutoPQ_OnOff_Flag = %d", mAutoPQ_OnOff_Flag); - if (!mAutoPQ_OnOff_Flag) { - mAutoPQ_OnOff_Flag = true; - this->run(); - } + LOGD("---------startAutoPQParameters --------mAutoPQ_OnOff_Flag = %d", mAutoPQ_OnOff_Flag); + if (!mAutoPQ_OnOff_Flag) { + mAutoPQ_OnOff_Flag = true; + this->run(); + } #else - LOGD("AutoPQparam disable.\n"); + LOGD("AutoPQparam disable.\n"); #endif } void CAutoPQparam::stopAutoPQ() { #ifndef CC_PROJECT_DISABLE_AUTO_PQ - LOGD("---------stopAutoPQParameters -------- mAutoPQ_OnOff_Flag = %d", mAutoPQ_OnOff_Flag); - if (mAutoPQ_OnOff_Flag) { - mAutoPQ_OnOff_Flag = false; - } + LOGD("---------stopAutoPQParameters -------- mAutoPQ_OnOff_Flag = %d", mAutoPQ_OnOff_Flag); + if (mAutoPQ_OnOff_Flag) { + mAutoPQ_OnOff_Flag = false; + } #else - LOGD("AutoPQparam disable.\n"); + LOGD("AutoPQparam disable.\n"); #endif } @@ -78,73 +78,73 @@ TVIN_SIG_FMT_HDMI_3840_2160_00HZ = 0x445 nodeVal>2000 */ int CAutoPQparam::adjustPQparameters() { - int fd = -1; - int nodeVal = 0, ret = 0; - int new_frame_count = 0; - float frame_rate = 0; - float frame_rate_ave = 0; - char s[21]; - char str[10]; - tvin_sig_fmt_e sig_fmt; - is_3d_type_t _3d_type = INDEX_2D; - tvin_trans_fmt trans_fmt = TVIN_TFMT_2D; - - fd = open("/sys/module/amvideo/parameters/new_frame_count", O_RDONLY); - if (fd <= 0) { - LOGE("open /sys/module/amvideo/parameters/new_frame_count ERROR!!error = -%s- \n", strerror ( errno )); - return -1; - } - memset(s, 0, sizeof(s)); - read(fd, s, sizeof(s)); - close(fd); - new_frame_count = atoi(s); - - if (new_frame_count != 0) { - - fd = open("/sys/class/video/frame_height", O_RDONLY); - if (fd <= 0) { - LOGE("open /sys/class/video/frame_height ERROR!!error = -%s- \n", strerror ( errno )); - return -1; - } - memset(s, 0, sizeof(s)); - read(fd, s, sizeof(s)); - close(fd); - nodeVal = atoi(s); - - if (nodeVal <= 576) { - curFmtType = 1; - sig_fmt = TVIN_SIG_FMT_HDMI_720X480P_60HZ; - } else if (nodeVal > 567 && nodeVal <= 1088) { - curFmtType = 2; - sig_fmt = TVIN_SIG_FMT_HDMI_1920X1080P_60HZ; - } else { - curFmtType = 3; - sig_fmt = TVIN_SIG_FMT_HDMI_3840_2160_00HZ; - } - - if (curFmtType != preFmtType) { - LOGD("adjustPQparameters: nodeVal = %d, sig_fmt = %d.", nodeVal, sig_fmt); - ret = myVpp->LoadVppSettings (mAutoPQSource, sig_fmt, _3d_type, trans_fmt); - } - - preFmtType = curFmtType; - - } else { - if (preFmtType != 0 || curFmtType != 0) { - preFmtType = 0; - curFmtType = 0; - } - } - return ret; + int fd = -1; + int nodeVal = 0, ret = 0; + int new_frame_count = 0; + float frame_rate = 0; + float frame_rate_ave = 0; + char s[21]; + char str[10]; + tvin_sig_fmt_e sig_fmt; + is_3d_type_t _3d_type = INDEX_2D; + tvin_trans_fmt trans_fmt = TVIN_TFMT_2D; + + fd = open("/sys/module/amvideo/parameters/new_frame_count", O_RDONLY); + if (fd <= 0) { + LOGE("open /sys/module/amvideo/parameters/new_frame_count ERROR!!error = -%s- \n", strerror ( errno )); + return -1; + } + memset(s, 0, sizeof(s)); + read(fd, s, sizeof(s)); + close(fd); + new_frame_count = atoi(s); + + if (new_frame_count != 0) { + + fd = open("/sys/class/video/frame_height", O_RDONLY); + if (fd <= 0) { + LOGE("open /sys/class/video/frame_height ERROR!!error = -%s- \n", strerror ( errno )); + return -1; + } + memset(s, 0, sizeof(s)); + read(fd, s, sizeof(s)); + close(fd); + nodeVal = atoi(s); + + if (nodeVal <= 576) { + curFmtType = 1; + sig_fmt = TVIN_SIG_FMT_HDMI_720X480P_60HZ; + } else if (nodeVal > 567 && nodeVal <= 1088) { + curFmtType = 2; + sig_fmt = TVIN_SIG_FMT_HDMI_1920X1080P_60HZ; + } else { + curFmtType = 3; + sig_fmt = TVIN_SIG_FMT_HDMI_3840_2160_00HZ; + } + + if (curFmtType != preFmtType) { + LOGD("adjustPQparameters: nodeVal = %d, sig_fmt = %d.", nodeVal, sig_fmt); + ret = myVpp->LoadVppSettings (mAutoPQSource, sig_fmt, _3d_type, trans_fmt); + } + + preFmtType = curFmtType; + + } else { + if (preFmtType != 0 || curFmtType != 0) { + preFmtType = 0; + curFmtType = 0; + } + } + return ret; } bool CAutoPQparam::threadLoop() { - int sleeptime = 1000;//ms - while ( mAutoPQ_OnOff_Flag ) { - usleep ( sleeptime * 1000 ); - adjustPQparameters(); - } + int sleeptime = 1000;//ms + while ( mAutoPQ_OnOff_Flag ) { + usleep ( sleeptime * 1000 ); + adjustPQparameters(); + } - return false;//return true, run again, return false,not run. + return false;//return true, run again, return false,not run. } diff --git a/tvapi/libtv/tv/CAutoPQparam.h b/tvapi/libtv/tv/CAutoPQparam.h index 323694f..8ea696f 100644 --- a/tvapi/libtv/tv/CAutoPQparam.h +++ b/tvapi/libtv/tv/CAutoPQparam.h @@ -20,22 +20,22 @@ class CAutoPQparam: public CThread { private: - tv_source_input_type_t mAutoPQSource; - bool mAutoPQ_OnOff_Flag; - int preFmtType, curFmtType, autofreq_checkcount, autofreq_checkflag; - int adjustPQparameters(); - bool threadLoop(); + tv_source_input_type_t mAutoPQSource; + bool mAutoPQ_OnOff_Flag; + int preFmtType, curFmtType, autofreq_checkcount, autofreq_checkflag; + int adjustPQparameters(); + bool threadLoop(); public: - CVpp *myVpp; - CTvin *myTvin; - CAv *myAv; + CVpp *myVpp; + CTvin *myTvin; + CAv *myAv; - CAutoPQparam( CVpp *mVpp, CTvin *pTvin, CAv *mAV ); - ~CAutoPQparam(); - void startAutoPQ( tv_source_input_type_t source_type ); - void stopAutoPQ(); - bool isAutoPQing(); + CAutoPQparam( CVpp *mVpp, CTvin *pTvin, CAv *mAV ); + ~CAutoPQparam(); + void startAutoPQ( tv_source_input_type_t source_type ); + void stopAutoPQ(); + bool isAutoPQing(); }; #endif diff --git a/tvapi/libtv/tv/CAv.cpp b/tvapi/libtv/tv/CAv.cpp index 904ee3b..54f44e2 100644 --- a/tvapi/libtv/tv/CAv.cpp +++ b/tvapi/libtv/tv/CAv.cpp @@ -11,11 +11,11 @@ #include CAv::CAv() { - mpObserver = NULL; - mTvPlayDevId = 0; - mCurVideoLayerMuteState = -1; - mCurDisableVideoColor = -1; - mFdAmVideo = -1; + mpObserver = NULL; + mTvPlayDevId = 0; + mCurVideoLayerMuteState = -1; + mCurDisableVideoColor = -1; + mFdAmVideo = -1; } CAv::~CAv() { @@ -23,451 +23,451 @@ CAv::~CAv() } int CAv::SetVideoWindow(int x, int y, int w, int h) { - return AM_AV_SetVideoWindow (mTvPlayDevId, x, y, w, h ); + return AM_AV_SetVideoWindow (mTvPlayDevId, x, y, w, h ); } int CAv::Open() { - AM_AV_OpenPara_t para_av; - memset ( ¶_av, 0, sizeof ( AM_AV_OpenPara_t ) ); - int rt = AM_AV_Open ( mTvPlayDevId, ¶_av ); - if ( rt != AM_SUCCESS ) { - LOGD ( "%s, dvbplayer_open fail %d %d\n!" , __FUNCTION__, mTvPlayDevId, rt ); - return -1; - } - - //open audio channle output - AM_AOUT_OpenPara_t aout_para; - memset ( &aout_para, 0, sizeof ( AM_AOUT_OpenPara_t ) ); - rt = AM_AOUT_Open ( 0, &aout_para ); - - if ( AM_SUCCESS != rt ) { - LOGD ( "%s, BUG: CANN'T OPEN AOUT\n", __FUNCTION__); - } - // - mFdAmVideo = open ( PATH_VIDEO_AMVIDEO, O_RDWR ); - if ( mFdAmVideo < 0 ) { - LOGE ( "mFdAmVideo < 0, error(%s)!\n", strerror ( errno ) ); - return -1; - } - /*Register events*/ - AM_EVT_Subscribe ( mTvPlayDevId, AM_AV_EVT_AV_NO_DATA, av_evt_callback, this ); - AM_EVT_Subscribe ( mTvPlayDevId, AM_AV_EVT_AV_DATA_RESUME, av_evt_callback, this ); - AM_EVT_Subscribe ( mTvPlayDevId, AM_AV_EVT_VIDEO_SCAMBLED, av_evt_callback, this ); - AM_EVT_Subscribe ( mTvPlayDevId, AM_AV_EVT_AUDIO_SCAMBLED, av_evt_callback, this ); - AM_EVT_Subscribe ( mTvPlayDevId, AM_AV_EVT_VIDEO_NOT_SUPPORT, av_evt_callback, this ); - - return rt; + AM_AV_OpenPara_t para_av; + memset ( ¶_av, 0, sizeof ( AM_AV_OpenPara_t ) ); + int rt = AM_AV_Open ( mTvPlayDevId, ¶_av ); + if ( rt != AM_SUCCESS ) { + LOGD ( "%s, dvbplayer_open fail %d %d\n!" , __FUNCTION__, mTvPlayDevId, rt ); + return -1; + } + + //open audio channle output + AM_AOUT_OpenPara_t aout_para; + memset ( &aout_para, 0, sizeof ( AM_AOUT_OpenPara_t ) ); + rt = AM_AOUT_Open ( 0, &aout_para ); + + if ( AM_SUCCESS != rt ) { + LOGD ( "%s, BUG: CANN'T OPEN AOUT\n", __FUNCTION__); + } + // + mFdAmVideo = open ( PATH_VIDEO_AMVIDEO, O_RDWR ); + if ( mFdAmVideo < 0 ) { + LOGE ( "mFdAmVideo < 0, error(%s)!\n", strerror ( errno ) ); + return -1; + } + /*Register events*/ + AM_EVT_Subscribe ( mTvPlayDevId, AM_AV_EVT_AV_NO_DATA, av_evt_callback, this ); + AM_EVT_Subscribe ( mTvPlayDevId, AM_AV_EVT_AV_DATA_RESUME, av_evt_callback, this ); + AM_EVT_Subscribe ( mTvPlayDevId, AM_AV_EVT_VIDEO_SCAMBLED, av_evt_callback, this ); + AM_EVT_Subscribe ( mTvPlayDevId, AM_AV_EVT_AUDIO_SCAMBLED, av_evt_callback, this ); + AM_EVT_Subscribe ( mTvPlayDevId, AM_AV_EVT_VIDEO_NOT_SUPPORT, av_evt_callback, this ); + + return rt; } int CAv::Close() { - int iRet; - iRet = AM_AV_Close ( mTvPlayDevId ); - iRet = AM_AOUT_Close ( mTvPlayDevId ); - if (mFdAmVideo > 0) { - close(mFdAmVideo); - mFdAmVideo = -1; - } - return iRet; + int iRet; + iRet = AM_AV_Close ( mTvPlayDevId ); + iRet = AM_AOUT_Close ( mTvPlayDevId ); + if (mFdAmVideo > 0) { + close(mFdAmVideo); + mFdAmVideo = -1; + } + return iRet; } int CAv::GetVideoStatus(AM_AV_VideoStatus_t *status) { - return AM_AV_GetVideoStatus(mTvPlayDevId, status); + return AM_AV_GetVideoStatus(mTvPlayDevId, status); } int CAv::SwitchTSAudio(int apid, AM_AV_AFormat_t afmt) { - return AM_AV_SwitchTSAudio (mTvPlayDevId, ( uint16_t ) apid, ( AM_AV_AFormat_t ) afmt ); + return AM_AV_SwitchTSAudio (mTvPlayDevId, ( uint16_t ) apid, ( AM_AV_AFormat_t ) afmt ); } int CAv::ResetAudioDecoder() { - return AM_AV_ResetAudioDecoder ( mTvPlayDevId ); + return AM_AV_ResetAudioDecoder ( mTvPlayDevId ); } int CAv::SetTSSource(AM_AV_TSSource_t ts_source) { - return AM_AV_SetTSSource ( mTvPlayDevId, ts_source ); + return AM_AV_SetTSSource ( mTvPlayDevId, ts_source ); } int CAv::StartTS(uint16_t vpid, uint16_t apid, AM_AV_VFormat_t vfmt, AM_AV_AFormat_t afmt) { - return AM_AV_StartTS ( mTvPlayDevId, vpid, apid, ( AM_AV_VFormat_t ) vfmt, ( AM_AV_AFormat_t ) afmt ); + return AM_AV_StartTS ( mTvPlayDevId, vpid, apid, ( AM_AV_VFormat_t ) vfmt, ( AM_AV_AFormat_t ) afmt ); } int CAv::StopTS() { - return AM_AV_StopTS (mTvPlayDevId); + return AM_AV_StopTS (mTvPlayDevId); } int CAv::AudioGetOutputMode(AM_AOUT_OutputMode_t *mode) { - return AM_AOUT_GetOutputMode ( 0, mode ); + return AM_AOUT_GetOutputMode ( 0, mode ); } int CAv::AudioSetOutputMode(AM_AOUT_OutputMode_t mode) { - return AM_AOUT_SetOutputMode ( 0, mode ); + return AM_AOUT_SetOutputMode ( 0, mode ); } int CAv::EnableVideoBlackout() { - return AM_AV_EnableVideoBlackout(mTvPlayDevId); + return AM_AV_EnableVideoBlackout(mTvPlayDevId); } int CAv::DisableVideoBlackout() { - return AM_AV_DisableVideoBlackout(mTvPlayDevId); + return AM_AV_DisableVideoBlackout(mTvPlayDevId); } int CAv::DisableVideoWithBlueColor() { - LOGD("DisableVideoWithBlueColor"); - if (mCurVideoLayerMuteState == 1 && mCurDisableVideoColor == DISABLE_VIDEO_COLOR_BLUE) { - LOGD("video is disable with blue, return"); - return 0; - } - mCurVideoLayerMuteState = 1; - mCurDisableVideoColor = DISABLE_VIDEO_COLOR_BLUE; - SetVideoScreenColor ( 0, 41, 240, 110 ); // Show blue with vdin0, postblending disabled - return AM_AV_DisableVideo(mTvPlayDevId); + LOGD("DisableVideoWithBlueColor"); + if (mCurVideoLayerMuteState == 1 && mCurDisableVideoColor == DISABLE_VIDEO_COLOR_BLUE) { + LOGD("video is disable with blue, return"); + return 0; + } + mCurVideoLayerMuteState = 1; + mCurDisableVideoColor = DISABLE_VIDEO_COLOR_BLUE; + SetVideoScreenColor ( 0, 41, 240, 110 ); // Show blue with vdin0, postblending disabled + return AM_AV_DisableVideo(mTvPlayDevId); } int CAv::DisableVideoWithBlackColor() { - LOGD("DisableVideoWithBlackColor"); - if (mCurVideoLayerMuteState == 1 && mCurDisableVideoColor == DISABLE_VIDEO_COLOR_BLACK) { - LOGD("video is disable with black, return"); - return 0; - } - mCurDisableVideoColor = DISABLE_VIDEO_COLOR_BLACK; - mCurVideoLayerMuteState = 1; - SetVideoScreenColor ( 0, 16, 128, 128 ); // Show blue with vdin0, postblending disabled - return AM_AV_DisableVideo(mTvPlayDevId); + LOGD("DisableVideoWithBlackColor"); + if (mCurVideoLayerMuteState == 1 && mCurDisableVideoColor == DISABLE_VIDEO_COLOR_BLACK) { + LOGD("video is disable with black, return"); + return 0; + } + mCurDisableVideoColor = DISABLE_VIDEO_COLOR_BLACK; + mCurVideoLayerMuteState = 1; + SetVideoScreenColor ( 0, 16, 128, 128 ); // Show blue with vdin0, postblending disabled + return AM_AV_DisableVideo(mTvPlayDevId); } //auto enable, int CAv::EnableVideoAuto() { - LOGD("EnableVideo"); - if (mCurVideoLayerMuteState == 0) { - LOGD("video is enable, return"); - return 0; - } - mCurVideoLayerMuteState = 0; - SetVideoScreenColor ( 0, 16, 128, 128 ); // Show black with vdin0, postblending disabled - ClearVideoBuffer();//disable video 2 - return 0; + LOGD("EnableVideo"); + if (mCurVideoLayerMuteState == 0) { + LOGD("video is enable, return"); + return 0; + } + mCurVideoLayerMuteState = 0; + SetVideoScreenColor ( 0, 16, 128, 128 ); // Show black with vdin0, postblending disabled + ClearVideoBuffer();//disable video 2 + return 0; } //just enable video int CAv::EnableVideoNow() { - LOGD("EnableVideoNow"); - const char *config_value = NULL; - if (mCurVideoLayerMuteState == 0) { - LOGD("video is enable, return"); - return 0; - } - mCurVideoLayerMuteState = 0; - config_value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); - if ( strcmp ( config_value, "black" ) == 0 ) { - } else { - SetVideoScreenColor ( 0, 16, 128, 128 ); // Show blue with vdin0, postblending disabled - } - return AM_AV_EnableVideo(mTvPlayDevId); + LOGD("EnableVideoNow"); + const char *config_value = NULL; + if (mCurVideoLayerMuteState == 0) { + LOGD("video is enable, return"); + return 0; + } + mCurVideoLayerMuteState = 0; + config_value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); + if ( strcmp ( config_value, "black" ) == 0 ) { + } else { + SetVideoScreenColor ( 0, 16, 128, 128 ); // Show blue with vdin0, postblending disabled + } + return AM_AV_EnableVideo(mTvPlayDevId); } int CAv::WaittingVideoPlaying(int minFrameCount , int waitTime ) { - //EnableVideoNow(); - static const int COUNT_FOR_TIME = 20; - int times = waitTime / COUNT_FOR_TIME; - int ret = -1; - int i = 0; - for (i = 0; i < times; i++) { - if (videoIsPlaying(minFrameCount)) { - ret = 0; - break; - } - } - if (i == times) { - LOGD("EnableVideoWhenVideoPlaying time out!!!!!!!!!!!!!"); - ret = -2; - } - return ret; + //EnableVideoNow(); + static const int COUNT_FOR_TIME = 20; + int times = waitTime / COUNT_FOR_TIME; + int ret = -1; + int i = 0; + for (i = 0; i < times; i++) { + if (videoIsPlaying(minFrameCount)) { + ret = 0; + break; + } + } + if (i == times) { + LOGD("EnableVideoWhenVideoPlaying time out!!!!!!!!!!!!!"); + ret = -2; + } + return ret; } int CAv::EnableVideoWhenVideoPlaying(int minFrameCount, int waitTime) { - int ret = WaittingVideoPlaying(minFrameCount, waitTime); - if (ret == 0) { //ok to playing - EnableVideoNow(); - } - return ret; + int ret = WaittingVideoPlaying(minFrameCount, waitTime); + if (ret == 0) { //ok to playing + EnableVideoNow(); + } + return ret; } bool CAv::videoIsPlaying(int minFrameCount) { - int value[3]; - value[0] = getVideoFrameCount(); - usleep(20 * 1000); - value[1] = getVideoFrameCount(); - //usleep(20*1000); - //value[2] = getVideoFrameCount(); - LOGD("---videoIsPlaying framecount =%d = %d = %d", value[0], value[1], value[2]); - if (value[1] >= minFrameCount && (value[1] > value[0])) return true; - else return false; + int value[3]; + value[0] = getVideoFrameCount(); + usleep(20 * 1000); + value[1] = getVideoFrameCount(); + //usleep(20*1000); + //value[2] = getVideoFrameCount(); + LOGD("---videoIsPlaying framecount =%d = %d = %d", value[0], value[1], value[2]); + if (value[1] >= minFrameCount && (value[1] > value[0])) return true; + else return false; } int CAv::getVideoFrameCount() { - char buf[32]; - int fd = -1; - fd = open(PATH_FRAME_COUNT, O_RDWR); - if (fd < 0) { - LOGW("Open %s error(%s)!\n", PATH_FRAME_COUNT, strerror(errno)); - return -1; - } - read(fd, buf, sizeof(buf)); - int value = 0; - sscanf ( buf, "%d", &value ); - close ( fd ); - return value; + char buf[32]; + int fd = -1; + fd = open(PATH_FRAME_COUNT, O_RDWR); + if (fd < 0) { + LOGW("Open %s error(%s)!\n", PATH_FRAME_COUNT, strerror(errno)); + return -1; + } + read(fd, buf, sizeof(buf)); + int value = 0; + sscanf ( buf, "%d", &value ); + close ( fd ); + return value; } tvin_sig_fmt_t CAv::getVideoResolutionToFmt() { - tvin_sig_fmt_e sig_fmt = TVIN_SIG_FMT_HDMI_1920X1080P_60HZ; - int height = CFile::getFileAttrValue(PATH_VIDEO_HEIGHT); - LOGD("---------getVideoResolutionToFmt -------- height = %d", height); - if (height <= 576) { - sig_fmt = TVIN_SIG_FMT_HDMI_720X480P_60HZ; - } else if (height >576 && height <= 1088) { - sig_fmt = TVIN_SIG_FMT_HDMI_1920X1080P_60HZ; - } else { - sig_fmt = TVIN_SIG_FMT_HDMI_3840_2160_00HZ; - } - return sig_fmt; + tvin_sig_fmt_e sig_fmt = TVIN_SIG_FMT_HDMI_1920X1080P_60HZ; + int height = CFile::getFileAttrValue(PATH_VIDEO_HEIGHT); + LOGD("---------getVideoResolutionToFmt -------- height = %d", height); + if (height <= 576) { + sig_fmt = TVIN_SIG_FMT_HDMI_720X480P_60HZ; + } else if (height > 576 && height <= 1088) { + sig_fmt = TVIN_SIG_FMT_HDMI_1920X1080P_60HZ; + } else { + sig_fmt = TVIN_SIG_FMT_HDMI_3840_2160_00HZ; + } + return sig_fmt; } //call disable video 2 int CAv::ClearVideoBuffer() { - LOGD("ClearVideoBuffer"); - return AM_AV_ClearVideoBuffer(mTvPlayDevId); + LOGD("ClearVideoBuffer"); + return AM_AV_ClearVideoBuffer(mTvPlayDevId); } int CAv::SetVideoScreenColor ( int vdin_blending_mask, int y, int u, int v ) { - FILE *fp = NULL; - unsigned long value = 0; + FILE *fp = NULL; + unsigned long value = 0; - value = vdin_blending_mask << 24; + value = vdin_blending_mask << 24; - value |= ( unsigned int ) ( y << 16 ) | ( unsigned int ) ( u << 8 ) | ( unsigned int ) ( v ); + value |= ( unsigned int ) ( y << 16 ) | ( unsigned int ) ( u << 8 ) | ( unsigned int ) ( v ); - fp = fopen ( "/sys/class/video/test_screen", "w" ); - LOGD ( "~~~fopen~~~##VPP_SetVideoScreenColor##%s : vdin_blending_mask:%d,y:%d,u:%d,v:%d ##" , "/sys/class/video/test_screen", vdin_blending_mask, y, u, v); + fp = fopen ( "/sys/class/video/test_screen", "w" ); + LOGD ( "~~~fopen~~~##VPP_SetVideoScreenColor##%s : vdin_blending_mask:%d,y:%d,u:%d,v:%d ##" , "/sys/class/video/test_screen", vdin_blending_mask, y, u, v); - if ( fp == NULL ) { - LOGE ( "Open /sys/class/video/test_screen error(%s)!\n", strerror ( errno ) ); - return -1; - } + if ( fp == NULL ) { + LOGE ( "Open /sys/class/video/test_screen error(%s)!\n", strerror ( errno ) ); + return -1; + } - fprintf ( fp, "0x%lx", ( unsigned long ) value ); + fprintf ( fp, "0x%lx", ( unsigned long ) value ); - fclose ( fp ); - fp = NULL; + fclose ( fp ); + fp = NULL; - return 0; + return 0; } int CAv::getVideoDisableValue() { - LOGD("this fun is empty!!!!!!!!"); - return 0; + LOGD("this fun is empty!!!!!!!!"); + return 0; } int CAv::SetVideoLayerDisable ( int value ) { - FILE *fp = NULL; + FILE *fp = NULL; - fp = fopen ( "/sys/class/video/disable_video", "w" ); - LOGD ( "~~~fopen~~~##VPP_SetVideoLayerDisable##%s : %d ##" , "/sys/class/video/disable_video", value); + fp = fopen ( "/sys/class/video/disable_video", "w" ); + LOGD ( "~~~fopen~~~##VPP_SetVideoLayerDisable##%s : %d ##" , "/sys/class/video/disable_video", value); - if ( fp == NULL ) { - LOGE ( "Open /sys/class/video/disable_video error(%s)!\n", strerror ( errno ) ); - return -1; - } + if ( fp == NULL ) { + LOGE ( "Open /sys/class/video/disable_video error(%s)!\n", strerror ( errno ) ); + return -1; + } - fprintf ( fp, "%d", value ); + fprintf ( fp, "%d", value ); - fclose ( fp ); - fp = NULL; + fclose ( fp ); + fp = NULL; - return 0; + return 0; } int CAv::setVideoScreenMode ( int value ) { - FILE *fp = fopen ( "/sys/class/video/screen_mode", "w" ); - LOGD ( "setVideoScreenMode %d ##" , value); - if ( fp == NULL ) { - LOGE ( "Open /sys/class/video/screen_mode error(%s)!\n", strerror ( errno ) ); - return -1; - } - fprintf ( fp, "%d", value ); - fclose ( fp ); - return 0; + FILE *fp = fopen ( "/sys/class/video/screen_mode", "w" ); + LOGD ( "setVideoScreenMode %d ##" , value); + if ( fp == NULL ) { + LOGE ( "Open /sys/class/video/screen_mode error(%s)!\n", strerror ( errno ) ); + return -1; + } + fprintf ( fp, "%d", value ); + fclose ( fp ); + return 0; } int CAv::setVideoAxis ( int h, int v, int width, int height ) { - FILE *fp = NULL; - fp = fopen ( "/sys/class/video/axis", "w" ); - LOGD ( "setVideoAxis##%s : %d %d %d %d ##" , "/sys/class/video/axis", h, v, width, height); + FILE *fp = NULL; + fp = fopen ( "/sys/class/video/axis", "w" ); + LOGD ( "setVideoAxis##%s : %d %d %d %d ##" , "/sys/class/video/axis", h, v, width, height); - if ( fp == NULL ) { - LOGE ( "Open /sys/class/video/axis ERROR(%s)!!\n", strerror ( errno ) ); - return -1; - } - fprintf ( fp, "%d %d %d %d", h, v, width, height ); - fclose ( fp ); - return 0; + if ( fp == NULL ) { + LOGE ( "Open /sys/class/video/axis ERROR(%s)!!\n", strerror ( errno ) ); + return -1; + } + fprintf ( fp, "%d %d %d %d", h, v, width, height ); + fclose ( fp ); + return 0; } int CAv::getVideoScreenMode() { - int value; - FILE *fp = fopen ( "/sys/class/video/screen_mode", "r+" ); + int value; + FILE *fp = fopen ( "/sys/class/video/screen_mode", "r+" ); - if ( fp == NULL ) { - LOGE ( "Open /sys/class/video/screen_mode error(%s)!\n", strerror ( errno ) ); - return -1; - } - fscanf ( fp, "%d", &value ); - fclose ( fp ); - return value; + if ( fp == NULL ) { + LOGE ( "Open /sys/class/video/screen_mode error(%s)!\n", strerror ( errno ) ); + return -1; + } + fscanf ( fp, "%d", &value ); + fclose ( fp ); + return value; } video_display_resolution_t CAv::getVideoDisplayResolution() { - char attrV[64]; - memset (attrV, 0x0, 64); - Tv_Utils_GetFileAttrStr ( "/sys/class/video/device_resolution", 64, attrV ); - video_display_resolution_t resolution; - if (strncasecmp(attrV, "1366x768", strlen ("1366x768")) == 0) { - resolution = VPP_DISPLAY_RESOLUTION_1366X768; - } else if (strncasecmp(attrV, "3840x2160", strlen ("3840x2160")) == 0) { - resolution = VPP_DISPLAY_RESOLUTION_3840X2160; - } else if (strncasecmp(attrV, "1920x1080", strlen ("1920x1080")) == 0) { - resolution = VPP_DISPLAY_RESOLUTION_1920X1080; - } else { - LOGW("video display resolution is = (%s) not define , default it", attrV); - resolution = VPP_DISPLAY_RESOLUTION_1920X1080; - } + char attrV[64]; + memset (attrV, 0x0, 64); + Tv_Utils_GetFileAttrStr ( "/sys/class/video/device_resolution", 64, attrV ); + video_display_resolution_t resolution; + if (strncasecmp(attrV, "1366x768", strlen ("1366x768")) == 0) { + resolution = VPP_DISPLAY_RESOLUTION_1366X768; + } else if (strncasecmp(attrV, "3840x2160", strlen ("3840x2160")) == 0) { + resolution = VPP_DISPLAY_RESOLUTION_3840X2160; + } else if (strncasecmp(attrV, "1920x1080", strlen ("1920x1080")) == 0) { + resolution = VPP_DISPLAY_RESOLUTION_1920X1080; + } else { + LOGW("video display resolution is = (%s) not define , default it", attrV); + resolution = VPP_DISPLAY_RESOLUTION_1920X1080; + } - return resolution; + return resolution; } void CAv::av_evt_callback ( long dev_no, int event_type, void *param, void *user_data ) { - CAv *pAv = ( CAv * ) user_data; - if (NULL == pAv ) { - LOGD ( "%s, ERROR : av_evt_callback NULL == pTv\n", __FUNCTION__ ); - return ; - } - if ( pAv->mpObserver == NULL ) { - LOGD ( "%s, ERROR : mpObserver NULL == mpObserver\n", __FUNCTION__ ); - return; - } - switch ( event_type ) { - case AM_AV_EVT_AV_NO_DATA: - pAv->mCurAvEvent.type = AVEvent::EVENT_AV_STOP; - pAv->mCurAvEvent.param = ( int )param; - pAv->mpObserver->onEvent(pAv->mCurAvEvent); - break; - case AM_AV_EVT_AV_DATA_RESUME: - pAv->mCurAvEvent.type = AVEvent::EVENT_AV_RESUEM; - pAv->mCurAvEvent.param = ( int )param; - pAv->mpObserver->onEvent(pAv->mCurAvEvent); - break; - case AM_AV_EVT_VIDEO_SCAMBLED: - case AM_AV_EVT_AUDIO_SCAMBLED: - pAv->mCurAvEvent.type = AVEvent::EVENT_AV_SCAMBLED; - pAv->mCurAvEvent.param = ( int )param; - pAv->mpObserver->onEvent(pAv->mCurAvEvent); - break; - case AM_AV_EVT_VIDEO_NOT_SUPPORT: { - pAv->mCurAvEvent.type = AVEvent::EVENT_AV_UNSUPPORT; - pAv->mCurAvEvent.param = ( int )param; - pAv->mpObserver->onEvent(pAv->mCurAvEvent); - break; - } - default: - break; - } - LOGD ( "%s, av_evt_callback : dev_no %d type %d param = %d\n", __FUNCTION__, dev_no, pAv->mCurAvEvent.type , (int)param); + CAv *pAv = ( CAv * ) user_data; + if (NULL == pAv ) { + LOGD ( "%s, ERROR : av_evt_callback NULL == pTv\n", __FUNCTION__ ); + return ; + } + if ( pAv->mpObserver == NULL ) { + LOGD ( "%s, ERROR : mpObserver NULL == mpObserver\n", __FUNCTION__ ); + return; + } + switch ( event_type ) { + case AM_AV_EVT_AV_NO_DATA: + pAv->mCurAvEvent.type = AVEvent::EVENT_AV_STOP; + pAv->mCurAvEvent.param = ( int )param; + pAv->mpObserver->onEvent(pAv->mCurAvEvent); + break; + case AM_AV_EVT_AV_DATA_RESUME: + pAv->mCurAvEvent.type = AVEvent::EVENT_AV_RESUEM; + pAv->mCurAvEvent.param = ( int )param; + pAv->mpObserver->onEvent(pAv->mCurAvEvent); + break; + case AM_AV_EVT_VIDEO_SCAMBLED: + case AM_AV_EVT_AUDIO_SCAMBLED: + pAv->mCurAvEvent.type = AVEvent::EVENT_AV_SCAMBLED; + pAv->mCurAvEvent.param = ( int )param; + pAv->mpObserver->onEvent(pAv->mCurAvEvent); + break; + case AM_AV_EVT_VIDEO_NOT_SUPPORT: { + pAv->mCurAvEvent.type = AVEvent::EVENT_AV_UNSUPPORT; + pAv->mCurAvEvent.param = ( int )param; + pAv->mpObserver->onEvent(pAv->mCurAvEvent); + break; + } + default: + break; + } + LOGD ( "%s, av_evt_callback : dev_no %d type %d param = %d\n", __FUNCTION__, dev_no, pAv->mCurAvEvent.type , (int)param); } int CAv::set3DMode(VIDEO_3D_MODE_T mode, int LR_switch, int mode_3D_TO_2D) { - unsigned int cmd = MODE_3D_DISABLE; - switch (mode) { - case VIDEO_3D_MODE_DISABLE: - cmd = MODE_3D_DISABLE; - break; - case VIDEO_3D_MODE_AUTO: - cmd = MODE_3D_ENABLE | MODE_3D_AUTO; - break; - case VIDEO_3D_MODE_LR: - cmd = MODE_3D_ENABLE | MODE_3D_LR; - break; - case VIDEO_3D_MODE_TB: - cmd = MODE_3D_ENABLE | MODE_3D_TB; - break; - case VIDEO_3D_MODE_LA: - cmd = MODE_3D_ENABLE | MODE_3D_LA; - break; - case VIDEO_3D_MODE_FA: - cmd = MODE_3D_ENABLE | MODE_3D_FA; - break; - default: - cmd = MODE_3D_DISABLE; - break; - } - - if (LR_switch == 1) { - cmd = cmd | MODE_3D_LR_SWITCH; - } - - if (mode_3D_TO_2D == 1) { - cmd = cmd | MODE_3D_TO_2D_L; - } - - if (mode_3D_TO_2D == 2) { - cmd = cmd | MODE_3D_TO_2D_R; - } - LOGD("set 3d mode fd = %d cmd = 0x%x", mFdAmVideo, cmd); - int ret = ioctl(mFdAmVideo, AMSTREAM_IOC_SET_3D_TYPE , cmd); - if (ret < 0) { - LOGE("set3DMode error ( %s )", strerror ( errno )); - } - return 0; + unsigned int cmd = MODE_3D_DISABLE; + switch (mode) { + case VIDEO_3D_MODE_DISABLE: + cmd = MODE_3D_DISABLE; + break; + case VIDEO_3D_MODE_AUTO: + cmd = MODE_3D_ENABLE | MODE_3D_AUTO; + break; + case VIDEO_3D_MODE_LR: + cmd = MODE_3D_ENABLE | MODE_3D_LR; + break; + case VIDEO_3D_MODE_TB: + cmd = MODE_3D_ENABLE | MODE_3D_TB; + break; + case VIDEO_3D_MODE_LA: + cmd = MODE_3D_ENABLE | MODE_3D_LA; + break; + case VIDEO_3D_MODE_FA: + cmd = MODE_3D_ENABLE | MODE_3D_FA; + break; + default: + cmd = MODE_3D_DISABLE; + break; + } + + if (LR_switch == 1) { + cmd = cmd | MODE_3D_LR_SWITCH; + } + + if (mode_3D_TO_2D == 1) { + cmd = cmd | MODE_3D_TO_2D_L; + } + + if (mode_3D_TO_2D == 2) { + cmd = cmd | MODE_3D_TO_2D_R; + } + LOGD("set 3d mode fd = %d cmd = 0x%x", mFdAmVideo, cmd); + int ret = ioctl(mFdAmVideo, AMSTREAM_IOC_SET_3D_TYPE , cmd); + if (ret < 0) { + LOGE("set3DMode error ( %s )", strerror ( errno )); + } + return 0; } int CAv::setLookupPtsForDtmb(int enable) { - FILE *fp = fopen ( PATH_MEPG_DTMB_LOOKUP_PTS_FLAG, "w" ); - LOGD ( "setLookupPtsForDtmb %d ##" , enable); - if ( fp == NULL ) { - LOGE ( "Open %s error(%s)!\n", PATH_MEPG_DTMB_LOOKUP_PTS_FLAG, strerror ( errno ) ); - return -1; - } - fprintf ( fp, "%d", enable ); - fclose ( fp ); - return 0; + FILE *fp = fopen ( PATH_MEPG_DTMB_LOOKUP_PTS_FLAG, "w" ); + LOGD ( "setLookupPtsForDtmb %d ##" , enable); + if ( fp == NULL ) { + LOGE ( "Open %s error(%s)!\n", PATH_MEPG_DTMB_LOOKUP_PTS_FLAG, strerror ( errno ) ); + return -1; + } + fprintf ( fp, "%d", enable ); + fclose ( fp ); + return 0; } diff --git a/tvapi/libtv/tv/CAv.h b/tvapi/libtv/tv/CAv.h index 04a3cc9..b95b490 100644 --- a/tvapi/libtv/tv/CAv.h +++ b/tvapi/libtv/tv/CAv.h @@ -41,114 +41,114 @@ static const char *PATH_VIDEO_HEIGHT = "/sys/class/video/frame_height"; typedef enum VIDEO_3D_MODE_E { - VIDEO_3D_MODE_DISABLE, - VIDEO_3D_MODE_AUTO, - VIDEO_3D_MODE_LR, - VIDEO_3D_MODE_TB, - VIDEO_3D_MODE_LA, - VIDEO_3D_MODE_FA + VIDEO_3D_MODE_DISABLE, + VIDEO_3D_MODE_AUTO, + VIDEO_3D_MODE_LR, + VIDEO_3D_MODE_TB, + VIDEO_3D_MODE_LA, + VIDEO_3D_MODE_FA } VIDEO_3D_MODE_T; //end 3D=================================================================== typedef enum video_display_resolution_e { - VPP_DISPLAY_RESOLUTION_1366X768, - VPP_DISPLAY_RESOLUTION_1920X1080, - VPP_DISPLAY_RESOLUTION_3840X2160, - VPP_DISPLAY_RESOLUTION_MAX, + VPP_DISPLAY_RESOLUTION_1366X768, + VPP_DISPLAY_RESOLUTION_1920X1080, + VPP_DISPLAY_RESOLUTION_3840X2160, + VPP_DISPLAY_RESOLUTION_MAX, } video_display_resolution_t; class CAv { public: - CAv(); - ~CAv(); - //video screen_mode - static const int VIDEO_WIDEOPTION_NORMAL = 0; - static const int VIDEO_WIDEOPTION_FULL_STRETCH = 1; - static const int VIDEO_WIDEOPTION_4_3 = 2; - static const int VIDEO_WIDEOPTION_16_9 = 3; - static const int VIDEO_WIDEOPTION_NONLINEAR = 4; - static const int VIDEO_WIDEOPTION_NORMAL_NOSCALEUP = 5; - static const int VIDEO_WIDEOPTION_CROP_FULL = 6; - static const int VIDEO_WIDEOPTION_CROP = 7; - // - static const int DISABLE_VIDEO_COLOR_BLUE = 1; - static const int DISABLE_VIDEO_COLOR_BLACK = 2; - class AVEvent : public CTvEv { - public: - AVEvent(): CTvEv(CTvEv::TV_EVENT_AV) - { + CAv(); + ~CAv(); + //video screen_mode + static const int VIDEO_WIDEOPTION_NORMAL = 0; + static const int VIDEO_WIDEOPTION_FULL_STRETCH = 1; + static const int VIDEO_WIDEOPTION_4_3 = 2; + static const int VIDEO_WIDEOPTION_16_9 = 3; + static const int VIDEO_WIDEOPTION_NONLINEAR = 4; + static const int VIDEO_WIDEOPTION_NORMAL_NOSCALEUP = 5; + static const int VIDEO_WIDEOPTION_CROP_FULL = 6; + static const int VIDEO_WIDEOPTION_CROP = 7; + // + static const int DISABLE_VIDEO_COLOR_BLUE = 1; + static const int DISABLE_VIDEO_COLOR_BLACK = 2; + class AVEvent : public CTvEv { + public: + AVEvent(): CTvEv(CTvEv::TV_EVENT_AV) + { - }; - ~AVEvent() - {}; - static const int EVENT_AV_STOP = 1; - static const int EVENT_AV_RESUEM = 2; - static const int EVENT_AV_SCAMBLED = 3; - static const int EVENT_AV_UNSUPPORT = 4; - int type; - int param; - }; + }; + ~AVEvent() + {}; + static const int EVENT_AV_STOP = 1; + static const int EVENT_AV_RESUEM = 2; + static const int EVENT_AV_SCAMBLED = 3; + static const int EVENT_AV_UNSUPPORT = 4; + int type; + int param; + }; - class IObserver { - public: - IObserver() {}; - virtual ~IObserver() {}; - virtual void onEvent(const AVEvent &ev) = 0; - }; - //1 VS n - //int addObserver(IObserver* ob); - //int removeObserver(IObserver* ob); + class IObserver { + public: + IObserver() {}; + virtual ~IObserver() {}; + virtual void onEvent(const AVEvent &ev) = 0; + }; + //1 VS n + //int addObserver(IObserver* ob); + //int removeObserver(IObserver* ob); - //1 VS 1 - int setObserver(IObserver *ob) - { - mpObserver = ob; - return 0; - } + //1 VS 1 + int setObserver(IObserver *ob) + { + mpObserver = ob; + return 0; + } - int Open(); - int Close(); - int SetVideoWindow(int x, int y, int w, int h); - int GetVideoStatus(AM_AV_VideoStatus_t *status); - int SwitchTSAudio(int apid, AM_AV_AFormat_t afmt); - int ResetAudioDecoder(); - int SetTSSource(AM_AV_TSSource_t ts_source); - int StartTS(uint16_t vpid, uint16_t apid, AM_AV_VFormat_t vfmt, AM_AV_AFormat_t afmt); - int StopTS(); - int AudioGetOutputMode(AM_AOUT_OutputMode_t *mode); - int AudioSetOutputMode(AM_AOUT_OutputMode_t mode); - int SetVideoScreenColor (int vdin_blending_mask, int y, int u, int v); - int DisableVideoWithBlueColor(); - int DisableVideoWithBlackColor(); - int EnableVideoAuto(); - int EnableVideoNow(); - int EnableVideoWhenVideoPlaying(int minFrameCount = 8, int waitTime = 5000); - int WaittingVideoPlaying(int minFrameCount = 8, int waitTime = 5000); - int EnableVideoBlackout(); - int DisableVideoBlackout(); - int getVideoDisableValue(); - int SetVideoLayerDisable ( int value ); - int ClearVideoBuffer(); - bool videoIsPlaying(int minFrameCount = 8); - int setVideoScreenMode ( int value ); - int getVideoScreenMode(); - int setVideoAxis ( int h, int v, int width, int height ); - video_display_resolution_t getVideoDisplayResolution(); - //LR_switch: 1 is enable, 3D_TO_2D:1 is L , 2 is R - int set3DMode(VIDEO_3D_MODE_T mode, int LR_switch, int mode_3D_TO_2D); - // - int setLookupPtsForDtmb(int enable); - tvin_sig_fmt_t getVideoResolutionToFmt(); + int Open(); + int Close(); + int SetVideoWindow(int x, int y, int w, int h); + int GetVideoStatus(AM_AV_VideoStatus_t *status); + int SwitchTSAudio(int apid, AM_AV_AFormat_t afmt); + int ResetAudioDecoder(); + int SetTSSource(AM_AV_TSSource_t ts_source); + int StartTS(uint16_t vpid, uint16_t apid, AM_AV_VFormat_t vfmt, AM_AV_AFormat_t afmt); + int StopTS(); + int AudioGetOutputMode(AM_AOUT_OutputMode_t *mode); + int AudioSetOutputMode(AM_AOUT_OutputMode_t mode); + int SetVideoScreenColor (int vdin_blending_mask, int y, int u, int v); + int DisableVideoWithBlueColor(); + int DisableVideoWithBlackColor(); + int EnableVideoAuto(); + int EnableVideoNow(); + int EnableVideoWhenVideoPlaying(int minFrameCount = 8, int waitTime = 5000); + int WaittingVideoPlaying(int minFrameCount = 8, int waitTime = 5000); + int EnableVideoBlackout(); + int DisableVideoBlackout(); + int getVideoDisableValue(); + int SetVideoLayerDisable ( int value ); + int ClearVideoBuffer(); + bool videoIsPlaying(int minFrameCount = 8); + int setVideoScreenMode ( int value ); + int getVideoScreenMode(); + int setVideoAxis ( int h, int v, int width, int height ); + video_display_resolution_t getVideoDisplayResolution(); + //LR_switch: 1 is enable, 3D_TO_2D:1 is L , 2 is R + int set3DMode(VIDEO_3D_MODE_T mode, int LR_switch, int mode_3D_TO_2D); + // + int setLookupPtsForDtmb(int enable); + tvin_sig_fmt_t getVideoResolutionToFmt(); private: - static void av_evt_callback ( long dev_no, int event_type, void *param, void *user_data ); - int getVideoFrameCount(); - int mTvPlayDevId; - IObserver *mpObserver; - AVEvent mCurAvEvent; - int mCurVideoLayerMuteState; - int mCurDisableVideoColor; + static void av_evt_callback ( long dev_no, int event_type, void *param, void *user_data ); + int getVideoFrameCount(); + int mTvPlayDevId; + IObserver *mpObserver; + AVEvent mCurAvEvent; + int mCurVideoLayerMuteState; + int mCurDisableVideoColor; - int mFdAmVideo; + int mFdAmVideo; }; #endif diff --git a/tvapi/libtv/tv/CFbcCommunication.cpp b/tvapi/libtv/tv/CFbcCommunication.cpp index 0318d77..1e4749d 100644 --- a/tvapi/libtv/tv/CFbcCommunication.cpp +++ b/tvapi/libtv/tv/CFbcCommunication.cpp @@ -8,180 +8,180 @@ static CFbcCommunication *gSingletonFBC = NULL; CFbcCommunication *GetSingletonFBC() { - if (gSingletonFBC == NULL) { - gSingletonFBC = new CFbcCommunication(); - gSingletonFBC->start(); - } + if (gSingletonFBC == NULL) { + gSingletonFBC = new CFbcCommunication(); + gSingletonFBC->start(); + } - return gSingletonFBC; + return gSingletonFBC; } CFbcCommunication::CFbcCommunication() { - initCrc32Table(); + initCrc32Table(); - m_event.data.fd = -1; - m_event.events = EPOLLIN | EPOLLET; + m_event.data.fd = -1; + m_event.events = EPOLLIN | EPOLLET; - mpRevDataBuf = new unsigned char[512]; + mpRevDataBuf = new unsigned char[512]; - mUpgradeFlag = 0; - mbDownHaveSend = 0;//false - //mFbcMsgQueue.startMsgQueue(); - mbFbcKeyEnterDown = 0;//false - mFbcEnterKeyDownTime = -1; + mUpgradeFlag = 0; + mbDownHaveSend = 0;//false + //mFbcMsgQueue.startMsgQueue(); + mbFbcKeyEnterDown = 0;//false + mFbcEnterKeyDownTime = -1; } CFbcCommunication::~CFbcCommunication() { - m_event.data.fd = mSerialPort.getFd(); - m_event.events = EPOLLIN | EPOLLET; - mEpoll.del(mSerialPort.getFd(), &m_event); - closeAll(); - delete[] mpRevDataBuf; + m_event.data.fd = mSerialPort.getFd(); + m_event.events = EPOLLIN | EPOLLET; + mEpoll.del(mSerialPort.getFd(), &m_event); + closeAll(); + delete[] mpRevDataBuf; } int CFbcCommunication::start() { #if 1 - //int serial_port = config_get_int("TV", "fbc.communication.serial", SERIAL_C); - if (mSerialPort.OpenDevice(SERIAL_C) < 0) { - } else { + //int serial_port = config_get_int("TV", "fbc.communication.serial", SERIAL_C); + if (mSerialPort.OpenDevice(SERIAL_C) < 0) { + } else { #if 0 - LOGD("%s %d be called......\n", __FUNCTION__, __LINE__); - mSerialPort.set_opt(115200, 8, 1, 'N', 5000, 1); + LOGD("%s %d be called......\n", __FUNCTION__, __LINE__); + mSerialPort.set_opt(115200, 8, 1, 'N', 5000, 1); #else - LOGD("%s %d be called......\n", __FUNCTION__, __LINE__); - mSerialPort.setup_serial(); + LOGD("%s %d be called......\n", __FUNCTION__, __LINE__); + mSerialPort.setup_serial(); #endif - } + } - if (mEpoll.create() < 0) { - return -1; - } + if (mEpoll.create() < 0) { + return -1; + } - m_event.data.fd = mSerialPort.getFd(); - m_event.events = EPOLLIN | EPOLLET; - mEpoll.add(mSerialPort.getFd(), &m_event); + m_event.data.fd = mSerialPort.getFd(); + m_event.events = EPOLLIN | EPOLLET; + mEpoll.add(mSerialPort.getFd(), &m_event); #endif #if 0 - mHdmiCec.openFile(CEC_PATH); - m_event.data.fd = mHdmiCec.getFd(); - m_event.events = EPOLLIN | EPOLLET; - mEpoll.add(mHdmiCec.getFd(), &m_event); + mHdmiCec.openFile(CEC_PATH); + m_event.data.fd = mHdmiCec.getFd(); + m_event.events = EPOLLIN | EPOLLET; + mEpoll.add(mHdmiCec.getFd(), &m_event); #endif - //timeout for long - mEpoll.setTimeout(3000); + //timeout for long + mEpoll.setTimeout(3000); - this->run(); - mTvInput.run(); - return 0; + this->run(); + mTvInput.run(); + return 0; } void CFbcCommunication::testUart() { - unsigned char write_buf[64], read_buf[64]; - int idx = 0; - memset(write_buf, 0, sizeof(write_buf)); - memset(read_buf, 0, sizeof(read_buf)); - - write_buf[0] = 0x5a; - write_buf[1] = 0x5a; - write_buf[2] = 0xb; - write_buf[3] = 0x0; - write_buf[4] = 0x0; - write_buf[5] = 0x40; - write_buf[6] = 0x0; - - write_buf[7] = 0x2; - write_buf[8] = 0x3c; - write_buf[9] = 0x75; - write_buf[10] = 0x30; - //LOGD("to write ..........\n"); - mSerialPort.writeFile(write_buf, 11); - sleep(1); - //LOGD("to read........\n"); - mSerialPort.readFile(read_buf, 12); - for (idx = 0; idx < 12; idx++) - LOGD("the data is:0x%x\n", read_buf[idx]); - LOGD("end....\n"); + unsigned char write_buf[64], read_buf[64]; + int idx = 0; + memset(write_buf, 0, sizeof(write_buf)); + memset(read_buf, 0, sizeof(read_buf)); + + write_buf[0] = 0x5a; + write_buf[1] = 0x5a; + write_buf[2] = 0xb; + write_buf[3] = 0x0; + write_buf[4] = 0x0; + write_buf[5] = 0x40; + write_buf[6] = 0x0; + + write_buf[7] = 0x2; + write_buf[8] = 0x3c; + write_buf[9] = 0x75; + write_buf[10] = 0x30; + //LOGD("to write ..........\n"); + mSerialPort.writeFile(write_buf, 11); + sleep(1); + //LOGD("to read........\n"); + mSerialPort.readFile(read_buf, 12); + for (idx = 0; idx < 12; idx++) + LOGD("the data is:0x%x\n", read_buf[idx]); + LOGD("end....\n"); } void CFbcCommunication::showTime(struct timeval *_time) { - struct timeval curTime; - - if (_time == NULL) { - gettimeofday(&curTime, NULL); - } else { - curTime.tv_sec = _time->tv_sec; - curTime.tv_usec = _time->tv_usec; - } - if (curTime.tv_usec > 100000) { - LOGD("[%d.%d]", curTime.tv_sec, curTime.tv_usec); - } else if (curTime.tv_usec > 10000) { - LOGD("[%d.0%d]", curTime.tv_sec, curTime.tv_usec); - } else if (curTime.tv_usec > 1000) { - LOGD("[%d.00%d]", curTime.tv_sec, curTime.tv_usec); - } else if (curTime.tv_usec > 100) { - LOGD("[%d.000%d]", curTime.tv_sec, curTime.tv_usec); - } else if (curTime.tv_usec > 10) { - LOGD("[%d.0000%d]", curTime.tv_sec, curTime.tv_usec); - } else if (curTime.tv_usec > 1) { - LOGD("[%d.00000%d]", curTime.tv_sec, curTime.tv_usec); - } + struct timeval curTime; + + if (_time == NULL) { + gettimeofday(&curTime, NULL); + } else { + curTime.tv_sec = _time->tv_sec; + curTime.tv_usec = _time->tv_usec; + } + if (curTime.tv_usec > 100000) { + LOGD("[%d.%d]", curTime.tv_sec, curTime.tv_usec); + } else if (curTime.tv_usec > 10000) { + LOGD("[%d.0%d]", curTime.tv_sec, curTime.tv_usec); + } else if (curTime.tv_usec > 1000) { + LOGD("[%d.00%d]", curTime.tv_sec, curTime.tv_usec); + } else if (curTime.tv_usec > 100) { + LOGD("[%d.000%d]", curTime.tv_sec, curTime.tv_usec); + } else if (curTime.tv_usec > 10) { + LOGD("[%d.0000%d]", curTime.tv_sec, curTime.tv_usec); + } else if (curTime.tv_usec > 1) { + LOGD("[%d.00000%d]", curTime.tv_sec, curTime.tv_usec); + } } long CFbcCommunication::getTime(void) { - struct timeval tv; - gettimeofday(&tv, NULL); - return tv.tv_sec * 1000 + tv.tv_usec / 1000; + struct timeval tv; + gettimeofday(&tv, NULL); + return tv.tv_sec * 1000 + tv.tv_usec / 1000; } void CFbcCommunication::initCrc32Table() { - //生æˆCrc32的查询表 - int i, j; - unsigned int Crc; - for (i = 0; i < 256; i++) { - Crc = i; - for (j = 0; j < 8; j++) { - if (Crc & 1) - Crc = (Crc >> 1) ^ 0xEDB88320; - else - Crc >>= 1; - } - mCrc32Table[i] = Crc; - } + //生æˆCrc32的查询表 + int i, j; + unsigned int Crc; + for (i = 0; i < 256; i++) { + Crc = i; + for (j = 0; j < 8; j++) { + if (Crc & 1) + Crc = (Crc >> 1) ^ 0xEDB88320; + else + Crc >>= 1; + } + mCrc32Table[i] = Crc; + } } void CFbcCommunication::sendAckCmd(bool isOk) { - int crc32value = 0; - unsigned char ackcmd[12]; - ackcmd[0] = 0x5A; - ackcmd[1] = 0x5A; - ackcmd[2] = 12;//little endian - ackcmd[3] = 0x00; - ackcmd[4] = 0x80;//ack flag - ackcmd[5] = 0xff;//cmd id - if (isOk) { - ackcmd[6] = 0xfe; - ackcmd[7] = 0x7f; - } else { - ackcmd[6] = 0x80; - ackcmd[7] = 0x01; - } - //*((unsigned int*) (ackcmd + 8)) = GetCrc32(ackcmd, 8); - crc32value = Calcrc32(0, ackcmd, 8); - ackcmd[8] = (crc32value >> 0) & 0xFF; - ackcmd[9] = (crc32value >> 8) & 0xFF; - ackcmd[10] = (crc32value >> 16) & 0xFF; - ackcmd[11] = (crc32value >> 24) & 0xFF; - LOGD("to send ack and crc is:0x%x\n", crc32value); - sendDataOneway(COMM_DEV_SERIAL, ackcmd, 12, 0x00000000); + int crc32value = 0; + unsigned char ackcmd[12]; + ackcmd[0] = 0x5A; + ackcmd[1] = 0x5A; + ackcmd[2] = 12;//little endian + ackcmd[3] = 0x00; + ackcmd[4] = 0x80;//ack flag + ackcmd[5] = 0xff;//cmd id + if (isOk) { + ackcmd[6] = 0xfe; + ackcmd[7] = 0x7f; + } else { + ackcmd[6] = 0x80; + ackcmd[7] = 0x01; + } + //*((unsigned int*) (ackcmd + 8)) = GetCrc32(ackcmd, 8); + crc32value = Calcrc32(0, ackcmd, 8); + ackcmd[8] = (crc32value >> 0) & 0xFF; + ackcmd[9] = (crc32value >> 8) & 0xFF; + ackcmd[10] = (crc32value >> 16) & 0xFF; + ackcmd[11] = (crc32value >> 24) & 0xFF; + LOGD("to send ack and crc is:0x%x\n", crc32value); + sendDataOneway(COMM_DEV_SERIAL, ackcmd, 12, 0x00000000); } /* 函数å:GetCrc32 @@ -189,105 +189,105 @@ void CFbcCommunication::sendAckCmd(bool isOk) * å‚数:InStr ---指å‘需è¦è®¡ç®—CRC32值的字符? * len ---为InStr的长帿 * 返回值为计算出æ¥çš„CRC32结果? */ unsigned int CFbcCommunication::GetCrc32(unsigned char *InStr, unsigned int len) { - //开始计算CRC32校验便 - unsigned int Crc = 0xffffffff; - for (int i = 0; i < len; i++) { - Crc = (Crc >> 8) ^ mCrc32Table[(Crc & 0xFF) ^ InStr[i]]; - } + //开始计算CRC32校验便 + unsigned int Crc = 0xffffffff; + for (int i = 0; i < len; i++) { + Crc = (Crc >> 8) ^ mCrc32Table[(Crc & 0xFF) ^ InStr[i]]; + } - Crc ^= 0xFFFFFFFF; - return Crc; + Crc ^= 0xFFFFFFFF; + return Crc; } unsigned int CFbcCommunication::Calcrc32(unsigned int crc, const unsigned char *ptr, unsigned int buf_len) { - static const unsigned int s_crc32[16] = { 0, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c, - 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c - }; - unsigned int crcu32 = crc; - if (buf_len < 0) - return 0; - if (!ptr) return 0; - crcu32 = ~crcu32; - while (buf_len--) { - unsigned char b = *ptr++; - crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b & 0xF)]; - crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b >> 4)]; - } - return ~crcu32; + static const unsigned int s_crc32[16] = { 0, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c, + 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c + }; + unsigned int crcu32 = crc; + if (buf_len < 0) + return 0; + if (!ptr) return 0; + crcu32 = ~crcu32; + while (buf_len--) { + unsigned char b = *ptr++; + crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b & 0xF)]; + crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b >> 4)]; + } + return ~crcu32; } int CFbcCommunication::sendDataOneway(int devno, unsigned char *pData, int dataLen, int flags) { - int ret = -1; - switch (devno) { - case COMM_DEV_CEC: { - ret = mHdmiCec.writeFile(pData, dataLen); - break; - } - case COMM_DEV_SERIAL: { - ret = mSerialPort.writeFile(pData, dataLen); - break; - } - default: - break; - } - return ret; + int ret = -1; + switch (devno) { + case COMM_DEV_CEC: { + ret = mHdmiCec.writeFile(pData, dataLen); + break; + } + case COMM_DEV_SERIAL: { + ret = mSerialPort.writeFile(pData, dataLen); + break; + } + default: + break; + } + return ret; } int CFbcCommunication::rmFromRequestList() { - return 0; + return 0; } int CFbcCommunication::addToRequestList() { - return 0; + return 0; } //timeout ms int CFbcCommunication::sendDataAndWaitReply(int devno, int waitForDevno, int waitForCmd, unsigned char *pData, int dataLen, int timeout, unsigned char *pReData, int *reDataLen, int flags) { - int ret = sendDataOneway(devno, pData, dataLen, flags); - if (ret < 0) return ret; - - mReplyList.WaitDevNo = waitForDevno; - mReplyList.WaitCmd = waitForCmd; - mReplyList.WaitTimeOut = timeout; - mReplyList.reDataLen = 0; - mReplyList.replyData = mpRevDataBuf; - addToRequestList(); - LOGD("wait dev:%d, cmd:0x%x, timeout:%d", mReplyList.WaitDevNo, mReplyList.WaitCmd, mReplyList.WaitTimeOut); - - mLock.lock(); - ret = mReplyList.WaitReplyCondition.waitRelative(mLock, timeout);//wait reply - LOGD("wait reply return = %d", __FUNCTION__, __LINE__, ret); - mLock.unlock(); - - // - if (mReplyList.reDataLen > 0) { //data have come in - *reDataLen = mReplyList.reDataLen; - memcpy(pReData, mReplyList.replyData, mReplyList.reDataLen); - mReplyList.reDataLen = 0; - return *reDataLen; - } else { - //timeout,not to wait continue - mReplyList.WaitDevNo = -1; - mReplyList.WaitCmd = 0xff; - return -1;//timeout but data not come. - } - return 0; + int ret = sendDataOneway(devno, pData, dataLen, flags); + if (ret < 0) return ret; + + mReplyList.WaitDevNo = waitForDevno; + mReplyList.WaitCmd = waitForCmd; + mReplyList.WaitTimeOut = timeout; + mReplyList.reDataLen = 0; + mReplyList.replyData = mpRevDataBuf; + addToRequestList(); + LOGD("wait dev:%d, cmd:0x%x, timeout:%d", mReplyList.WaitDevNo, mReplyList.WaitCmd, mReplyList.WaitTimeOut); + + mLock.lock(); + ret = mReplyList.WaitReplyCondition.waitRelative(mLock, timeout);//wait reply + LOGD("wait reply return = %d", __FUNCTION__, __LINE__, ret); + mLock.unlock(); + + // + if (mReplyList.reDataLen > 0) { //data have come in + *reDataLen = mReplyList.reDataLen; + memcpy(pReData, mReplyList.replyData, mReplyList.reDataLen); + mReplyList.reDataLen = 0; + return *reDataLen; + } else { + //timeout,not to wait continue + mReplyList.WaitDevNo = -1; + mReplyList.WaitCmd = 0xff; + return -1;//timeout but data not come. + } + return 0; } int CFbcCommunication::closeAll() { - mSerialPort.CloseDevice(); - return 0; + mSerialPort.CloseDevice(); + return 0; } int CFbcCommunication::SetUpgradeFlag(int flag) { - mUpgradeFlag = flag; - return 0; + mUpgradeFlag = flag; + return 0; } /* @@ -295,1629 +295,1629 @@ int CFbcCommunication::SetUpgradeFlag(int flag) */ int CFbcCommunication::handleCmd(COMM_DEV_TYPE_E fromDev, int *pData, int *pRetValue) { - fbc_command_t cmd_type = VPU_CMD_NULL; - int ret_value = 0; + fbc_command_t cmd_type = VPU_CMD_NULL; + int ret_value = 0; - if ((fromDev != COMM_DEV_SERIAL && fromDev != COMM_DEV_CEC) || pData == NULL || pRetValue == NULL) { - //LOGD("para error and returned!"); - return -1; - } + if ((fromDev != COMM_DEV_SERIAL && fromDev != COMM_DEV_CEC) || pData == NULL || pRetValue == NULL) { + //LOGD("para error and returned!"); + return -1; + } - cmd_type = (fbc_command_t)pData[0]; - LOGD("the cmd type is:0x%02x\n", cmd_type); - switch (cmd_type) { - case VPU_CMD_RED_GAIN_DEF: - cfbc_Set_Gain_Red(fromDev, pData[2]); - break; + cmd_type = (fbc_command_t)pData[0]; + LOGD("the cmd type is:0x%02x\n", cmd_type); + switch (cmd_type) { + case VPU_CMD_RED_GAIN_DEF: + cfbc_Set_Gain_Red(fromDev, pData[2]); + break; - case VPU_CMD_RED_GAIN_DEF|0x80: - cfbc_Get_Gain_Red(fromDev, &ret_value); - pRetValue[0] = VPU_CMD_RED_GAIN_DEF | 0x80; - pRetValue[1] = 3; - pRetValue[2] = ret_value; - break; + case VPU_CMD_RED_GAIN_DEF|0x80: + cfbc_Get_Gain_Red(fromDev, &ret_value); + pRetValue[0] = VPU_CMD_RED_GAIN_DEF | 0x80; + pRetValue[1] = 3; + pRetValue[2] = ret_value; + break; - case VPU_CMD_PATTEN_SEL: - cfbc_Set_Test_Pattern(fromDev, pData[2]); - break; + case VPU_CMD_PATTEN_SEL: + cfbc_Set_Test_Pattern(fromDev, pData[2]); + break; - case VPU_CMD_BACKLIGHT_DEF: - cfbc_Set_Backlight(fromDev, pData[2]); - break; + case VPU_CMD_BACKLIGHT_DEF: + cfbc_Set_Backlight(fromDev, pData[2]); + break; - case VPU_CMD_PATTEN_SEL|0x80: - cfbc_Get_Test_Pattern(fromDev, &ret_value); - pRetValue[0] = VPU_CMD_RED_GAIN_DEF | 0x80; - pRetValue[1] = 3; - pRetValue[2] = ret_value; - break; + case VPU_CMD_PATTEN_SEL|0x80: + cfbc_Get_Test_Pattern(fromDev, &ret_value); + pRetValue[0] = VPU_CMD_RED_GAIN_DEF | 0x80; + pRetValue[1] = 3; + pRetValue[2] = ret_value; + break; - default: - return -1; - } + default: + return -1; + } - return 0; + return 0; } int CFbcCommunication::uartReadStream(unsigned char *retData, int rd_max_len, int timeout) { - int readLen = 0, bufIndex = 0, haveRead = 0; - clock_t start_tm = clock(); + int readLen = 0, bufIndex = 0, haveRead = 0; + clock_t start_tm = clock(); - do { - readLen = mSerialPort.readFile(retData + bufIndex, rd_max_len - haveRead); - haveRead += readLen; - bufIndex += readLen; - if (haveRead == rd_max_len) { - return haveRead; - } + do { + readLen = mSerialPort.readFile(retData + bufIndex, rd_max_len - haveRead); + haveRead += readLen; + bufIndex += readLen; + if (haveRead == rd_max_len) { + return haveRead; + } - LOGD("readLen = %d, haveRead = %d\n", readLen, haveRead); + LOGD("readLen = %d, haveRead = %d\n", readLen, haveRead); - if (((clock() - start_tm) / (CLOCKS_PER_SEC / 1000)) > timeout) { - return haveRead; - } - } while (true); + if (((clock() - start_tm) / (CLOCKS_PER_SEC / 1000)) > timeout) { + return haveRead; + } + } while (true); - return haveRead; + return haveRead; } int CFbcCommunication::uartReadData(unsigned char *retData, int *retLen) { - unsigned char tempBuf[512]; - int cmdLen = 0; - int bufIndex = 0; - int readLen = 0; - - if (retData == NULL) { - LOGD("the retData is NULL\n"); - return 0; - } - - //leader codes 2 byte - memset(tempBuf, 0, sizeof(tempBuf)); - do { - readLen = mSerialPort.readFile(tempBuf + 0, 1); - if (tempBuf[0] == 0x5A) { - bufIndex = 1; - readLen = mSerialPort.readFile(tempBuf + 1, 1); - if (tempBuf[1] == 0x5A) { - bufIndex = 2; - LOGD("leading code coming...\n"); - break; - } else { - continue; - } - } else { - continue; - } - } while (true); - - //data len 2 byte - int needRead = 2, haveRead = 0; - do { - readLen = mSerialPort.readFile(tempBuf + bufIndex, needRead - haveRead); - haveRead += readLen; - bufIndex += readLen; - if (haveRead == needRead) { - break; - } - } while (true); - - //little endian - cmdLen = (tempBuf[3] << 8) + tempBuf[2]; - //cmd data cmdLen - 2 -2 - needRead = cmdLen - 4, haveRead = 0; - LOGD("cmdLen is:%d\n", cmdLen); - - do { - readLen = mSerialPort.readFile(tempBuf + bufIndex, needRead - haveRead); - haveRead += readLen; - bufIndex += readLen; - if (readLen > 0) { - LOGD("data readLen is:%d\n", readLen); - } - if (haveRead == needRead) { - break; - } - } while (true); - - unsigned int crc = 0; - if (cmdLen > 4) { - crc = Calcrc32(0, tempBuf, cmdLen - 4);//not include crc 4byte - } - unsigned int bufCrc = tempBuf[cmdLen - 4] | - tempBuf[cmdLen - 3] << 8 | - tempBuf[cmdLen - 2] << 16 | - tempBuf[cmdLen - 1] << 24; - int idx = 0; - - if (crc == bufCrc) { - memcpy(retData, tempBuf, cmdLen % 512); - *retLen = cmdLen; - return cmdLen; - } else { - return -1; - } + unsigned char tempBuf[512]; + int cmdLen = 0; + int bufIndex = 0; + int readLen = 0; + + if (retData == NULL) { + LOGD("the retData is NULL\n"); + return 0; + } + + //leader codes 2 byte + memset(tempBuf, 0, sizeof(tempBuf)); + do { + readLen = mSerialPort.readFile(tempBuf + 0, 1); + if (tempBuf[0] == 0x5A) { + bufIndex = 1; + readLen = mSerialPort.readFile(tempBuf + 1, 1); + if (tempBuf[1] == 0x5A) { + bufIndex = 2; + LOGD("leading code coming...\n"); + break; + } else { + continue; + } + } else { + continue; + } + } while (true); + + //data len 2 byte + int needRead = 2, haveRead = 0; + do { + readLen = mSerialPort.readFile(tempBuf + bufIndex, needRead - haveRead); + haveRead += readLen; + bufIndex += readLen; + if (haveRead == needRead) { + break; + } + } while (true); + + //little endian + cmdLen = (tempBuf[3] << 8) + tempBuf[2]; + //cmd data cmdLen - 2 -2 + needRead = cmdLen - 4, haveRead = 0; + LOGD("cmdLen is:%d\n", cmdLen); + + do { + readLen = mSerialPort.readFile(tempBuf + bufIndex, needRead - haveRead); + haveRead += readLen; + bufIndex += readLen; + if (readLen > 0) { + LOGD("data readLen is:%d\n", readLen); + } + if (haveRead == needRead) { + break; + } + } while (true); + + unsigned int crc = 0; + if (cmdLen > 4) { + crc = Calcrc32(0, tempBuf, cmdLen - 4);//not include crc 4byte + } + unsigned int bufCrc = tempBuf[cmdLen - 4] | + tempBuf[cmdLen - 3] << 8 | + tempBuf[cmdLen - 2] << 16 | + tempBuf[cmdLen - 1] << 24; + int idx = 0; + + if (crc == bufCrc) { + memcpy(retData, tempBuf, cmdLen % 512); + *retLen = cmdLen; + return cmdLen; + } else { + return -1; + } } int CFbcCommunication::processData(COMM_DEV_TYPE_E fromDev, unsigned char *pData, int dataLen) { - switch (fromDev) { - case COMM_DEV_CEC: { - if (mReplyList.WaitDevNo == fromDev && mReplyList.WaitCmd == pData[1]) { - mReplyList.reDataLen = dataLen; - memcpy(mReplyList.replyData, pData, dataLen); - mReplyList.WaitReplyCondition.signal(); - } else if (0) { - } - break; - } - case COMM_DEV_SERIAL: { - LOGD("to signal wait dataLen:0x%x, cmdId:0x%x\n", dataLen, pData[5]); - if (mReplyList.WaitDevNo == fromDev && mReplyList.WaitCmd == pData[5]) { - mReplyList.reDataLen = dataLen; - memcpy(mReplyList.replyData, pData, dataLen); - mReplyList.WaitReplyCondition.signal(); - } else { - unsigned char cmd = pData[5]; - //just test - const char *value; - if (!mbSendKeyCode) { - value = config_get_str(CFG_SECTION_FBCUART, "fbc_key_event_handle", "null"); - if ( strcmp ( value, "true" ) == 0 ) - mbSendKeyCode = true; - else mbSendKeyCode = false; - } + switch (fromDev) { + case COMM_DEV_CEC: { + if (mReplyList.WaitDevNo == fromDev && mReplyList.WaitCmd == pData[1]) { + mReplyList.reDataLen = dataLen; + memcpy(mReplyList.replyData, pData, dataLen); + mReplyList.WaitReplyCondition.signal(); + } else if (0) { + } + break; + } + case COMM_DEV_SERIAL: { + LOGD("to signal wait dataLen:0x%x, cmdId:0x%x\n", dataLen, pData[5]); + if (mReplyList.WaitDevNo == fromDev && mReplyList.WaitCmd == pData[5]) { + mReplyList.reDataLen = dataLen; + memcpy(mReplyList.replyData, pData, dataLen); + mReplyList.WaitReplyCondition.signal(); + } else { + unsigned char cmd = pData[5]; + //just test + const char *value; + if (!mbSendKeyCode) { + value = config_get_str(CFG_SECTION_FBCUART, "fbc_key_event_handle", "null"); + if ( strcmp ( value, "true" ) == 0 ) + mbSendKeyCode = true; + else mbSendKeyCode = false; + } #if(0) - switch (cmd) { - case 0x14: - if (mbSendKeyCode ) { - if (pData[6] >= 12 && pData[6] <= 16 ) { //left ---enter - unsigned char key = pData[6] ; - LOGD(" key:0x%x\n", key); - - //16 key 28 DPAD_CENTER - //12 key 103 DPAD_UP - //13 key 108 DPAD_DOWN - //14 key 105 DPAD_LEFT - //15 key 106 DPAD_RIGHT - int checkKey = 0; - if (key == 16) - checkKey = 28 ; - else if (key == 12) - checkKey = 103 ; - else if (key == 13) - checkKey = 108 ; - else if (key == 14) - checkKey = 105 ; - else if (key == 15) - checkKey = 106 ; - mTvInput.sendkeyCode(checkKey); - } - } - break; - - default: - break; - } + switch (cmd) { + case 0x14: + if (mbSendKeyCode ) { + if (pData[6] >= 12 && pData[6] <= 16 ) { //left ---enter + unsigned char key = pData[6] ; + LOGD(" key:0x%x\n", key); + + //16 key 28 DPAD_CENTER + //12 key 103 DPAD_UP + //13 key 108 DPAD_DOWN + //14 key 105 DPAD_LEFT + //15 key 106 DPAD_RIGHT + int checkKey = 0; + if (key == 16) + checkKey = 28 ; + else if (key == 12) + checkKey = 103 ; + else if (key == 13) + checkKey = 108 ; + else if (key == 14) + checkKey = 105 ; + else if (key == 15) + checkKey = 106 ; + mTvInput.sendkeyCode(checkKey); + } + } + break; + + default: + break; + } #else - static long curTime, lastTime; - int tmp; - static int st = 0, st_key_up = 0; - static int st_key_down = 0; - static int st_key_left = 0; - static int st_key_right = 0; - static int checkKey = 0, last_checkKey = 0; - - - switch (pData[6]) { //different key - case 12: //DPAD_UP - st_key_up = pData[5]; - if (st_key_up == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 103; - mTvInput.sendkeyCode(checkKey); - } else if (st_key_up == 0x1E) { //CMD_INPUT_UP - //checkKey = 103; - //mTvInput.sendkeyCode_Up(checkKey); - } - break; - - case 13: //DPAD_DOWN - st_key_down = pData[5]; - if (st_key_down == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 108; - mTvInput.sendkeyCode(checkKey); - } else if (st_key_down == 0x1E) { //CMD_INPUT_UP - //checkKey = 108; - //mTvInput.sendkeyCode_Up(checkKey); - } - break; - - case 14: //DPAD_LEFT - st = pData[5]; - if (st == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 105; - lastTime = 0; - mbFbcKeyEnterDown = 1;//true - mFbcEnterKeyDownTime = mTvInput.getNowMs(); - mTvInput.sendKeyRepeatStart(15, 1200, 1500);//code 4, dis 3, repeatTime 2 - } else if (st == 0x1E) { //CMD_INPUT_UP - checkKey = 105; - if (mbFbcKeyEnterDown == 1) { - mbFbcKeyEnterDown = 0;//false - mTvInput.sendKeyRepeatStop(); - int disFbcEnterKeyDown = mTvInput.getNowMs() - mFbcEnterKeyDownTime; - LOGD("disFbcEnterKeyDown = %d", disFbcEnterKeyDown); - if (disFbcEnterKeyDown > 1200) { //long down - } else { - mTvInput.sendkeyCode(105); - } - } - //checkKey = 105; - //mTvInput.sendkeyCode_Up(checkKey); - } - break; - - case 15: //DPAD_RIGHT - st_key_right = pData[5]; - if (st_key_right == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 106; - mTvInput.sendkeyCode(checkKey); - } else if (st_key_right == 0x1E) { //CMD_INPUT_UP - //checkKey = 106; - //mTvInput.sendkeyCode_Up(checkKey); - } - break; - - case 16: //DPAD_ENTER - st = pData[5]; - if (st == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 28; - lastTime = 0; - mbFbcKeyEnterDown = 1;//true - mFbcEnterKeyDownTime = mTvInput.getNowMs(); - mTvInput.sendKeyRepeatStart(158, 1200, 1500);//code 4, dis 3, repeatTime 2 - } else if (st == 0x1E) { //CMD_INPUT_UP - checkKey = 28; - if (mbFbcKeyEnterDown == 1) { - mbFbcKeyEnterDown = 0;//false - mTvInput.sendKeyRepeatStop(); - int disFbcEnterKeyDown = mTvInput.getNowMs() - mFbcEnterKeyDownTime; - LOGD("disFbcEnterKeyDown = %d", disFbcEnterKeyDown); - if (disFbcEnterKeyDown > 1200) { //long down - } else { - mTvInput.sendkeyCode(28); - } - } - } - break; - - case 20: //7key power - st_key_right = pData[5]; - if (st_key_right == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 116; - //mTvInput.sendIRkeyCode_Down(checkKey); - mTvInput.sendIRkeyCode(checkKey); - } else if (st_key_right == 0x1E) { //CMD_INPUT_UP - checkKey = 116; - //mTvInput.sendIRkeyCode_Up(checkKey); - } - break; - - case 26: //7key source - st_key_right = pData[5]; - if (st_key_right == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 466; - mTvInput.sendIRkeyCode_Down(checkKey); - } else if (st_key_right == 0x1E) { //CMD_INPUT_UP - checkKey = 466; - mTvInput.sendIRkeyCode_Up(checkKey); - } - break; - - case 27: //7key menu - st_key_right = pData[5]; - if (st_key_right == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 139; - mTvInput.sendkeyCode(checkKey); - } else if (st_key_right == 0x1E) { //CMD_INPUT_UP - //checkKey = 139; - //mTvInput.sendkeyCode_Up(checkKey); - } - break; - - case 40: //7key vol - - st_key_right = pData[5]; - if (st_key_right == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 114; - mTvInput.sendIRkeyCode_Down(checkKey); - } else if (st_key_right == 0x1E) { //CMD_INPUT_UP - checkKey = 114; - mTvInput.sendIRkeyCode_Up(checkKey); - } - break; - - case 41: //7key vol + - st_key_right = pData[5]; - if (st_key_right == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 115; - mTvInput.sendIRkeyCode_Down(checkKey); - } else if (st_key_right == 0x1E) { //CMD_INPUT_UP - checkKey = 115; - mTvInput.sendIRkeyCode_Up(checkKey); - } - break; - case 201: //SARADC_DPAD_UP - st_key_up = pData[5]; - if (st_key_up == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 950; - mTvInput.sendkeyCode_Down(checkKey); - } else if (st_key_up == 0x1E) { //CMD_INPUT_UP - mTvInput.sendkeyCode_Up(checkKey); - } - break; - - case 202: //SARADC_DOWN - st_key_down = pData[5]; - if (st_key_down == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 951; - mTvInput.sendkeyCode_Down(checkKey); - } else if (st_key_down == 0x1E) { //CMD_INPUT_UP - mTvInput.sendkeyCode_Up(checkKey); - } - break; - - case 203: //SARADC_LEFT - st = pData[5]; - if (st == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 952; - lastTime = 0; - mbFbcKeyEnterDown = 1;//true - mFbcEnterKeyDownTime = mTvInput.getNowMs(); - mTvInput.sendkeyCode_Down(checkKey); - mTvInput.sendKeyRepeatStart(955, 1200, 1500);//code 4, dis 3, repeatTime 2 - } else if (st == 0x1E) { //CMD_INPUT_UP - checkKey = 952; - if (mbFbcKeyEnterDown == 1) { - mbFbcKeyEnterDown = 0;//false - mTvInput.sendKeyRepeatStop(); - int disFbcEnterKeyDown = mTvInput.getNowMs() - mFbcEnterKeyDownTime; - LOGD("disFbcEnterKeyDown = %d", disFbcEnterKeyDown); - if (disFbcEnterKeyDown > 1200) { //long down - mTvInput.sendkeyCode_Up(955); - mTvInput.sendkeyCode_Up(952); - } else { - mTvInput.sendkeyCode_Up(checkKey); - } - } - } - break; - - - case 204: //SARADC_RIGHT - st_key_right = pData[5]; - if (st_key_right == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 953; - mTvInput.sendkeyCode_Down(checkKey); - } else if (st_key_right == 0x1E) { //CMD_INPUT_UP - mTvInput.sendkeyCode_Up(checkKey); - - } - break; - - case 205: //SARADC_ENTER - st_key_right = pData[5]; - if (st_key_right == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 954; - mTvInput.sendkeyCode_Down(checkKey); - } else if (st_key_right == 0x1E) { //CMD_INPUT_UP - mTvInput.sendkeyCode_Up(checkKey); - } - - break; - } + static long curTime, lastTime; + int tmp; + static int st = 0, st_key_up = 0; + static int st_key_down = 0; + static int st_key_left = 0; + static int st_key_right = 0; + static int checkKey = 0, last_checkKey = 0; + + + switch (pData[6]) { //different key + case 12: //DPAD_UP + st_key_up = pData[5]; + if (st_key_up == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 103; + mTvInput.sendkeyCode(checkKey); + } else if (st_key_up == 0x1E) { //CMD_INPUT_UP + //checkKey = 103; + //mTvInput.sendkeyCode_Up(checkKey); + } + break; + + case 13: //DPAD_DOWN + st_key_down = pData[5]; + if (st_key_down == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 108; + mTvInput.sendkeyCode(checkKey); + } else if (st_key_down == 0x1E) { //CMD_INPUT_UP + //checkKey = 108; + //mTvInput.sendkeyCode_Up(checkKey); + } + break; + + case 14: //DPAD_LEFT + st = pData[5]; + if (st == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 105; + lastTime = 0; + mbFbcKeyEnterDown = 1;//true + mFbcEnterKeyDownTime = mTvInput.getNowMs(); + mTvInput.sendKeyRepeatStart(15, 1200, 1500);//code 4, dis 3, repeatTime 2 + } else if (st == 0x1E) { //CMD_INPUT_UP + checkKey = 105; + if (mbFbcKeyEnterDown == 1) { + mbFbcKeyEnterDown = 0;//false + mTvInput.sendKeyRepeatStop(); + int disFbcEnterKeyDown = mTvInput.getNowMs() - mFbcEnterKeyDownTime; + LOGD("disFbcEnterKeyDown = %d", disFbcEnterKeyDown); + if (disFbcEnterKeyDown > 1200) { //long down + } else { + mTvInput.sendkeyCode(105); + } + } + //checkKey = 105; + //mTvInput.sendkeyCode_Up(checkKey); + } + break; + + case 15: //DPAD_RIGHT + st_key_right = pData[5]; + if (st_key_right == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 106; + mTvInput.sendkeyCode(checkKey); + } else if (st_key_right == 0x1E) { //CMD_INPUT_UP + //checkKey = 106; + //mTvInput.sendkeyCode_Up(checkKey); + } + break; + + case 16: //DPAD_ENTER + st = pData[5]; + if (st == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 28; + lastTime = 0; + mbFbcKeyEnterDown = 1;//true + mFbcEnterKeyDownTime = mTvInput.getNowMs(); + mTvInput.sendKeyRepeatStart(158, 1200, 1500);//code 4, dis 3, repeatTime 2 + } else if (st == 0x1E) { //CMD_INPUT_UP + checkKey = 28; + if (mbFbcKeyEnterDown == 1) { + mbFbcKeyEnterDown = 0;//false + mTvInput.sendKeyRepeatStop(); + int disFbcEnterKeyDown = mTvInput.getNowMs() - mFbcEnterKeyDownTime; + LOGD("disFbcEnterKeyDown = %d", disFbcEnterKeyDown); + if (disFbcEnterKeyDown > 1200) { //long down + } else { + mTvInput.sendkeyCode(28); + } + } + } + break; + + case 20: //7key power + st_key_right = pData[5]; + if (st_key_right == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 116; + //mTvInput.sendIRkeyCode_Down(checkKey); + mTvInput.sendIRkeyCode(checkKey); + } else if (st_key_right == 0x1E) { //CMD_INPUT_UP + checkKey = 116; + //mTvInput.sendIRkeyCode_Up(checkKey); + } + break; + + case 26: //7key source + st_key_right = pData[5]; + if (st_key_right == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 466; + mTvInput.sendIRkeyCode_Down(checkKey); + } else if (st_key_right == 0x1E) { //CMD_INPUT_UP + checkKey = 466; + mTvInput.sendIRkeyCode_Up(checkKey); + } + break; + + case 27: //7key menu + st_key_right = pData[5]; + if (st_key_right == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 139; + mTvInput.sendkeyCode(checkKey); + } else if (st_key_right == 0x1E) { //CMD_INPUT_UP + //checkKey = 139; + //mTvInput.sendkeyCode_Up(checkKey); + } + break; + + case 40: //7key vol - + st_key_right = pData[5]; + if (st_key_right == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 114; + mTvInput.sendIRkeyCode_Down(checkKey); + } else if (st_key_right == 0x1E) { //CMD_INPUT_UP + checkKey = 114; + mTvInput.sendIRkeyCode_Up(checkKey); + } + break; + + case 41: //7key vol + + st_key_right = pData[5]; + if (st_key_right == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 115; + mTvInput.sendIRkeyCode_Down(checkKey); + } else if (st_key_right == 0x1E) { //CMD_INPUT_UP + checkKey = 115; + mTvInput.sendIRkeyCode_Up(checkKey); + } + break; + case 201: //SARADC_DPAD_UP + st_key_up = pData[5]; + if (st_key_up == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 950; + mTvInput.sendkeyCode_Down(checkKey); + } else if (st_key_up == 0x1E) { //CMD_INPUT_UP + mTvInput.sendkeyCode_Up(checkKey); + } + break; + + case 202: //SARADC_DOWN + st_key_down = pData[5]; + if (st_key_down == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 951; + mTvInput.sendkeyCode_Down(checkKey); + } else if (st_key_down == 0x1E) { //CMD_INPUT_UP + mTvInput.sendkeyCode_Up(checkKey); + } + break; + + case 203: //SARADC_LEFT + st = pData[5]; + if (st == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 952; + lastTime = 0; + mbFbcKeyEnterDown = 1;//true + mFbcEnterKeyDownTime = mTvInput.getNowMs(); + mTvInput.sendkeyCode_Down(checkKey); + mTvInput.sendKeyRepeatStart(955, 1200, 1500);//code 4, dis 3, repeatTime 2 + } else if (st == 0x1E) { //CMD_INPUT_UP + checkKey = 952; + if (mbFbcKeyEnterDown == 1) { + mbFbcKeyEnterDown = 0;//false + mTvInput.sendKeyRepeatStop(); + int disFbcEnterKeyDown = mTvInput.getNowMs() - mFbcEnterKeyDownTime; + LOGD("disFbcEnterKeyDown = %d", disFbcEnterKeyDown); + if (disFbcEnterKeyDown > 1200) { //long down + mTvInput.sendkeyCode_Up(955); + mTvInput.sendkeyCode_Up(952); + } else { + mTvInput.sendkeyCode_Up(checkKey); + } + } + } + break; + + + case 204: //SARADC_RIGHT + st_key_right = pData[5]; + if (st_key_right == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 953; + mTvInput.sendkeyCode_Down(checkKey); + } else if (st_key_right == 0x1E) { //CMD_INPUT_UP + mTvInput.sendkeyCode_Up(checkKey); + + } + break; + + case 205: //SARADC_ENTER + st_key_right = pData[5]; + if (st_key_right == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 954; + mTvInput.sendkeyCode_Down(checkKey); + } else if (st_key_right == 0x1E) { //CMD_INPUT_UP + mTvInput.sendkeyCode_Up(checkKey); + } + + break; + } #endif - } - break; - } - default: { - break; - } - } - return 0; + } + break; + } + default: { + break; + } + } + return 0; } bool CFbcCommunication::threadLoop() { - unsigned char readFrameBuf[512]; - while (!exitPending()) { //requietexit() or requietexitWait() not call - while (mUpgradeFlag == 1) { - usleep(1000 * 1000); - } - - int num = mEpoll.wait(); - - while (mUpgradeFlag == 1) { - usleep(1000 * 1000); - } - - for (int i = 0; i < num; ++i) { - int fd = (mEpoll)[i].data.fd; - /** - * EPOLLIN event - */ - if ((mEpoll)[i].events & EPOLLIN) { - if (fd == mHdmiCec.getFd()) { //ce-----------------------------c - int bufIndex = 0; - int needRead = 4; - int haveRead = 0; - int idx = 0, readLen = 0; - do { - readLen = mHdmiCec.readFile(readFrameBuf + bufIndex, needRead - haveRead); - haveRead += readLen; - bufIndex += readLen; - //if(haveRead == needRead) break; - } while (0); - - if (readLen > 0) { - processData(COMM_DEV_CEC, readFrameBuf, readLen); - } else { - } - } else if (fd == mSerialPort.getFd()) { - //seria---------------------------l - int cmdLen = 0, idx = 0; - LOGD("serial data come"); - memset(readFrameBuf, 0, 512); - int ret = uartReadData(readFrameBuf, &cmdLen); - - if (ret == -1) { //data error - sendAckCmd(false); - } else if (readFrameBuf[4] == 0x80) { //ack - LOGD("is ack come"); + unsigned char readFrameBuf[512]; + while (!exitPending()) { //requietexit() or requietexitWait() not call + while (mUpgradeFlag == 1) { + usleep(1000 * 1000); + } + + int num = mEpoll.wait(); + + while (mUpgradeFlag == 1) { + usleep(1000 * 1000); + } + + for (int i = 0; i < num; ++i) { + int fd = (mEpoll)[i].data.fd; + /** + * EPOLLIN event + */ + if ((mEpoll)[i].events & EPOLLIN) { + if (fd == mHdmiCec.getFd()) { //ce-----------------------------c + int bufIndex = 0; + int needRead = 4; + int haveRead = 0; + int idx = 0, readLen = 0; + do { + readLen = mHdmiCec.readFile(readFrameBuf + bufIndex, needRead - haveRead); + haveRead += readLen; + bufIndex += readLen; + //if(haveRead == needRead) break; + } while (0); + + if (readLen > 0) { + processData(COMM_DEV_CEC, readFrameBuf, readLen); + } else { + } + } else if (fd == mSerialPort.getFd()) { + //seria---------------------------l + int cmdLen = 0, idx = 0; + LOGD("serial data come"); + memset(readFrameBuf, 0, 512); + int ret = uartReadData(readFrameBuf, &cmdLen); + + if (ret == -1) { //data error + sendAckCmd(false); + } else if (readFrameBuf[4] == 0x80) { //ack + LOGD("is ack come"); #ifdef TV_RESEND_UMUTE_TO_FBC - if (((readFrameBuf[7] << 8) | readFrameBuf[6]) == 0x8001 && - readFrameBuf[5] == AUDIO_CMD_SET_MUTE) { - LOGD("resend unmute to 101 avoid 101 receiving unmute timeout\n"); - Fbc_Set_Value_INT8(COMM_DEV_SERIAL, AUDIO_CMD_SET_MUTE, 1); - } + if (((readFrameBuf[7] << 8) | readFrameBuf[6]) == 0x8001 && + readFrameBuf[5] == AUDIO_CMD_SET_MUTE) { + LOGD("resend unmute to 101 avoid 101 receiving unmute timeout\n"); + Fbc_Set_Value_INT8(COMM_DEV_SERIAL, AUDIO_CMD_SET_MUTE, 1); + } #endif - } else { //not ack - sendAckCmd(true); - processData(COMM_DEV_SERIAL, readFrameBuf, cmdLen); - } - } - } + } else { //not ack + sendAckCmd(true); + processData(COMM_DEV_SERIAL, readFrameBuf, cmdLen); + } + } + } - /** - * EPOLLOUT event - */ - if ((mEpoll)[i].events & EPOLLOUT) { + /** + * EPOLLOUT event + */ + if ((mEpoll)[i].events & EPOLLOUT) { - } - } - } - //exit - //return true, run again, return false,not run. - LOGD("thread exited..........\n"); - return false; + } + } + } + //exit + //return true, run again, return false,not run. + LOGD("thread exited..........\n"); + return false; } int CFbcCommunication::Fbc_Set_Value_INT8(COMM_DEV_TYPE_E toDev, int cmd_type, int value) { - if (mUpgradeFlag == 1) { - return 0; - } - LOGD("%s cmd =0x%x, value=%d", __FUNCTION__, cmd_type, value); - if (toDev == COMM_DEV_CEC) { - unsigned char cmd[16], rxbuf[16]; - int rxlen = 0, idx = 0; - memset(cmd, 0, 16); - memset(rxbuf, 0, 16); - cmd[0] = 0x40; - cmd[1] = cmd_type; - cmd[2] = value; - sendDataOneway(COMM_DEV_CEC, cmd, 4, 0); - } else if (toDev == COMM_DEV_SERIAL) { - int crc32value = 0; - unsigned char write_buf[512]; - unsigned char rxbuf[512]; - int rxlen = 0, idx = 0; - - //leading code - write_buf[0] = 0x5a; - write_buf[1] = 0x5a; - //package length from begin to end - write_buf[2] = 0xb; - write_buf[3] = 0x0; - //Ack byte - write_buf[4] = 0x0; - //cmd ID - write_buf[5] = cmd_type; - //parameter - write_buf[6] = value; - //crc32 little Endian - crc32value = Calcrc32(0, write_buf, 7); - write_buf[7] = (crc32value >> 0) & 0xFF; - write_buf[8] = (crc32value >> 8) & 0xFF; - write_buf[9] = (crc32value >> 16) & 0xFF; - write_buf[10] = (crc32value >> 24) & 0xFF; - sendDataOneway(COMM_DEV_SERIAL, write_buf, write_buf[2], 0); - } - return 0; + if (mUpgradeFlag == 1) { + return 0; + } + LOGD("%s cmd =0x%x, value=%d", __FUNCTION__, cmd_type, value); + if (toDev == COMM_DEV_CEC) { + unsigned char cmd[16], rxbuf[16]; + int rxlen = 0, idx = 0; + memset(cmd, 0, 16); + memset(rxbuf, 0, 16); + cmd[0] = 0x40; + cmd[1] = cmd_type; + cmd[2] = value; + sendDataOneway(COMM_DEV_CEC, cmd, 4, 0); + } else if (toDev == COMM_DEV_SERIAL) { + int crc32value = 0; + unsigned char write_buf[512]; + unsigned char rxbuf[512]; + int rxlen = 0, idx = 0; + + //leading code + write_buf[0] = 0x5a; + write_buf[1] = 0x5a; + //package length from begin to end + write_buf[2] = 0xb; + write_buf[3] = 0x0; + //Ack byte + write_buf[4] = 0x0; + //cmd ID + write_buf[5] = cmd_type; + //parameter + write_buf[6] = value; + //crc32 little Endian + crc32value = Calcrc32(0, write_buf, 7); + write_buf[7] = (crc32value >> 0) & 0xFF; + write_buf[8] = (crc32value >> 8) & 0xFF; + write_buf[9] = (crc32value >> 16) & 0xFF; + write_buf[10] = (crc32value >> 24) & 0xFF; + sendDataOneway(COMM_DEV_SERIAL, write_buf, write_buf[2], 0); + } + return 0; } int CFbcCommunication::Fbc_Set_Value_INT32(COMM_DEV_TYPE_E toDev, int cmd_type, int value) { - if (mUpgradeFlag == 1) { - return 0; - } - - if (toDev == COMM_DEV_SERIAL) { - int crc32value = 0; - unsigned char write_buf[512]; - unsigned char rxbuf[512]; - int rxlen = 0, idx = 0; - - //leading code - write_buf[0] = 0x5a; - write_buf[1] = 0x5a; - //package length from begin to end - write_buf[2] = 14; - write_buf[3] = 0x0; - //Ack byte - write_buf[4] = 0x0; - //cmd ID - write_buf[5] = cmd_type; - //parameter - write_buf[6] = (value >> 0) & 0xFF; - write_buf[7] = (value >> 8) & 0xFF; - write_buf[8] = (value >> 16) & 0xFF; - write_buf[9] = (value >> 24) & 0xFF; - //crc32 little Endian - crc32value = Calcrc32(0, write_buf, 10); - write_buf[10] = (crc32value >> 0) & 0xFF; - write_buf[11] = (crc32value >> 8) & 0xFF; - write_buf[12] = (crc32value >> 16) & 0xFF; - write_buf[13] = (crc32value >> 24) & 0xFF; - - return sendDataOneway(COMM_DEV_SERIAL, write_buf, write_buf[2], 0); - } - return -1; + if (mUpgradeFlag == 1) { + return 0; + } + + if (toDev == COMM_DEV_SERIAL) { + int crc32value = 0; + unsigned char write_buf[512]; + unsigned char rxbuf[512]; + int rxlen = 0, idx = 0; + + //leading code + write_buf[0] = 0x5a; + write_buf[1] = 0x5a; + //package length from begin to end + write_buf[2] = 14; + write_buf[3] = 0x0; + //Ack byte + write_buf[4] = 0x0; + //cmd ID + write_buf[5] = cmd_type; + //parameter + write_buf[6] = (value >> 0) & 0xFF; + write_buf[7] = (value >> 8) & 0xFF; + write_buf[8] = (value >> 16) & 0xFF; + write_buf[9] = (value >> 24) & 0xFF; + //crc32 little Endian + crc32value = Calcrc32(0, write_buf, 10); + write_buf[10] = (crc32value >> 0) & 0xFF; + write_buf[11] = (crc32value >> 8) & 0xFF; + write_buf[12] = (crc32value >> 16) & 0xFF; + write_buf[13] = (crc32value >> 24) & 0xFF; + + return sendDataOneway(COMM_DEV_SERIAL, write_buf, write_buf[2], 0); + } + return -1; } int CFbcCommunication::Fbc_Get_Value_INT8(COMM_DEV_TYPE_E fromDev, int cmd_type, int *value) { - if (mUpgradeFlag == 1) { - return 0; - } - - LOGD("%s cmd =0x%x", __FUNCTION__, cmd_type); - - if (fromDev == COMM_DEV_CEC) { - unsigned char cmd[16], rxbuf[16]; - int rxlen = 0, idx = 0; - memset(cmd, 0, 16); - memset(rxbuf, 0, 16); - cmd[0] = 0x40; - cmd[1] = cmd_type; - sendDataAndWaitReply(COMM_DEV_CEC, COMM_DEV_CEC, cmd[1], cmd, 4, 0, rxbuf, &rxlen, 0); - *value = rxbuf[6]; - } else if (fromDev == COMM_DEV_SERIAL) { - int crc32value = 0, idx = 0, rxlen = 0; - unsigned char write_buf[16]; - unsigned char rxbuf[16]; - memset(rxbuf, 0, 16); - - //leading code - idx = 0; - write_buf[idx++] = 0x5a; - write_buf[idx++] = 0x5a; - //package length from begin to end - write_buf[idx++] = 0xa; - write_buf[idx++] = 0x0; - //Ack byte - write_buf[idx++] = 0x0; - //cmd ID - write_buf[idx++] = cmd_type; - //crc32 little Endian - crc32value = Calcrc32(0, write_buf, idx); - write_buf[idx++] = (crc32value >> 0) & 0xFF; - write_buf[idx++] = (crc32value >> 8) & 0xFF; - write_buf[idx++] = (crc32value >> 16) & 0xFF; - write_buf[idx++] = (crc32value >> 24) & 0xFF; - - sendDataAndWaitReply(COMM_DEV_SERIAL, COMM_DEV_SERIAL, write_buf[5], write_buf, write_buf[2], 2000, rxbuf, &rxlen, 0); - *value = rxbuf[6]; - } - return 0; + if (mUpgradeFlag == 1) { + return 0; + } + + LOGD("%s cmd =0x%x", __FUNCTION__, cmd_type); + + if (fromDev == COMM_DEV_CEC) { + unsigned char cmd[16], rxbuf[16]; + int rxlen = 0, idx = 0; + memset(cmd, 0, 16); + memset(rxbuf, 0, 16); + cmd[0] = 0x40; + cmd[1] = cmd_type; + sendDataAndWaitReply(COMM_DEV_CEC, COMM_DEV_CEC, cmd[1], cmd, 4, 0, rxbuf, &rxlen, 0); + *value = rxbuf[6]; + } else if (fromDev == COMM_DEV_SERIAL) { + int crc32value = 0, idx = 0, rxlen = 0; + unsigned char write_buf[16]; + unsigned char rxbuf[16]; + memset(rxbuf, 0, 16); + + //leading code + idx = 0; + write_buf[idx++] = 0x5a; + write_buf[idx++] = 0x5a; + //package length from begin to end + write_buf[idx++] = 0xa; + write_buf[idx++] = 0x0; + //Ack byte + write_buf[idx++] = 0x0; + //cmd ID + write_buf[idx++] = cmd_type; + //crc32 little Endian + crc32value = Calcrc32(0, write_buf, idx); + write_buf[idx++] = (crc32value >> 0) & 0xFF; + write_buf[idx++] = (crc32value >> 8) & 0xFF; + write_buf[idx++] = (crc32value >> 16) & 0xFF; + write_buf[idx++] = (crc32value >> 24) & 0xFF; + + sendDataAndWaitReply(COMM_DEV_SERIAL, COMM_DEV_SERIAL, write_buf[5], write_buf, write_buf[2], 2000, rxbuf, &rxlen, 0); + *value = rxbuf[6]; + } + return 0; } int CFbcCommunication::Fbc_Set_BatchValue(COMM_DEV_TYPE_E toDev, unsigned char *cmd_buf, int count) { - if (mUpgradeFlag == 1) { - return 0; - } - - if ( 512 <= count) { - return -1; - } - - if (toDev == COMM_DEV_CEC) { - unsigned char cmd[512], rxbuf[512]; - int rxlen = 0, idx = 0; - memset(cmd, 0, 512); - memset(rxbuf, 0, 512); - cmd[0] = 0x40; - for (idx = 0; idx < count; idx++) { - cmd[idx + 1] = cmd_buf[idx]; - } - sendDataOneway(COMM_DEV_CEC, cmd, count + 1, 0); - } else if (toDev == COMM_DEV_SERIAL) { - int crc32value = 0; - unsigned char write_buf[512]; - unsigned char rxbuf[512]; - int rxlen = 0, idx = 0; - - //leading code - write_buf[0] = 0x5a; - write_buf[1] = 0x5a; - //package length from begin to end - write_buf[2] = (count + 9) & 0xFF; - write_buf[3] = ((count + 9) >> 8) & 0xFF; - //Ack byte : 0x80-> ack package;0x00->normal package; - write_buf[4] = 0x00; - - for (idx = 0; idx < count; idx++) { - write_buf[idx + 5] = cmd_buf[idx]; - } - //crc32 little Endian - crc32value = Calcrc32(0, write_buf, count + 5); - write_buf[count + 5] = (crc32value >> 0) & 0xFF; - write_buf[count + 6] = (crc32value >> 8) & 0xFF; - write_buf[count + 7] = (crc32value >> 16) & 0xFF; - write_buf[count + 8] = (crc32value >> 24) & 0xFF; - sendDataOneway(COMM_DEV_SERIAL, write_buf, count + 9, 0); - } - return 0; + if (mUpgradeFlag == 1) { + return 0; + } + + if ( 512 <= count) { + return -1; + } + + if (toDev == COMM_DEV_CEC) { + unsigned char cmd[512], rxbuf[512]; + int rxlen = 0, idx = 0; + memset(cmd, 0, 512); + memset(rxbuf, 0, 512); + cmd[0] = 0x40; + for (idx = 0; idx < count; idx++) { + cmd[idx + 1] = cmd_buf[idx]; + } + sendDataOneway(COMM_DEV_CEC, cmd, count + 1, 0); + } else if (toDev == COMM_DEV_SERIAL) { + int crc32value = 0; + unsigned char write_buf[512]; + unsigned char rxbuf[512]; + int rxlen = 0, idx = 0; + + //leading code + write_buf[0] = 0x5a; + write_buf[1] = 0x5a; + //package length from begin to end + write_buf[2] = (count + 9) & 0xFF; + write_buf[3] = ((count + 9) >> 8) & 0xFF; + //Ack byte : 0x80-> ack package;0x00->normal package; + write_buf[4] = 0x00; + + for (idx = 0; idx < count; idx++) { + write_buf[idx + 5] = cmd_buf[idx]; + } + //crc32 little Endian + crc32value = Calcrc32(0, write_buf, count + 5); + write_buf[count + 5] = (crc32value >> 0) & 0xFF; + write_buf[count + 6] = (crc32value >> 8) & 0xFF; + write_buf[count + 7] = (crc32value >> 16) & 0xFF; + write_buf[count + 8] = (crc32value >> 24) & 0xFF; + sendDataOneway(COMM_DEV_SERIAL, write_buf, count + 9, 0); + } + return 0; } int CFbcCommunication::Fbc_Get_BatchValue(COMM_DEV_TYPE_E fromDev, unsigned char *cmd_buf, int count) { - if (mUpgradeFlag == 1) { - return 0; - } - - if ( 512 <= count) { - return -1; - } - int ret = 0; - // TODO: read value - if (fromDev == COMM_DEV_CEC) { - unsigned char cmd[512], rxbuf[512]; - int rxlen = 0, idx = 0; - memset(cmd, 0, 512); - memset(rxbuf, 0, 512); - cmd[0] = 0x40; - cmd[1] = cmd_buf[0]; - sendDataAndWaitReply(COMM_DEV_CEC, COMM_DEV_CEC, cmd[1], cmd, count + 1, 0, rxbuf, &rxlen, 0); - - if (rxlen > 2) { - for (idx = 0; idx < rxlen; idx++) { - cmd_buf[idx] = cmd[idx + 1]; - } - } - } else if (fromDev == COMM_DEV_SERIAL) { - int crc32value = 0, idx = 0, rxlen = 0; - unsigned char write_buf[512]; - unsigned char rxbuf[512]; - memset(write_buf, 0, 512); - memset(rxbuf, 0, 512); - - //leading code - write_buf[0] = 0x5a; - write_buf[1] = 0x5a; - //package length from begin to end - write_buf[2] = (count + 9) & 0xFF; - write_buf[3] = ((count + 9) >> 8) & 0xFF; - //Ack byte - write_buf[4] = 0x00; - //cmd ID - for (idx = 0; idx < count; idx++) { - write_buf[idx + 5] = cmd_buf[idx]; - } - //crc32 little Endian - crc32value = Calcrc32(0, write_buf, count + 5); - write_buf[count + 5] = (crc32value >> 0) & 0xFF; - write_buf[count + 6] = (crc32value >> 8) & 0xFF; - write_buf[count + 7] = (crc32value >> 16) & 0xFF; - write_buf[count + 8] = (crc32value >> 24) & 0xFF; - sendDataAndWaitReply(COMM_DEV_SERIAL, COMM_DEV_SERIAL, write_buf[5], write_buf, write_buf[2], 2000, rxbuf, &rxlen, 0); - - if (rxlen > 9) { - for (idx = 0; idx < (rxlen - 9); idx++) { - cmd_buf[idx] = rxbuf[idx + 5]; - } - } - ret = rxlen; - } - - return ret; + if (mUpgradeFlag == 1) { + return 0; + } + + if ( 512 <= count) { + return -1; + } + int ret = 0; + // TODO: read value + if (fromDev == COMM_DEV_CEC) { + unsigned char cmd[512], rxbuf[512]; + int rxlen = 0, idx = 0; + memset(cmd, 0, 512); + memset(rxbuf, 0, 512); + cmd[0] = 0x40; + cmd[1] = cmd_buf[0]; + sendDataAndWaitReply(COMM_DEV_CEC, COMM_DEV_CEC, cmd[1], cmd, count + 1, 0, rxbuf, &rxlen, 0); + + if (rxlen > 2) { + for (idx = 0; idx < rxlen; idx++) { + cmd_buf[idx] = cmd[idx + 1]; + } + } + } else if (fromDev == COMM_DEV_SERIAL) { + int crc32value = 0, idx = 0, rxlen = 0; + unsigned char write_buf[512]; + unsigned char rxbuf[512]; + memset(write_buf, 0, 512); + memset(rxbuf, 0, 512); + + //leading code + write_buf[0] = 0x5a; + write_buf[1] = 0x5a; + //package length from begin to end + write_buf[2] = (count + 9) & 0xFF; + write_buf[3] = ((count + 9) >> 8) & 0xFF; + //Ack byte + write_buf[4] = 0x00; + //cmd ID + for (idx = 0; idx < count; idx++) { + write_buf[idx + 5] = cmd_buf[idx]; + } + //crc32 little Endian + crc32value = Calcrc32(0, write_buf, count + 5); + write_buf[count + 5] = (crc32value >> 0) & 0xFF; + write_buf[count + 6] = (crc32value >> 8) & 0xFF; + write_buf[count + 7] = (crc32value >> 16) & 0xFF; + write_buf[count + 8] = (crc32value >> 24) & 0xFF; + sendDataAndWaitReply(COMM_DEV_SERIAL, COMM_DEV_SERIAL, write_buf[5], write_buf, write_buf[2], 2000, rxbuf, &rxlen, 0); + + if (rxlen > 9) { + for (idx = 0; idx < (rxlen - 9); idx++) { + cmd_buf[idx] = rxbuf[idx + 5]; + } + } + ret = rxlen; + } + + return ret; } int CFbcCommunication::cfbc_Set_Gain_Red(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_RED_GAIN_DEF, value); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_RED_GAIN_DEF, value); } int CFbcCommunication::cfbc_Get_Gain_Red(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_RED_GAIN_DEF | 0x80, value); + return Fbc_Get_Value_INT8(fromDev, VPU_CMD_RED_GAIN_DEF | 0x80, value); } int CFbcCommunication::cfbc_Set_Gain_Green(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_GREEN_GAIN_DEF, value); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_GREEN_GAIN_DEF, value); } int CFbcCommunication::cfbc_Get_Gain_Green(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_GREEN_GAIN_DEF | 0x80, value); + return Fbc_Get_Value_INT8(fromDev, VPU_CMD_GREEN_GAIN_DEF | 0x80, value); } int CFbcCommunication::cfbc_Set_Gain_Blue(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_BLUE_GAIN_DEF, value); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_BLUE_GAIN_DEF, value); } int CFbcCommunication::cfbc_Get_Gain_Blue(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_BLUE_GAIN_DEF | 0x80, value); + return Fbc_Get_Value_INT8(fromDev, VPU_CMD_BLUE_GAIN_DEF | 0x80, value); } int CFbcCommunication::cfbc_Set_Offset_Red(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_PRE_RED_OFFSET_DEF, value); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_PRE_RED_OFFSET_DEF, value); } int CFbcCommunication::cfbc_Get_Offset_Red(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_PRE_RED_OFFSET_DEF | 0x80, value); + return Fbc_Get_Value_INT8(fromDev, VPU_CMD_PRE_RED_OFFSET_DEF | 0x80, value); } int CFbcCommunication::cfbc_Set_Offset_Green(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_PRE_GREEN_OFFSET_DEF, value); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_PRE_GREEN_OFFSET_DEF, value); } int CFbcCommunication::cfbc_Get_Offset_Green(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_PRE_GREEN_OFFSET_DEF | 0x80, value); + return Fbc_Get_Value_INT8(fromDev, VPU_CMD_PRE_GREEN_OFFSET_DEF | 0x80, value); } int CFbcCommunication::cfbc_Set_Offset_Blue(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_PRE_BLUE_OFFSET_DEF, value); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_PRE_BLUE_OFFSET_DEF, value); } int CFbcCommunication::cfbc_Get_Offset_Blue(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_PRE_BLUE_OFFSET_DEF | 0x80, value); + return Fbc_Get_Value_INT8(fromDev, VPU_CMD_PRE_BLUE_OFFSET_DEF | 0x80, value); } int CFbcCommunication::cfbc_Set_WB_Initial(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_WB, value); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_WB, value); } int CFbcCommunication::cfbc_Get_WB_Initial(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_WB | 0x80, value); + return Fbc_Get_Value_INT8(fromDev, VPU_CMD_WB | 0x80, value); } int CFbcCommunication::cfbc_Set_ColorTemp_Mode(COMM_DEV_TYPE_E fromDev, int value) { - int fbcValue = value; - switch (value) { - case 0: //standard - fbcValue = 1; - break; - case 1: //warm - fbcValue = 2; - break; - case 2: //cold - fbcValue = 0; - break; - default: - break; - } - LOGD("before set fbcValue = %d", fbcValue); - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_COLOR_TEMPERATURE_DEF, fbcValue); + int fbcValue = value; + switch (value) { + case 0: //standard + fbcValue = 1; + break; + case 1: //warm + fbcValue = 2; + break; + case 2: //cold + fbcValue = 0; + break; + default: + break; + } + LOGD("before set fbcValue = %d", fbcValue); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_COLOR_TEMPERATURE_DEF, fbcValue); } int CFbcCommunication::cfbc_Get_ColorTemp_Mode(COMM_DEV_TYPE_E fromDev, int *value) { - Fbc_Get_Value_INT8(fromDev, VPU_CMD_COLOR_TEMPERATURE_DEF | 0x80, value); + Fbc_Get_Value_INT8(fromDev, VPU_CMD_COLOR_TEMPERATURE_DEF | 0x80, value); - switch (*value) { - case 0: //cold - *value = 2; - break; - case 1: //standard - *value = 0; - break; - case 2: //warm - *value = 1; - break; - default: - break; - } + switch (*value) { + case 0: //cold + *value = 2; + break; + case 1: //standard + *value = 0; + break; + case 2: //warm + *value = 1; + break; + default: + break; + } - return 0; + return 0; } int CFbcCommunication::cfbc_Set_Test_Pattern(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_PATTEN_SEL, value); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_PATTEN_SEL, value); } int CFbcCommunication::cfbc_Get_Test_Pattern(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_PATTEN_SEL | 0x80, value); + return Fbc_Get_Value_INT8(fromDev, VPU_CMD_PATTEN_SEL | 0x80, value); } int CFbcCommunication::cfbc_Set_Picture_Mode(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_PICTURE_MODE, value); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_PICTURE_MODE, value); } int CFbcCommunication::cfbc_Get_Picture_Mode(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_PICTURE_MODE | 0x80, value); + return Fbc_Get_Value_INT8(fromDev, VPU_CMD_PICTURE_MODE | 0x80, value); } int CFbcCommunication::cfbc_Set_Contrast(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_CONTRAST_DEF, value); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_CONTRAST_DEF, value); } int CFbcCommunication::cfbc_Get_Contrast(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_CONTRAST_DEF | 0x80, value); + return Fbc_Get_Value_INT8(fromDev, VPU_CMD_CONTRAST_DEF | 0x80, value); } int CFbcCommunication::cfbc_Set_Brightness(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_BRIGHTNESS_DEF, value); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_BRIGHTNESS_DEF, value); } int CFbcCommunication::cfbc_Get_Brightness(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_BRIGHTNESS_DEF | 0x80, value); + return Fbc_Get_Value_INT8(fromDev, VPU_CMD_BRIGHTNESS_DEF | 0x80, value); } int CFbcCommunication::cfbc_Set_Saturation(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_COLOR_DEF, value); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_COLOR_DEF, value); } int CFbcCommunication::cfbc_Get_Saturation(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_COLOR_DEF | 0x80, value); + return Fbc_Get_Value_INT8(fromDev, VPU_CMD_COLOR_DEF | 0x80, value); } int CFbcCommunication::cfbc_Set_HueColorTint(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_HUE_DEF, value); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_HUE_DEF, value); } int CFbcCommunication::cfbc_Get_HueColorTint(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_HUE_DEF | 0x80, value); + return Fbc_Get_Value_INT8(fromDev, VPU_CMD_HUE_DEF | 0x80, value); } int CFbcCommunication::cfbc_Set_Backlight(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_BACKLIGHT_DEF, value); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_BACKLIGHT_DEF, value); } int CFbcCommunication::cfbc_Get_Backlight(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_BACKLIGHT_DEF | 0x80, value); + return Fbc_Get_Value_INT8(fromDev, VPU_CMD_BACKLIGHT_DEF | 0x80, value); } int CFbcCommunication::cfbc_Set_Source(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_SOURCE, value); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_SOURCE, value); } int CFbcCommunication::cfbc_Get_Source(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_SOURCE | 0x80, value); + return Fbc_Get_Value_INT8(fromDev, VPU_CMD_SOURCE | 0x80, value); } int CFbcCommunication::cfbc_Set_Mute(COMM_DEV_TYPE_E fromDev, int value) { - LOGD("cfbc_Set_Mute = %d", value); - return Fbc_Set_Value_INT8(fromDev, AUDIO_CMD_SET_MUTE, value); + LOGD("cfbc_Set_Mute = %d", value); + return Fbc_Set_Value_INT8(fromDev, AUDIO_CMD_SET_MUTE, value); } int CFbcCommunication::cfbc_Set_FBC_Audio_Source(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, AUDIO_CMD_SET_SOURCE, value); + return Fbc_Set_Value_INT8(fromDev, AUDIO_CMD_SET_SOURCE, value); } int CFbcCommunication::cfbc_Get_Mute(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, AUDIO_CMD_GET_MUTE, value); + return Fbc_Get_Value_INT8(fromDev, AUDIO_CMD_GET_MUTE, value); } int CFbcCommunication::cfbc_Set_Volume_Bar(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, AUDIO_CMD_SET_VOLUME_BAR, value); + return Fbc_Set_Value_INT8(fromDev, AUDIO_CMD_SET_VOLUME_BAR, value); } int CFbcCommunication::cfbc_Get_Volume_Bar(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, AUDIO_CMD_GET_VOLUME_BAR, value); + return Fbc_Get_Value_INT8(fromDev, AUDIO_CMD_GET_VOLUME_BAR, value); } int CFbcCommunication::cfbc_Set_Balance(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, AUDIO_CMD_SET_BALANCE, value); + return Fbc_Set_Value_INT8(fromDev, AUDIO_CMD_SET_BALANCE, value); } int CFbcCommunication::cfbc_Get_Balance(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, AUDIO_CMD_GET_BALANCE, value); + return Fbc_Get_Value_INT8(fromDev, AUDIO_CMD_GET_BALANCE, value); } int CFbcCommunication::cfbc_Set_Master_Volume(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, AUDIO_CMD_SET_MASTER_VOLUME, value); + return Fbc_Set_Value_INT8(fromDev, AUDIO_CMD_SET_MASTER_VOLUME, value); } int CFbcCommunication::cfbc_Get_Master_Volume(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, AUDIO_CMD_GET_MASTER_VOLUME, value); + return Fbc_Get_Value_INT8(fromDev, AUDIO_CMD_GET_MASTER_VOLUME, value); } int CFbcCommunication::cfbc_Set_CM(COMM_DEV_TYPE_E fromDev, unsigned char value) { - unsigned char cmd[512]; - memset(cmd, 0, 512); + unsigned char cmd[512]; + memset(cmd, 0, 512); - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = VPU_MODULE_CM2; - cmd[2] = value;//value:0~1 - return Fbc_Set_BatchValue(fromDev, cmd, 3); + cmd[0] = VPU_CMD_ENABLE; + cmd[1] = VPU_MODULE_CM2; + cmd[2] = value;//value:0~1 + return Fbc_Set_BatchValue(fromDev, cmd, 3); } int CFbcCommunication::cfbc_Get_CM(COMM_DEV_TYPE_E fromDev, int *value) { - unsigned char cmd[512]; - memset(cmd, 0, 512); + unsigned char cmd[512]; + memset(cmd, 0, 512); - cmd[0] = VPU_CMD_ENABLE | 0x80; - cmd[1] = VPU_MODULE_CM2; + cmd[0] = VPU_CMD_ENABLE | 0x80; + cmd[1] = VPU_MODULE_CM2; - Fbc_Get_BatchValue(fromDev, cmd, 2); - *value = cmd[2]; + Fbc_Get_BatchValue(fromDev, cmd, 2); + *value = cmd[2]; - return 0; + return 0; } int CFbcCommunication::cfbc_Set_DNLP(COMM_DEV_TYPE_E fromDev, unsigned char value) { - unsigned char cmd[512]; - memset(cmd, 0, 512); + unsigned char cmd[512]; + memset(cmd, 0, 512); - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = VPU_MODULE_DNLP; - cmd[2] = value;//value:0~1 + cmd[0] = VPU_CMD_ENABLE; + cmd[1] = VPU_MODULE_DNLP; + cmd[2] = value;//value:0~1 - return Fbc_Set_BatchValue(fromDev, cmd, 3); + return Fbc_Set_BatchValue(fromDev, cmd, 3); } int CFbcCommunication::cfbc_Get_DNLP(COMM_DEV_TYPE_E fromDev, int *value) { - unsigned char cmd[512]; - memset(cmd, 0, 512); + unsigned char cmd[512]; + memset(cmd, 0, 512); - cmd[0] = VPU_CMD_ENABLE | 0x80; - cmd[1] = VPU_MODULE_DNLP; + cmd[0] = VPU_CMD_ENABLE | 0x80; + cmd[1] = VPU_MODULE_DNLP; - Fbc_Get_BatchValue(fromDev, cmd, 2); - *value = cmd[2]; + Fbc_Get_BatchValue(fromDev, cmd, 2); + *value = cmd[2]; - return 0; + return 0; } int CFbcCommunication::cfbc_Get_FBC_MAINCODE_Version(COMM_DEV_TYPE_E fromDev, char sw_ver[], char build_time[], char git_ver[], char git_branch[], char build_name[]) { - int rx_len = 0, tmp_ind = 0; - unsigned char cmd[512]; + int rx_len = 0, tmp_ind = 0; + unsigned char cmd[512]; - if (sw_ver == NULL || build_time == NULL || git_ver == NULL || git_branch == NULL || build_name == NULL) { - return -1; - } + if (sw_ver == NULL || build_time == NULL || git_ver == NULL || git_branch == NULL || build_name == NULL) { + return -1; + } - memset(cmd, 0, 512); - cmd[0] = CMD_FBC_MAIN_CODE_VERSION; - rx_len = Fbc_Get_BatchValue(fromDev, cmd, 1); + memset(cmd, 0, 512); + cmd[0] = CMD_FBC_MAIN_CODE_VERSION; + rx_len = Fbc_Get_BatchValue(fromDev, cmd, 1); - sw_ver[0] = 0; - build_time[0] = 0; - git_ver[0] = 0; - git_branch[0] = 0; - build_name[0] = 0; + sw_ver[0] = 0; + build_time[0] = 0; + git_ver[0] = 0; + git_branch[0] = 0; + build_name[0] = 0; - if (rx_len <= 0) { - return -1; - } + if (rx_len <= 0) { + return -1; + } - if (cmd[0] != CMD_FBC_MAIN_CODE_VERSION || cmd[1] != 0x88 || cmd[2] != 0x99) { - return -1; - } + if (cmd[0] != CMD_FBC_MAIN_CODE_VERSION || cmd[1] != 0x88 || cmd[2] != 0x99) { + return -1; + } - tmp_ind = 3; + tmp_ind = 3; - strcpy(sw_ver, (char *)(cmd + tmp_ind)); - tmp_ind += strlen(sw_ver); - tmp_ind += 1; + strcpy(sw_ver, (char *)(cmd + tmp_ind)); + tmp_ind += strlen(sw_ver); + tmp_ind += 1; - strcpy(build_time, (char *)(cmd + tmp_ind)); - tmp_ind += strlen(build_time); - tmp_ind += 1; + strcpy(build_time, (char *)(cmd + tmp_ind)); + tmp_ind += strlen(build_time); + tmp_ind += 1; - strcpy(git_ver, (char *)(cmd + tmp_ind)); - tmp_ind += strlen(git_ver); - tmp_ind += 1; + strcpy(git_ver, (char *)(cmd + tmp_ind)); + tmp_ind += strlen(git_ver); + tmp_ind += 1; - strcpy(git_branch, (char *)(cmd + tmp_ind)); - tmp_ind += strlen(git_branch); - tmp_ind += 1; + strcpy(git_branch, (char *)(cmd + tmp_ind)); + tmp_ind += strlen(git_branch); + tmp_ind += 1; - strcpy(build_name, (char *)(cmd + tmp_ind)); - tmp_ind += strlen(build_name); - tmp_ind += 1; - LOGD("sw_ver=%s, buildt=%s, gitv=%s, gitb=%s,bn=%s", sw_ver, build_time, git_ver, git_branch, build_name); - return 0; + strcpy(build_name, (char *)(cmd + tmp_ind)); + tmp_ind += strlen(build_name); + tmp_ind += 1; + LOGD("sw_ver=%s, buildt=%s, gitv=%s, gitb=%s,bn=%s", sw_ver, build_time, git_ver, git_branch, build_name); + return 0; } int CFbcCommunication::cfbc_Set_FBC_Factory_SN(COMM_DEV_TYPE_E fromDev, const char *pSNval) { - unsigned char cmd[512]; - int len = strlen(pSNval); + unsigned char cmd[512]; + int len = strlen(pSNval); - memset(cmd, 0, 512); + memset(cmd, 0, 512); - cmd[0] = CMD_SET_FACTORY_SN; + cmd[0] = CMD_SET_FACTORY_SN; - memcpy(cmd + 1, pSNval, len); + memcpy(cmd + 1, pSNval, len); - LOGD("cmd : %s\n", cmd); + LOGD("cmd : %s\n", cmd); - return Fbc_Set_BatchValue(fromDev, cmd, len + 1); + return Fbc_Set_BatchValue(fromDev, cmd, len + 1); } int CFbcCommunication::cfbc_Get_FBC_Factory_SN(COMM_DEV_TYPE_E fromDev, char FactorySN[]) { - int rx_len = 0; - unsigned char cmd[512]; - memset(cmd, 0, 512); - cmd[0] = CMD_GET_FACTORY_SN; - rx_len = Fbc_Get_BatchValue(fromDev, cmd, 1); - if (rx_len <= 0) { - return -1; - } - strncpy(FactorySN, (char *)(cmd + 1), rx_len); + int rx_len = 0; + unsigned char cmd[512]; + memset(cmd, 0, 512); + cmd[0] = CMD_GET_FACTORY_SN; + rx_len = Fbc_Get_BatchValue(fromDev, cmd, 1); + if (rx_len <= 0) { + return -1; + } + strncpy(FactorySN, (char *)(cmd + 1), rx_len); - LOGD("panelModel=%s", FactorySN); - return 0; + LOGD("panelModel=%s", FactorySN); + return 0; } int CFbcCommunication::cfbc_Get_FBC_Get_PANel_INFO(COMM_DEV_TYPE_E fromDev, char panel_model[]) { - int rx_len = 0; - unsigned char cmd[512]; - memset(cmd, 0, 512); - cmd[0] = CMD_DEVICE_ID; - rx_len = Fbc_Get_BatchValue(fromDev, cmd, 1); - if (rx_len <= 0) { - return -1; - } - strcpy(panel_model, (char *)(cmd + 1)); + int rx_len = 0; + unsigned char cmd[512]; + memset(cmd, 0, 512); + cmd[0] = CMD_DEVICE_ID; + rx_len = Fbc_Get_BatchValue(fromDev, cmd, 1); + if (rx_len <= 0) { + return -1; + } + strcpy(panel_model, (char *)(cmd + 1)); - LOGD("panelModel=%s", panel_model); - return 0; + LOGD("panelModel=%s", panel_model); + return 0; } int CFbcCommunication::cfbc_Set_FBC_panel_power_switch(COMM_DEV_TYPE_E fromDev, int switch_val) { - unsigned char cmd[512]; + unsigned char cmd[512]; - memset(cmd, 0, 512); + memset(cmd, 0, 512); - cmd[0] = FBC_PANEL_POWER; - cmd[1] = switch_val; //0 is fbc panel power off, 1 is panel power on. + cmd[0] = FBC_PANEL_POWER; + cmd[1] = switch_val; //0 is fbc panel power off, 1 is panel power on. - return Fbc_Set_BatchValue(fromDev, cmd, 2); + return Fbc_Set_BatchValue(fromDev, cmd, 2); } int CFbcCommunication::cfbc_Set_FBC_suspend(COMM_DEV_TYPE_E fromDev, int switch_val) { - unsigned char cmd[512]; + unsigned char cmd[512]; - memset(cmd, 0, 512); + memset(cmd, 0, 512); - cmd[0] = FBC_SUSPEND_POWER; - cmd[1] = switch_val; //0 + cmd[0] = FBC_SUSPEND_POWER; + cmd[1] = switch_val; //0 - return Fbc_Set_BatchValue(fromDev, cmd, 2); + return Fbc_Set_BatchValue(fromDev, cmd, 2); } int CFbcCommunication::cfbc_Set_FBC_User_Setting_Default(COMM_DEV_TYPE_E fromDev, int param) { - unsigned char cmd[512]; + unsigned char cmd[512]; - memset(cmd, 0, 512); + memset(cmd, 0, 512); - cmd[0] = FBC_USER_SETTING_DEFAULT; - cmd[1] = param; //0 + cmd[0] = FBC_USER_SETTING_DEFAULT; + cmd[1] = param; //0 - return Fbc_Set_BatchValue(fromDev, cmd, 2); + return Fbc_Set_BatchValue(fromDev, cmd, 2); } int CFbcCommunication::cfbc_SendRebootToUpgradeCmd(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT32(fromDev, FBC_REBOOT_UPGRADE, value); + return Fbc_Set_Value_INT32(fromDev, FBC_REBOOT_UPGRADE, value); } int CFbcCommunication::cfbc_FBC_Send_Key_To_Fbc(COMM_DEV_TYPE_E fromDev, int keycode, int param) { - unsigned char cmd[512]; + unsigned char cmd[512]; - memset(cmd, 0, 512); + memset(cmd, 0, 512); - cmd[0] = CMD_ACTIVE_KEY; - cmd[1] = keycode; //0 + cmd[0] = CMD_ACTIVE_KEY; + cmd[1] = keycode; //0 - return Fbc_Set_BatchValue(fromDev, cmd, 2); + return Fbc_Set_BatchValue(fromDev, cmd, 2); } int CFbcCommunication::cfbc_Get_FBC_PANEL_REVERSE(COMM_DEV_TYPE_E fromDev, int *value) { - unsigned char cmd[512]; - memset(cmd, 0, 512); + unsigned char cmd[512]; + memset(cmd, 0, 512); - cmd[0] = CMD_PANEL_INFO; - //0://panel reverse - //1://panel output_mode - //2://panel byte num - cmd[1] = 0; + cmd[0] = CMD_PANEL_INFO; + //0://panel reverse + //1://panel output_mode + //2://panel byte num + cmd[1] = 0; - Fbc_Get_BatchValue(fromDev, cmd, 2); - //cmd[0] cmdid-PANEL-INFO - //cmd[1] param[0] - panel reverse - *value = cmd[2]; + Fbc_Get_BatchValue(fromDev, cmd, 2); + //cmd[0] cmdid-PANEL-INFO + //cmd[1] param[0] - panel reverse + *value = cmd[2]; - return 0; + return 0; } int CFbcCommunication::cfbc_Get_FBC_PANEL_OUTPUT(COMM_DEV_TYPE_E fromDev, int *value) { - unsigned char cmd[512]; - memset(cmd, 0, 512); + unsigned char cmd[512]; + memset(cmd, 0, 512); - cmd[0] = CMD_PANEL_INFO; - //0://panel reverse - //1://panel output_mode - //2://panel byte num - cmd[1] = 1; + cmd[0] = CMD_PANEL_INFO; + //0://panel reverse + //1://panel output_mode + //2://panel byte num + cmd[1] = 1; - Fbc_Get_BatchValue(fromDev, cmd, 2); - //cmd[0] cmdid-PANEL-INFO - //cmd[1] param[0] - panel reverse - *value = cmd[2]; + Fbc_Get_BatchValue(fromDev, cmd, 2); + //cmd[0] cmdid-PANEL-INFO + //cmd[1] param[0] - panel reverse + *value = cmd[2]; - return 0; + return 0; } int CFbcCommunication::cfbc_Set_FBC_project_id(COMM_DEV_TYPE_E fromDev, int prj_id) { - unsigned char cmd[512]; + unsigned char cmd[512]; - memset(cmd, 0, 512); + memset(cmd, 0, 512); - cmd[0] = CMD_SET_PROJECT_SELECT; - cmd[1] = prj_id; + cmd[0] = CMD_SET_PROJECT_SELECT; + cmd[1] = prj_id; - return Fbc_Set_BatchValue(fromDev, cmd, 2); + return Fbc_Set_BatchValue(fromDev, cmd, 2); } int CFbcCommunication::cfbc_Get_FBC_project_id(COMM_DEV_TYPE_E fromDev, int *prj_id) { - return Fbc_Get_Value_INT8(fromDev, CMD_GET_PROJECT_SELECT, prj_id); + return Fbc_Get_Value_INT8(fromDev, CMD_GET_PROJECT_SELECT, prj_id); } int CFbcCommunication::cfbc_Set_Gamma(COMM_DEV_TYPE_E fromDev, unsigned char value) { - unsigned char cmd[512]; - memset(cmd, 0, 512); + unsigned char cmd[512]; + memset(cmd, 0, 512); - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = VPU_MODULE_GAMMA; - cmd[2] = value;//value:0~1 + cmd[0] = VPU_CMD_ENABLE; + cmd[1] = VPU_MODULE_GAMMA; + cmd[2] = value;//value:0~1 - return Fbc_Set_BatchValue(fromDev, cmd, 3); + return Fbc_Set_BatchValue(fromDev, cmd, 3); } int CFbcCommunication::cfbc_Get_Gamma(COMM_DEV_TYPE_E fromDev, int *value) { - unsigned char cmd[512]; - memset(cmd, 0, 512); + unsigned char cmd[512]; + memset(cmd, 0, 512); - cmd[0] = VPU_CMD_ENABLE | 0x80; - cmd[1] = VPU_MODULE_GAMMA; + cmd[0] = VPU_CMD_ENABLE | 0x80; + cmd[1] = VPU_MODULE_GAMMA; - Fbc_Get_BatchValue(fromDev, cmd, 2); - *value = cmd[2]; + Fbc_Get_BatchValue(fromDev, cmd, 2); + *value = cmd[2]; - return 0; + return 0; } int CFbcCommunication::cfbc_Set_VMute(COMM_DEV_TYPE_E fromDev, unsigned char value) { - unsigned char cmd[512]; - memset(cmd, 0, 512); + unsigned char cmd[512]; + memset(cmd, 0, 512); - cmd[0] = VPU_CMD_USER_VMUTE; - cmd[1] = value; - LOGD("cfbc_Set_VMute=%d", cmd[1]); + cmd[0] = VPU_CMD_USER_VMUTE; + cmd[1] = value; + LOGD("cfbc_Set_VMute=%d", cmd[1]); - return Fbc_Set_BatchValue(fromDev, cmd, 2); + return Fbc_Set_BatchValue(fromDev, cmd, 2); } int CFbcCommunication::cfbc_Set_WhiteBalance_OnOff(COMM_DEV_TYPE_E fromDev, unsigned char value) { - unsigned char cmd[512]; - memset(cmd, 0, 512); + unsigned char cmd[512]; + memset(cmd, 0, 512); - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = VPU_MODULE_WB; - cmd[2] = value;//value:0~1 + cmd[0] = VPU_CMD_ENABLE; + cmd[1] = VPU_MODULE_WB; + cmd[2] = value;//value:0~1 - return Fbc_Set_BatchValue(fromDev, cmd, 3); + return Fbc_Set_BatchValue(fromDev, cmd, 3); } int CFbcCommunication::cfbc_Get_WhiteBalance_OnOff(COMM_DEV_TYPE_E fromDev, int *value) { - unsigned char cmd[512]; - memset(cmd, 0, 512); + unsigned char cmd[512]; + memset(cmd, 0, 512); - cmd[0] = VPU_CMD_ENABLE | 0x80; - cmd[1] = VPU_MODULE_WB; + cmd[0] = VPU_CMD_ENABLE | 0x80; + cmd[1] = VPU_MODULE_WB; - Fbc_Get_BatchValue(fromDev, cmd, 2); - *value = cmd[2]; + Fbc_Get_BatchValue(fromDev, cmd, 2); + *value = cmd[2]; - return 0; + return 0; } int CFbcCommunication::cfbc_Set_WB_Batch(COMM_DEV_TYPE_E fromDev, unsigned char mode, unsigned char r_gain, unsigned char g_gain, unsigned char b_gain, unsigned char r_offset, unsigned char g_offset, unsigned char b_offset) { - unsigned char cmd[512]; - memset(cmd, 0, 512); + unsigned char cmd[512]; + memset(cmd, 0, 512); - cmd[0] = VPU_CMD_WB_VALUE; - cmd[1] = mode; - cmd[2] = r_gain; - cmd[3] = g_gain; - cmd[4] = b_gain; - cmd[5] = r_offset; - cmd[6] = g_offset; - cmd[7] = b_offset; + cmd[0] = VPU_CMD_WB_VALUE; + cmd[1] = mode; + cmd[2] = r_gain; + cmd[3] = g_gain; + cmd[4] = b_gain; + cmd[5] = r_offset; + cmd[6] = g_offset; + cmd[7] = b_offset; - return Fbc_Set_BatchValue(fromDev, cmd, 8); + return Fbc_Set_BatchValue(fromDev, cmd, 8); } int CFbcCommunication::cfbc_TestPattern_Select(COMM_DEV_TYPE_E fromDev, int value) { - int ret = -1; - unsigned char cmd[512]; - memset(cmd, 0, 512); - - LOGD("Call vpp 63 2 1\n"); - cmd[0] = VPU_CMD_SRCIF; - cmd[1] = 2; - cmd[2] = 1; - - ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//close csc0 - - if (ret == 0) { - LOGD("Call vpp 9 11 1\n"); - memset(cmd, 0, 512); - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = 11; - cmd[2] = 1; - ret = Fbc_Set_BatchValue(fromDev, cmd, 3); - if (ret == 0) { - memset(cmd, 0, 512); - LOGD("Call vpp 42 1-17\n"); - Fbc_Set_Value_INT8(fromDev, VPU_CMD_PATTEN_SEL, value); - } - } - - return ret; + int ret = -1; + unsigned char cmd[512]; + memset(cmd, 0, 512); + + LOGD("Call vpp 63 2 1\n"); + cmd[0] = VPU_CMD_SRCIF; + cmd[1] = 2; + cmd[2] = 1; + + ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//close csc0 + + if (ret == 0) { + LOGD("Call vpp 9 11 1\n"); + memset(cmd, 0, 512); + cmd[0] = VPU_CMD_ENABLE; + cmd[1] = 11; + cmd[2] = 1; + ret = Fbc_Set_BatchValue(fromDev, cmd, 3); + if (ret == 0) { + memset(cmd, 0, 512); + LOGD("Call vpp 42 1-17\n"); + Fbc_Set_Value_INT8(fromDev, VPU_CMD_PATTEN_SEL, value); + } + } + + return ret; } int CFbcCommunication::cfbc_WhiteBalance_GrayPattern_OnOff(COMM_DEV_TYPE_E fromDev, int onOff) { - int ret = -1; - unsigned char cmd[512]; - memset(cmd, 0, 512); - if (onOff == 0) { //On - LOGD("Call vpp 63 2 1"); - cmd[0] = VPU_CMD_SRCIF; - cmd[1] = 2; - cmd[2] = 1; - ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//close csc0 - if (ret == 0) { - LOGD("Call vpp 9 9 0"); - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = 9; - cmd[2] = 0; - ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//close csc1 - if (ret == 0) { - LOGD("Call vpp 9 10 0"); - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = 10; - cmd[2] = 0; - ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//close dnlp - if (ret == 0) { - LOGD("Call vpp 9 8 0"); - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = 8; - cmd[2] = 0; - ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//close cm - } - } - } - - } else { //Off - LOGD("Call vpp 63 2 2"); - cmd[0] = VPU_CMD_SRCIF; - cmd[1] = 2; - cmd[2] = 2; - ret = Fbc_Set_BatchValue(fromDev, cmd, 3); - if (ret == 0) { - LOGD("Call vpp 9 9 1"); - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = 9; - cmd[2] = 1; - ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//open csc1 - if (ret == 0) { - LOGD("Call vpp 9 10 1"); - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = 10; - cmd[2] = 1; - ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//open dnlp - if (ret == 0) { - LOGD("Call vpp 9 8 1"); - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = 8; - cmd[2] = 1; - ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//open cm - } - } - } - } - return ret; + int ret = -1; + unsigned char cmd[512]; + memset(cmd, 0, 512); + if (onOff == 0) { //On + LOGD("Call vpp 63 2 1"); + cmd[0] = VPU_CMD_SRCIF; + cmd[1] = 2; + cmd[2] = 1; + ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//close csc0 + if (ret == 0) { + LOGD("Call vpp 9 9 0"); + cmd[0] = VPU_CMD_ENABLE; + cmd[1] = 9; + cmd[2] = 0; + ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//close csc1 + if (ret == 0) { + LOGD("Call vpp 9 10 0"); + cmd[0] = VPU_CMD_ENABLE; + cmd[1] = 10; + cmd[2] = 0; + ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//close dnlp + if (ret == 0) { + LOGD("Call vpp 9 8 0"); + cmd[0] = VPU_CMD_ENABLE; + cmd[1] = 8; + cmd[2] = 0; + ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//close cm + } + } + } + + } else { //Off + LOGD("Call vpp 63 2 2"); + cmd[0] = VPU_CMD_SRCIF; + cmd[1] = 2; + cmd[2] = 2; + ret = Fbc_Set_BatchValue(fromDev, cmd, 3); + if (ret == 0) { + LOGD("Call vpp 9 9 1"); + cmd[0] = VPU_CMD_ENABLE; + cmd[1] = 9; + cmd[2] = 1; + ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//open csc1 + if (ret == 0) { + LOGD("Call vpp 9 10 1"); + cmd[0] = VPU_CMD_ENABLE; + cmd[1] = 10; + cmd[2] = 1; + ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//open dnlp + if (ret == 0) { + LOGD("Call vpp 9 8 1"); + cmd[0] = VPU_CMD_ENABLE; + cmd[1] = 8; + cmd[2] = 1; + ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//open cm + } + } + } + } + return ret; } int CFbcCommunication::cfbc_WhiteBalance_SetGrayPattern(COMM_DEV_TYPE_E fromDev, unsigned char value) { - int ret = -1; - unsigned char cmd[512]; - memset(cmd, 0, 512); - cmd[0] = VPU_CMD_GRAY_PATTERN; - cmd[1] = value; - cmd[2] = value; - cmd[3] = value; - ret = Fbc_Set_BatchValue(fromDev, cmd, 4); - return ret; + int ret = -1; + unsigned char cmd[512]; + memset(cmd, 0, 512); + cmd[0] = VPU_CMD_GRAY_PATTERN; + cmd[1] = value; + cmd[2] = value; + cmd[3] = value; + ret = Fbc_Set_BatchValue(fromDev, cmd, 4); + return ret; } int CFbcCommunication::cfbc_Set_Auto_Backlight_OnOff(COMM_DEV_TYPE_E fromDev, unsigned char value) { - unsigned char cmd[512]; - memset(cmd, 0, 512); + unsigned char cmd[512]; + memset(cmd, 0, 512); - cmd[0] = CMD_SET_AUTO_BACKLIGHT_ONFF; - cmd[1] = value; - LOGD("cfbc_Set_naturelight_onoff\n"); - return Fbc_Set_BatchValue(fromDev, cmd, 2); + cmd[0] = CMD_SET_AUTO_BACKLIGHT_ONFF; + cmd[1] = value; + LOGD("cfbc_Set_naturelight_onoff\n"); + return Fbc_Set_BatchValue(fromDev, cmd, 2); } int CFbcCommunication::cfbc_Get_Auto_Backlight_OnOff(COMM_DEV_TYPE_E fromDev, int *value) { - LOGD("cfbc_get_naturelight_onoff\n"); - return Fbc_Get_Value_INT8(fromDev, CMD_GET_AUTO_BACKLIGHT_ONFF, value); + LOGD("cfbc_get_naturelight_onoff\n"); + return Fbc_Get_Value_INT8(fromDev, CMD_GET_AUTO_BACKLIGHT_ONFF, value); } int CFbcCommunication::cfbc_Get_WB_Batch(COMM_DEV_TYPE_E fromDev, unsigned char mode, unsigned char *r_gain, unsigned char *g_gain, unsigned char *b_gain, unsigned char *r_offset, unsigned char *g_offset, unsigned char *b_offset) { - unsigned char cmd[512]; - memset(cmd, 0, 512); + unsigned char cmd[512]; + memset(cmd, 0, 512); - cmd[0] = VPU_CMD_WB_VALUE | 0x80; - cmd[1] = mode; + cmd[0] = VPU_CMD_WB_VALUE | 0x80; + cmd[1] = mode; - Fbc_Get_BatchValue(fromDev, cmd, 2); - //*mode = cmd[1]; - *r_gain = cmd[2]; - *g_gain = cmd[3]; - *b_gain = cmd[4]; - *r_offset = cmd[5]; - *g_offset = cmd[6]; - *b_offset = cmd[7]; + Fbc_Get_BatchValue(fromDev, cmd, 2); + //*mode = cmd[1]; + *r_gain = cmd[2]; + *g_gain = cmd[3]; + *b_gain = cmd[4]; + *r_offset = cmd[5]; + *g_offset = cmd[6]; + *b_offset = cmd[7]; - return 0; + return 0; } int CFbcCommunication::cfbc_Set_backlight_onoff(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_BACKLIGHT_EN, value); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_BACKLIGHT_EN, value); } int CFbcCommunication::cfbc_Get_backlight_onoff(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_BACKLIGHT_EN, value); + return Fbc_Get_Value_INT8(fromDev, VPU_CMD_BACKLIGHT_EN, value); } int CFbcCommunication::cfbc_Set_LVDS_SSG_Set(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, CMD_LVDS_SSG_SET, value); + return Fbc_Set_Value_INT8(fromDev, CMD_LVDS_SSG_SET, value); } int CFbcCommunication::cfbc_Set_AUTO_ELEC_MODE(COMM_DEV_TYPE_E fromDev, int value) { - LOGD("%s cmd =0x%x, value=%d~~~~~~~~", __FUNCTION__, VPU_CMD_SET_ELEC_MODE, value); - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_SET_ELEC_MODE, value); + LOGD("%s cmd =0x%x, value=%d~~~~~~~~", __FUNCTION__, VPU_CMD_SET_ELEC_MODE, value); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_SET_ELEC_MODE, value); } int CFbcCommunication::cfbc_Get_AUTO_ELEC_MODE(COMM_DEV_TYPE_E fromDev, int *value) { - return 0; + return 0; } int CFbcCommunication::cfbc_Set_Thermal_state(COMM_DEV_TYPE_E fromDev, int value) { - LOGD("%s cmd =0x%x, data%d ~~~~~~~~~\n", __FUNCTION__, CMD_HDMI_STAT, value); - //return Fbc_Set_Value_INT8(fromDev, CMD_HDMI_STAT, value); - return Fbc_Set_Value_INT32(fromDev, CMD_HDMI_STAT, value); + LOGD("%s cmd =0x%x, data%d ~~~~~~~~~\n", __FUNCTION__, CMD_HDMI_STAT, value); + //return Fbc_Set_Value_INT8(fromDev, CMD_HDMI_STAT, value); + return Fbc_Set_Value_INT32(fromDev, CMD_HDMI_STAT, value); } int CFbcCommunication::cfbc_Set_LightSensor_N310(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, 0x84, value); - // return Fbc_Set_Value_INT8(fromDev, CMD_LIGHT_SENSOR, value); + return Fbc_Set_Value_INT8(fromDev, 0x84, value); + // return Fbc_Set_Value_INT8(fromDev, CMD_LIGHT_SENSOR, value); } int CFbcCommunication::cfbc_Get_LightSensor_N310(COMM_DEV_TYPE_E fromDev, int *value) { - // return Fbc_Get_Value_INT8(fromDev, CMD_LIGHT_SENSOR|0x80, value); - return 0; + // return Fbc_Get_Value_INT8(fromDev, CMD_LIGHT_SENSOR|0x80, value); + return 0; } int CFbcCommunication::cfbc_Set_Dream_Panel_N310(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, 0x83, value); - // return Fbc_Set_Value_INT8(fromDev, CMD_DREAM_PANEL, value); + return Fbc_Set_Value_INT8(fromDev, 0x83, value); + // return Fbc_Set_Value_INT8(fromDev, CMD_DREAM_PANEL, value); } int CFbcCommunication::cfbc_Get_Dream_Panel_N310(COMM_DEV_TYPE_E fromDev, int *value) { - // return Fbc_Get_Value_INT8(fromDev, CMD_DREAM_PANEL|0x80, value); - return 0; + // return Fbc_Get_Value_INT8(fromDev, CMD_DREAM_PANEL|0x80, value); + return 0; } int CFbcCommunication::cfbc_Set_MULT_PQ_N310(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, 0x81, value); - // return Fbc_Set_Value_INT8(fromDev, CMD_MUTI_PQ, value); + return Fbc_Set_Value_INT8(fromDev, 0x81, value); + // return Fbc_Set_Value_INT8(fromDev, CMD_MUTI_PQ, value); } int CFbcCommunication::cfbc_Get_MULT_PQ_N310(COMM_DEV_TYPE_E fromDev, int *value) { - // return Fbc_Get_Value_INT8(fromDev, CMD_MUTI_PQ|0x80, value); - return 0; + // return Fbc_Get_Value_INT8(fromDev, CMD_MUTI_PQ|0x80, value); + return 0; } int CFbcCommunication::cfbc_Set_MEMC_N310(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, 0x82, value); - // return Fbc_Set_Value_INT8(fromDev, CMD_MEMC, value); + return Fbc_Set_Value_INT8(fromDev, 0x82, value); + // return Fbc_Set_Value_INT8(fromDev, CMD_MEMC, value); } int CFbcCommunication::cfbc_Get_MEMC_N310(COMM_DEV_TYPE_E fromDev, int *value) { - // return Fbc_Get_Value_INT8(fromDev, CMD_MEMC|0x80, value); - return 0; + // return Fbc_Get_Value_INT8(fromDev, CMD_MEMC|0x80, value); + return 0; } int CFbcCommunication::cfbc_Set_Bluetooth_IIS_onoff(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, CMD_BLUETOOTH_I2S_STATUS, value); + return Fbc_Set_Value_INT8(fromDev, CMD_BLUETOOTH_I2S_STATUS, value); } int CFbcCommunication::cfbc_Get_Bluetooth_IIS_onoff(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, CMD_BLUETOOTH_I2S_STATUS | 0x80, value); + return Fbc_Get_Value_INT8(fromDev, CMD_BLUETOOTH_I2S_STATUS | 0x80, value); } int CFbcCommunication::cfbc_Set_Led_onoff(COMM_DEV_TYPE_E fromDev, int val_1, int val_2, int val_3) { - unsigned char cmd[512]; - memset(cmd, 0, 512); + unsigned char cmd[512]; + memset(cmd, 0, 512); - cmd[0] = CMD_SET_LED_MODE; - cmd[1] = val_1; - cmd[2] = val_2; - cmd[3] = val_3; + cmd[0] = CMD_SET_LED_MODE; + cmd[1] = val_1; + cmd[2] = val_2; + cmd[3] = val_3; - return Fbc_Set_BatchValue(fromDev, cmd, 4); + return Fbc_Set_BatchValue(fromDev, cmd, 4); } int CFbcCommunication::cfbc_Set_LockN_state(COMM_DEV_TYPE_E fromDev, int value) { - LOGD("%s cmd =0x%x, data%d ~~~~~~~~~\n", __FUNCTION__, CMD_SET_LOCKN_DISABLE, value); - return Fbc_Set_Value_INT8(fromDev, CMD_SET_LOCKN_DISABLE, value); + LOGD("%s cmd =0x%x, data%d ~~~~~~~~~\n", __FUNCTION__, CMD_SET_LOCKN_DISABLE, value); + return Fbc_Set_Value_INT8(fromDev, CMD_SET_LOCKN_DISABLE, value); } int CFbcCommunication::cfbc_SET_SPLIT_SCREEN_DEMO(COMM_DEV_TYPE_E fromDev, int value) { - LOGD("%s,cmd[%#x], data[%d]\n", __FUNCTION__, CMD_SET_SPLIT_SCREEN_DEMO, value); - return Fbc_Set_Value_INT8(fromDev, CMD_SET_SPLIT_SCREEN_DEMO, value); + LOGD("%s,cmd[%#x], data[%d]\n", __FUNCTION__, CMD_SET_SPLIT_SCREEN_DEMO, value); + return Fbc_Set_Value_INT8(fromDev, CMD_SET_SPLIT_SCREEN_DEMO, value); } int CFbcCommunication::cfbc_Set_AP_STANDBY_N310(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, CMD_PANEL_ON_OFF, value); - // return 0; + return Fbc_Set_Value_INT8(fromDev, CMD_PANEL_ON_OFF, value); + // return 0; } int CFbcCommunication::cfbc_Get_AP_STANDBY_N310(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, CMD_PANEL_ON_OFF | 0x80, value); - // return 0; + return Fbc_Get_Value_INT8(fromDev, CMD_PANEL_ON_OFF | 0x80, value); + // return 0; } int CFbcCommunication::cfbc_Set_Fbc_Uboot_Stage(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, CMD_SET_UBOOT_STAGE, value); + return Fbc_Set_Value_INT8(fromDev, CMD_SET_UBOOT_STAGE, value); } void CFbcCommunication::CFbcMsgQueue::handleMessage ( CMessage &msg ) { - LOGD ( "%s, CFbcCommunication::CFbcMsgQueue::handleMessage type = %d", __FUNCTION__, msg.mType ); + LOGD ( "%s, CFbcCommunication::CFbcMsgQueue::handleMessage type = %d", __FUNCTION__, msg.mType ); - switch ( msg.mType ) { - case TV_MSG_COMMON: - break; + switch ( msg.mType ) { + case TV_MSG_COMMON: + break; - case TV_MSG_SEND_KEY: { - LOGD("CFbcMsgQueue msg type = %d", msg.mType); - //CFbcCommunication *pFbc = ( CFbcCommunication * ) ( msg.mpData ); - //pFbc->mTvInput.sendkeyCode_Down(4); - //pFbc->mbDownHaveSend = 1;//true - break; - } + case TV_MSG_SEND_KEY: { + LOGD("CFbcMsgQueue msg type = %d", msg.mType); + //CFbcCommunication *pFbc = ( CFbcCommunication * ) ( msg.mpData ); + //pFbc->mTvInput.sendkeyCode_Down(4); + //pFbc->mbDownHaveSend = 1;//true + break; + } - default: - break; - } + default: + break; + } } diff --git a/tvapi/libtv/tv/CFbcCommunication.h b/tvapi/libtv/tv/CFbcCommunication.h index ba8b270..6bfb055 100644 --- a/tvapi/libtv/tv/CFbcCommunication.h +++ b/tvapi/libtv/tv/CFbcCommunication.h @@ -8,392 +8,392 @@ #include "tvutils//CTvInput.h" #include "../tvutils/CMsgQueue.h" typedef enum COMM_DEV_TYPE_NO { - COMM_DEV_CEC = 0, - COMM_DEV_SERIAL = 1, + COMM_DEV_CEC = 0, + COMM_DEV_SERIAL = 1, } COMM_DEV_TYPE_E; typedef enum vpu_modules_e { - VPU_MODULE_NULL = 0, - VPU_MODULE_VPU, //vpu uint - VPU_MODULE_TIMGEN, - VPU_MODULE_PATGEN, - VPU_MODULE_GAMMA, - VPU_MODULE_WB, //WhiteBalance - VPU_MODULE_BC, //Brightness&Contrast - VPU_MODULE_BCRGB, //RGB Brightness&Contrast - VPU_MODULE_CM2, - VPU_MODULE_CSC1, - VPU_MODULE_DNLP, - VPU_MODULE_CSC0, - VPU_MODULE_OSD, - VPU_MODULE_BLEND, - VPU_MODULE_DEMURE, //15 - VPU_MODULE_OUTPUT, //LVDS/VX1 output - VPU_MODULE_OSDDEC, //OSD decoder - VPU_MODULE_MAX, + VPU_MODULE_NULL = 0, + VPU_MODULE_VPU, //vpu uint + VPU_MODULE_TIMGEN, + VPU_MODULE_PATGEN, + VPU_MODULE_GAMMA, + VPU_MODULE_WB, //WhiteBalance + VPU_MODULE_BC, //Brightness&Contrast + VPU_MODULE_BCRGB, //RGB Brightness&Contrast + VPU_MODULE_CM2, + VPU_MODULE_CSC1, + VPU_MODULE_DNLP, + VPU_MODULE_CSC0, + VPU_MODULE_OSD, + VPU_MODULE_BLEND, + VPU_MODULE_DEMURE, //15 + VPU_MODULE_OUTPUT, //LVDS/VX1 output + VPU_MODULE_OSDDEC, //OSD decoder + VPU_MODULE_MAX, } vpu_modules_t; typedef enum fbc_command_e { - VPU_CMD_NULL = 0, - FBC_REBOOT_UPGRADE = 0x1, - FBC_USER_SETTING_DEFAULT = 0x02, - FBC_USER_SETTING_SET, - FBC_GET_HDCP_KEY, - FBC_PANEL_POWER, - FBC_SUSPEND_POWER, - //TOP CMD num:6 - VPU_CMD_INIT = 0x8, //parameter num 0 - VPU_CMD_ENABLE, //parameter num 1;bit0~6:module;bit7:enable(1) or disable(0) - VPU_CMD_BYPASS, //parameter num 1;bit0~6:module;bit7:bypass(1) or not(0) - VPU_CMD_OUTPUT_MUX, //parameter num 1;1:lvds;2:vx1;3:minilvds - VPU_CMD_TIMING, //parameter num 1;reference vpu_timing_t - VPU_CMD_SOURCE, //parameter num 1;reference vpu_source_t - VPU_CMD_GAMMA_MOD, //parameter num 1;reference vpu_gammamod_t - VPU_CMD_D2D3 = 0xf, //0xf:D2D3 - // + VPU_CMD_NULL = 0, + FBC_REBOOT_UPGRADE = 0x1, + FBC_USER_SETTING_DEFAULT = 0x02, + FBC_USER_SETTING_SET, + FBC_GET_HDCP_KEY, + FBC_PANEL_POWER, + FBC_SUSPEND_POWER, + //TOP CMD num:6 + VPU_CMD_INIT = 0x8, //parameter num 0 + VPU_CMD_ENABLE, //parameter num 1;bit0~6:module;bit7:enable(1) or disable(0) + VPU_CMD_BYPASS, //parameter num 1;bit0~6:module;bit7:bypass(1) or not(0) + VPU_CMD_OUTPUT_MUX, //parameter num 1;1:lvds;2:vx1;3:minilvds + VPU_CMD_TIMING, //parameter num 1;reference vpu_timing_t + VPU_CMD_SOURCE, //parameter num 1;reference vpu_source_t + VPU_CMD_GAMMA_MOD, //parameter num 1;reference vpu_gammamod_t + VPU_CMD_D2D3 = 0xf, //0xf:D2D3 + // - CMD_BRIDGE_SW_VER = 0x10, - CMD_DEVICE_ID, - CMD_CLIENT_TYPE, - CMD_DEVICE_NUM, - CMD_ACTIVE_KEY, - CMD_ACTIVE_STATUS, - CMD_PANEL_INFO, - CMD_LVDS_SSG_SET, + CMD_BRIDGE_SW_VER = 0x10, + CMD_DEVICE_ID, + CMD_CLIENT_TYPE, + CMD_DEVICE_NUM, + CMD_ACTIVE_KEY, + CMD_ACTIVE_STATUS, + CMD_PANEL_INFO, + CMD_LVDS_SSG_SET, - CMD_DBG_REGISTER_ACCESS = 0x18, - CMD_DBG_MEMORY_ACCESS, - CMD_DBG_SPI_ACCESS, - CMD_DBG_VPU_MEMORY_ACCESS, - CMD_DBG_MEMORY_TRANSFER, - CMD_INPUT_DOWN, - CMD_INPUT_UP, - CMD_FBC_MAIN_CODE_VERSION, + CMD_DBG_REGISTER_ACCESS = 0x18, + CMD_DBG_MEMORY_ACCESS, + CMD_DBG_SPI_ACCESS, + CMD_DBG_VPU_MEMORY_ACCESS, + CMD_DBG_MEMORY_TRANSFER, + CMD_INPUT_DOWN, + CMD_INPUT_UP, + CMD_FBC_MAIN_CODE_VERSION, - //0x1f reserved - //PQ+debug CMD num:32 - VPU_CMD_NATURE_LIGHT_EN = 0x20, //0 or 1;on or off ???? - VPU_CMD_BACKLIGHT_EN, //0 or 1;on or off - VPU_CMD_BRIGHTNESS, //parameter num 2;parameter1:distinguish two modules;parameter2:ui value - VPU_CMD_CONTRAST, //parameter num 2;parameter1:distinguish two modules;parameter2:ui value - VPU_CMD_BACKLIGHT, //parameter num 1; - VPU_CMD_RES1, //reserved - VPU_CMD_SATURATION, //parameter num 1; - VPU_CMD_DYNAMIC_CONTRAST, //0 or 1;?? - VPU_CMD_PICTURE_MODE, //?? - VPU_CMD_PATTERN_EN, //0 or 1;on or off - VPU_CMD_PATTEN_SEL, //0x2a parameter num 1;PATTEN SELECT - VPU_CMD_RES2, - VPU_CMD_RES3, - VPU_CMD_RES4, - VPU_CMD_RES5, - VPU_CMD_USER_VMUTE = 0x2e, - VPU_CMD_USER_GAMMA , - //0x30:sound_mode_def - VPU_CMD_COLOR_TEMPERATURE_DEF = 0x31, //def:factory setting - VPU_CMD_BRIGHTNESS_DEF, - VPU_CMD_CONTRAST_DEF, - VPU_CMD_COLOR_DEF, - VPU_CMD_HUE_DEF, - VPU_CMD_BACKLIGHT_DEF, - VPU_CMD_RES7, - VPU_CMD_AUTO_LUMA_EN = 0x38,//0 or 1;on or off;appoint to backlight? - VPU_CMD_HIST, //parameter num 0;read hist info - VPU_CMD_BLEND, //parameter num ?; - VPU_CMD_DEMURA, //parameter num ?; - VPU_CMD_CSC, //parameter num ?; - VPU_CMD_CM2, //parameter num 1;index - VPU_CMD_GAMMA, //parameter num 1;index - VPU_CMD_SRCIF, - //WB CMD num:10 - VPU_CMD_RED_GAIN_DEF = 0x40, - VPU_CMD_GREEN_GAIN_DEF, - VPU_CMD_BLUE_GAIN_DEF, - VPU_CMD_PRE_RED_OFFSET_DEF, - VPU_CMD_PRE_GREEN_OFFSET_DEF, - VPU_CMD_PRE_BLUE_OFFSET_DEF, - VPU_CMD_POST_RED_OFFSET_DEF, - VPU_CMD_POST_GREEN_OFFSET_DEF, - VPU_CMD_POST_BLUE_OFFSET_DEF, - VPU_CMD_RES9, - VPU_CMD_WB = 0x4a, - //DNLP PARM - VPU_CMD_DNLP_PARM, - VPU_CMD_WB_VALUE, - VPU_CMD_GRAY_PATTERN, - VPU_CMD_BURN, - CMD_HDMI_STAT, - VPU_CMD_READ = 0x80, - //VPU_CMD_HUE_ADJUST, //parameter num 1; - //VPU_CMD_WB, //parameter num 3;one parameter include two items so that six items can all be included - VPU_CMD_MAX = 50,//temp define 50 // + //0x1f reserved + //PQ+debug CMD num:32 + VPU_CMD_NATURE_LIGHT_EN = 0x20, //0 or 1;on or off ???? + VPU_CMD_BACKLIGHT_EN, //0 or 1;on or off + VPU_CMD_BRIGHTNESS, //parameter num 2;parameter1:distinguish two modules;parameter2:ui value + VPU_CMD_CONTRAST, //parameter num 2;parameter1:distinguish two modules;parameter2:ui value + VPU_CMD_BACKLIGHT, //parameter num 1; + VPU_CMD_RES1, //reserved + VPU_CMD_SATURATION, //parameter num 1; + VPU_CMD_DYNAMIC_CONTRAST, //0 or 1;?? + VPU_CMD_PICTURE_MODE, //?? + VPU_CMD_PATTERN_EN, //0 or 1;on or off + VPU_CMD_PATTEN_SEL, //0x2a parameter num 1;PATTEN SELECT + VPU_CMD_RES2, + VPU_CMD_RES3, + VPU_CMD_RES4, + VPU_CMD_RES5, + VPU_CMD_USER_VMUTE = 0x2e, + VPU_CMD_USER_GAMMA , + //0x30:sound_mode_def + VPU_CMD_COLOR_TEMPERATURE_DEF = 0x31, //def:factory setting + VPU_CMD_BRIGHTNESS_DEF, + VPU_CMD_CONTRAST_DEF, + VPU_CMD_COLOR_DEF, + VPU_CMD_HUE_DEF, + VPU_CMD_BACKLIGHT_DEF, + VPU_CMD_RES7, + VPU_CMD_AUTO_LUMA_EN = 0x38,//0 or 1;on or off;appoint to backlight? + VPU_CMD_HIST, //parameter num 0;read hist info + VPU_CMD_BLEND, //parameter num ?; + VPU_CMD_DEMURA, //parameter num ?; + VPU_CMD_CSC, //parameter num ?; + VPU_CMD_CM2, //parameter num 1;index + VPU_CMD_GAMMA, //parameter num 1;index + VPU_CMD_SRCIF, + //WB CMD num:10 + VPU_CMD_RED_GAIN_DEF = 0x40, + VPU_CMD_GREEN_GAIN_DEF, + VPU_CMD_BLUE_GAIN_DEF, + VPU_CMD_PRE_RED_OFFSET_DEF, + VPU_CMD_PRE_GREEN_OFFSET_DEF, + VPU_CMD_PRE_BLUE_OFFSET_DEF, + VPU_CMD_POST_RED_OFFSET_DEF, + VPU_CMD_POST_GREEN_OFFSET_DEF, + VPU_CMD_POST_BLUE_OFFSET_DEF, + VPU_CMD_RES9, + VPU_CMD_WB = 0x4a, + //DNLP PARM + VPU_CMD_DNLP_PARM, + VPU_CMD_WB_VALUE, + VPU_CMD_GRAY_PATTERN, + VPU_CMD_BURN, + CMD_HDMI_STAT, + VPU_CMD_READ = 0x80, + //VPU_CMD_HUE_ADJUST, //parameter num 1; + //VPU_CMD_WB, //parameter num 3;one parameter include two items so that six items can all be included + VPU_CMD_MAX = 50,//temp define 50 // - //audio cmd - AUDIO_CMD_SET_SOURCE = 0x50, - AUDIO_CMD_SET_MASTER_VOLUME, - AUDIO_CMD_SET_CHANNEL_VOLUME, - AUDIO_CMD_SET_SUBCHANNEL_VOLUME, - AUDIO_CMD_SET_MASTER_VOLUME_GAIN, - AUDIO_CMD_SET_CHANNEL_VOLUME_INDEX, - AUDIO_CMD_SET_VOLUME_BAR, - AUDIO_CMD_SET_MUTE, - AUDIO_CMD_SET_EQ_MODE, - AUDIO_CMD_SET_BALANCE, - AUDIO_CMD_GET_SOURCE, - AUDIO_CMD_GET_MASTER_VOLUME, - AUDIO_CMD_GET_CHANNEL_VOLUME, - AUDIO_CMD_GET_SUBCHANNEL_VOLUME, - AUDIO_CMD_GET_MASTER_VOLUME_GAIN, - AUDIO_CMD_GET_CHANNEL_VOLUME_INDEX, - AUDIO_CMD_GET_VOLUME_BAR, - AUDIO_CMD_GET_MUTE, - AUDIO_CMD_GET_EQ_MODE, - AUDIO_CMD_GET_BALANCE, + //audio cmd + AUDIO_CMD_SET_SOURCE = 0x50, + AUDIO_CMD_SET_MASTER_VOLUME, + AUDIO_CMD_SET_CHANNEL_VOLUME, + AUDIO_CMD_SET_SUBCHANNEL_VOLUME, + AUDIO_CMD_SET_MASTER_VOLUME_GAIN, + AUDIO_CMD_SET_CHANNEL_VOLUME_INDEX, + AUDIO_CMD_SET_VOLUME_BAR, + AUDIO_CMD_SET_MUTE, + AUDIO_CMD_SET_EQ_MODE, + AUDIO_CMD_SET_BALANCE, + AUDIO_CMD_GET_SOURCE, + AUDIO_CMD_GET_MASTER_VOLUME, + AUDIO_CMD_GET_CHANNEL_VOLUME, + AUDIO_CMD_GET_SUBCHANNEL_VOLUME, + AUDIO_CMD_GET_MASTER_VOLUME_GAIN, + AUDIO_CMD_GET_CHANNEL_VOLUME_INDEX, + AUDIO_CMD_GET_VOLUME_BAR, + AUDIO_CMD_GET_MUTE, + AUDIO_CMD_GET_EQ_MODE, + AUDIO_CMD_GET_BALANCE, - VPU_CMD_SET_ELEC_MODE = 0x64, - CMD_SET_LED_MODE = 0x65, + VPU_CMD_SET_ELEC_MODE = 0x64, + CMD_SET_LED_MODE = 0x65, - CMD_SET_FACTORY_SN = 0x66, - CMD_GET_FACTORY_SN, - CMD_COMMUNICATION_TEST, - CMD_CLR_SETTINGS_DEFAULT, - CMD_BLUETOOTH_I2S_STATUS = 0x6a, - CMD_PANEL_ON_OFF = 0x6b, + CMD_SET_FACTORY_SN = 0x66, + CMD_GET_FACTORY_SN, + CMD_COMMUNICATION_TEST, + CMD_CLR_SETTINGS_DEFAULT, + CMD_BLUETOOTH_I2S_STATUS = 0x6a, + CMD_PANEL_ON_OFF = 0x6b, - CMD_HDMI_REG = 0x70, - CMD_SET_PROJECT_SELECT = 0x71, - CMD_GET_PROJECT_SELECT = 0x72, - CMD_SET_LOCKN_DISABLE = 0x73, //0x73 - CMD_SET_SPLIT_SCREEN_DEMO = 0X74, - CMD_SET_UBOOT_STAGE = 0x7b, + CMD_HDMI_REG = 0x70, + CMD_SET_PROJECT_SELECT = 0x71, + CMD_GET_PROJECT_SELECT = 0x72, + CMD_SET_LOCKN_DISABLE = 0x73, //0x73 + CMD_SET_SPLIT_SCREEN_DEMO = 0X74, + CMD_SET_UBOOT_STAGE = 0x7b, - CMD_SET_AUTO_BACKLIGHT_ONFF = 0x85, - CMD_GET_AUTO_BACKLIGHT_ONFF = 0x86, + CMD_SET_AUTO_BACKLIGHT_ONFF = 0x85, + CMD_GET_AUTO_BACKLIGHT_ONFF = 0x86, } fbc_command_t; typedef struct REQUEST_REPLY_CMD { - CCondition WaitReplyCondition; - int WaitDevNo; - int WaitCmd; - int WaitTimeOut; - unsigned char *replyData; - int reDataLen; + CCondition WaitReplyCondition; + int WaitDevNo; + int WaitCmd; + int WaitTimeOut; + unsigned char *replyData; + int reDataLen; } REQUEST_REPLY_S; class CFbcCommunication: public CThread { public: - static const unsigned char CEC_CMD_WIFI = 0x01; - static const unsigned char CEC_CMD_ETHERNET = 0x02; - static const unsigned char CEC_CMD_3D_TIMING = 0x03; - static const unsigned char CEC_CMD_PANEL_REVERSE = 0x04; - static const unsigned char CEC_CMD_VPU_INIT = 0x08; - static const unsigned char CEC_CMD_VPU_ENABLE = 0x09; - static const unsigned char CEC_CMD_VPU_BYPASS = 0x0a; - static const unsigned char CEC_CMD_VPU_OUTPUT_MUX = 0x0b; - static const unsigned char CEC_CMD_VPU_TIMING = 0x0c; - static const unsigned char CEC_CMD_VPU_SOURCE = 0x0d; - static const unsigned char CEC_CMD_BRIDGE_SW_VER = 0x10; - static const unsigned char CEC_CMD_DEVICE_ID = 0x11; - static const unsigned char CEC_CMD_CLIENT_TYPE = 0x12; - static const unsigned char CEC_CMD_DEVICE_NUM = 0x13; - static const unsigned char CEC_CMD_ACTIVE_KEY = 0x14; - static const unsigned char CEC_CMD_ACTIVE_STATUS = 0x15; + static const unsigned char CEC_CMD_WIFI = 0x01; + static const unsigned char CEC_CMD_ETHERNET = 0x02; + static const unsigned char CEC_CMD_3D_TIMING = 0x03; + static const unsigned char CEC_CMD_PANEL_REVERSE = 0x04; + static const unsigned char CEC_CMD_VPU_INIT = 0x08; + static const unsigned char CEC_CMD_VPU_ENABLE = 0x09; + static const unsigned char CEC_CMD_VPU_BYPASS = 0x0a; + static const unsigned char CEC_CMD_VPU_OUTPUT_MUX = 0x0b; + static const unsigned char CEC_CMD_VPU_TIMING = 0x0c; + static const unsigned char CEC_CMD_VPU_SOURCE = 0x0d; + static const unsigned char CEC_CMD_BRIDGE_SW_VER = 0x10; + static const unsigned char CEC_CMD_DEVICE_ID = 0x11; + static const unsigned char CEC_CMD_CLIENT_TYPE = 0x12; + static const unsigned char CEC_CMD_DEVICE_NUM = 0x13; + static const unsigned char CEC_CMD_ACTIVE_KEY = 0x14; + static const unsigned char CEC_CMD_ACTIVE_STATUS = 0x15; - static const unsigned char CEC_CMD_DBG_REGISTER_ACCESS = 0x18; - static const unsigned char CEC_CMD_DBG_MEMORY_ACCESS = 0x19; - static const unsigned char CEC_CMD_DBG_SPI_ACCESS = 0x1a; - static const unsigned char CEC_CMD_DBG_VPU_MEMORY_ACCESS = 0x1b; - static const unsigned char CEC_CMD_DBG_MEMORY_TRANSFER = 0x1c; - static const unsigned char CEC_CMD_INPUT_KEY_DOWN = 0x1d; - static const unsigned char CEC_CMD_INPUT_KEY_UP = 0x1e; - static const unsigned char CEC_CMD_REBOOT = 0x1f; - static const unsigned char CEC_CMD_NATURE_LIGHT_ONOFF = 0x20; - static const unsigned char CEC_CMD_USR_BACKLIGHT_ONOFF = 0x21; - static const unsigned char CEC_CMD_USR_BRIGHTNESS = 0x22; - static const unsigned char CEC_CMD_USR_CONTRAST = 0x23; - static const unsigned char CEC_CMD_USR_BACKLIGHT = 0x24; - static const unsigned char CEC_CMD_USR_SATURATION = 0x26; - static const unsigned char CEC_CMD_USR_DYNAMIC_CONTRAST = 0x27; - static const unsigned char CEC_CMD_USR_PICTURE_MODE = 0x28; - static const unsigned char CEC_CMD_TEST_PATTERN_ONOFF = 0x29; - static const unsigned char CEC_CMD_TEST_PATTERN_SELECT = 0x2a; - static const unsigned char CEC_CMD_USER_GAMMA = 0x2f; - static const unsigned char CEC_CMD_DEF_SOUND_MODE = 0x30; - static const unsigned char CEC_CMD_DEF_COLOR_TEMPERATURE = 0x31; - static const unsigned char CEC_CMD_DEF_BRIGHTNESS = 0x32; - static const unsigned char CEC_CMD_DEF_CONTRAST = 0x33; - static const unsigned char CEC_CMD_DEF_COLOR = 0x34; - static const unsigned char CEC_CMD_DEF_BACKLIGHT = 0x36; - static const unsigned char CEC_CMD_AUTO_LUMA_ONOFF = 0x38; - static const unsigned char CEC_CMD_HISTOGRAM = 0x39; - static const unsigned char CEC_CMD_BLEND = 0x3a; - static const unsigned char CEC_CMD_DEMULA = 0x3b; - static const unsigned char CEC_CMD_COLOR_SPACE_CONVERSION = 0x3c; - static const unsigned char CEC_CMD_CM2 = 0x3d; - static const unsigned char CEC_CMD_DEF_RED_GAIN = 0x40; - static const unsigned char CEC_CMD_DEF_GREEN_GAIN = 0x41; - static const unsigned char CEC_CMD_DEF_BLUE_GAIN = 0x42; - static const unsigned char CEC_CMD_DEF_RED_OFFSET = 0x43; - static const unsigned char CEC_CMD_DEF_GREEN_OFFSET = 0x44; - static const unsigned char CEC_CMD_DEF_BLUE_OFFSET = 0x45; - static const unsigned char CEC_CMD_DEF_PRE_RED_OFFSET = 0x46; - static const unsigned char CEC_CMD_DEF_PRE_GREEN_OFFSET = 0x47; - static const unsigned char CEC_CMD_DEF_PRE_BLUE_OFFSET = 0x48; - static const unsigned char CEC_CMD_WHITEBALANCE = 0x4a; - static const unsigned char CEC_CMD_SET_SW_VERSION = 0x57; - static const unsigned char CEC_CMD_3D = 0xd0; + static const unsigned char CEC_CMD_DBG_REGISTER_ACCESS = 0x18; + static const unsigned char CEC_CMD_DBG_MEMORY_ACCESS = 0x19; + static const unsigned char CEC_CMD_DBG_SPI_ACCESS = 0x1a; + static const unsigned char CEC_CMD_DBG_VPU_MEMORY_ACCESS = 0x1b; + static const unsigned char CEC_CMD_DBG_MEMORY_TRANSFER = 0x1c; + static const unsigned char CEC_CMD_INPUT_KEY_DOWN = 0x1d; + static const unsigned char CEC_CMD_INPUT_KEY_UP = 0x1e; + static const unsigned char CEC_CMD_REBOOT = 0x1f; + static const unsigned char CEC_CMD_NATURE_LIGHT_ONOFF = 0x20; + static const unsigned char CEC_CMD_USR_BACKLIGHT_ONOFF = 0x21; + static const unsigned char CEC_CMD_USR_BRIGHTNESS = 0x22; + static const unsigned char CEC_CMD_USR_CONTRAST = 0x23; + static const unsigned char CEC_CMD_USR_BACKLIGHT = 0x24; + static const unsigned char CEC_CMD_USR_SATURATION = 0x26; + static const unsigned char CEC_CMD_USR_DYNAMIC_CONTRAST = 0x27; + static const unsigned char CEC_CMD_USR_PICTURE_MODE = 0x28; + static const unsigned char CEC_CMD_TEST_PATTERN_ONOFF = 0x29; + static const unsigned char CEC_CMD_TEST_PATTERN_SELECT = 0x2a; + static const unsigned char CEC_CMD_USER_GAMMA = 0x2f; + static const unsigned char CEC_CMD_DEF_SOUND_MODE = 0x30; + static const unsigned char CEC_CMD_DEF_COLOR_TEMPERATURE = 0x31; + static const unsigned char CEC_CMD_DEF_BRIGHTNESS = 0x32; + static const unsigned char CEC_CMD_DEF_CONTRAST = 0x33; + static const unsigned char CEC_CMD_DEF_COLOR = 0x34; + static const unsigned char CEC_CMD_DEF_BACKLIGHT = 0x36; + static const unsigned char CEC_CMD_AUTO_LUMA_ONOFF = 0x38; + static const unsigned char CEC_CMD_HISTOGRAM = 0x39; + static const unsigned char CEC_CMD_BLEND = 0x3a; + static const unsigned char CEC_CMD_DEMULA = 0x3b; + static const unsigned char CEC_CMD_COLOR_SPACE_CONVERSION = 0x3c; + static const unsigned char CEC_CMD_CM2 = 0x3d; + static const unsigned char CEC_CMD_DEF_RED_GAIN = 0x40; + static const unsigned char CEC_CMD_DEF_GREEN_GAIN = 0x41; + static const unsigned char CEC_CMD_DEF_BLUE_GAIN = 0x42; + static const unsigned char CEC_CMD_DEF_RED_OFFSET = 0x43; + static const unsigned char CEC_CMD_DEF_GREEN_OFFSET = 0x44; + static const unsigned char CEC_CMD_DEF_BLUE_OFFSET = 0x45; + static const unsigned char CEC_CMD_DEF_PRE_RED_OFFSET = 0x46; + static const unsigned char CEC_CMD_DEF_PRE_GREEN_OFFSET = 0x47; + static const unsigned char CEC_CMD_DEF_PRE_BLUE_OFFSET = 0x48; + static const unsigned char CEC_CMD_WHITEBALANCE = 0x4a; + static const unsigned char CEC_CMD_SET_SW_VERSION = 0x57; + static const unsigned char CEC_CMD_3D = 0xd0; - friend class CTvMsgQueue; - class CFbcMsgQueue: public CMsgQueueThread { - public: - static const int TV_MSG_COMMON = 0; - static const int TV_MSG_SEND_KEY = 1; - private: - virtual void handleMessage ( CMessage &msg ); - }; - CFbcCommunication(); - ~CFbcCommunication(); - int start(); - //--------------------------------------------- + friend class CTvMsgQueue; + class CFbcMsgQueue: public CMsgQueueThread { + public: + static const int TV_MSG_COMMON = 0; + static const int TV_MSG_SEND_KEY = 1; + private: + virtual void handleMessage ( CMessage &msg ); + }; + CFbcCommunication(); + ~CFbcCommunication(); + int start(); + //--------------------------------------------- - //--------------------------------------------- - void testUart(); - int handleCmd(COMM_DEV_TYPE_E fromDev, int cmd[], int *pRetValue); - int sendDataOneway(int devno, unsigned char *pData, int dataLen, int flags); - int sendDataAndWaitReply(int devno, int waitForDevno, int waitForCmd, unsigned char *pData, int dataLen, int timeout, unsigned char *pReData, int *reDataLen, int flags); - int closeAll(); - int SetUpgradeFlag(int flag); - int uartReadStream(unsigned char *retData, int rd_max_len, int timeout); - unsigned int Calcrc32(unsigned int crc, const unsigned char *ptr, unsigned int buf_len); - int cfbc_Set_Gain_Red(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Gain_Red(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Gain_Green(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Gain_Green(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Gain_Blue(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Gain_Blue(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Offset_Red(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Offset_Red(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Offset_Green(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Offset_Green(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Offset_Blue(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Offset_Blue(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_WB_Initial(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_WB_Initial(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_ColorTemp_Mode(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_ColorTemp_Mode(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Test_Pattern(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Test_Pattern(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Picture_Mode(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Picture_Mode(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Contrast(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Contrast(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Brightness(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Brightness(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Saturation(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Saturation(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_HueColorTint(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_HueColorTint(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Backlight(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Backlight(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Source(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Source(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Mute(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Mute(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Volume_Bar(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Volume_Bar(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Balance(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Balance(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Master_Volume(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Master_Volume(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_CM(COMM_DEV_TYPE_E fromDev, unsigned char value); - int cfbc_Get_CM(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_DNLP(COMM_DEV_TYPE_E fromDev, unsigned char value); - int cfbc_Get_DNLP(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Gamma(COMM_DEV_TYPE_E fromDev, unsigned char value); - int cfbc_Get_Gamma(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_WhiteBalance_OnOff(COMM_DEV_TYPE_E fromDev, unsigned char value); - int cfbc_Get_WhiteBalance_OnOff(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Auto_Backlight_OnOff(COMM_DEV_TYPE_E fromDev, unsigned char value); - int cfbc_Get_Auto_Backlight_OnOff(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_WhiteBalance_GrayPattern_OnOff(COMM_DEV_TYPE_E fromDev, int onOff); - int cfbc_TestPattern_Select(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_WhiteBalance_SetGrayPattern(COMM_DEV_TYPE_E fromDev, unsigned char value); - int cfbc_Get_WB_Batch(COMM_DEV_TYPE_E fromDev, unsigned char mode, unsigned char *r_gain, unsigned char *g_gain, unsigned char *b_gain, unsigned char *r_offset, unsigned char *g_offset, unsigned char *b_offset); - int cfbc_Set_WB_Batch(COMM_DEV_TYPE_E fromDev, unsigned char mode, unsigned char r_gain, unsigned char g_gain, unsigned char b_gain, unsigned char r_offset, unsigned char g_offset, unsigned char b_offset); - int cfbc_Set_backlight_onoff(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_backlight_onoff(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_LVDS_SSG_Set(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Set_AUTO_ELEC_MODE(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_AUTO_ELEC_MODE(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Get_FBC_MAINCODE_Version(COMM_DEV_TYPE_E fromDev, char sw_ver[], char build_time[], char git_ver[], char git_branch[], char build_name[]); - int cfbc_Get_FBC_Get_PANel_INFO(COMM_DEV_TYPE_E fromDev, char panel_model[]); - int cfbc_Set_FBC_panel_power_switch(COMM_DEV_TYPE_E fromDev, int switch_val); - int cfbc_Set_FBC_suspend(COMM_DEV_TYPE_E fromDev, int switch_val); - int cfbc_FBC_Send_Key_To_Fbc(COMM_DEV_TYPE_E fromDev, int keycode, int param); - int cfbc_Get_FBC_PANEL_REVERSE(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Get_FBC_PANEL_OUTPUT(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_FBC_project_id(COMM_DEV_TYPE_E fromDev, int prj_id); - int cfbc_Get_FBC_project_id(COMM_DEV_TYPE_E fromDev, int *prj_id); - int cfbc_SendRebootToUpgradeCmd(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Set_FBC_User_Setting_Default(COMM_DEV_TYPE_E fromDev, int param); - int cfbc_Set_FBC_Factory_SN(COMM_DEV_TYPE_E fromDev, const char *pSNval) ; - int cfbc_Get_FBC_Factory_SN(COMM_DEV_TYPE_E fromDev, char FactorySN[]); - int cfbc_Set_FBC_Audio_Source(COMM_DEV_TYPE_E fromDev, int value); + //--------------------------------------------- + void testUart(); + int handleCmd(COMM_DEV_TYPE_E fromDev, int cmd[], int *pRetValue); + int sendDataOneway(int devno, unsigned char *pData, int dataLen, int flags); + int sendDataAndWaitReply(int devno, int waitForDevno, int waitForCmd, unsigned char *pData, int dataLen, int timeout, unsigned char *pReData, int *reDataLen, int flags); + int closeAll(); + int SetUpgradeFlag(int flag); + int uartReadStream(unsigned char *retData, int rd_max_len, int timeout); + unsigned int Calcrc32(unsigned int crc, const unsigned char *ptr, unsigned int buf_len); + int cfbc_Set_Gain_Red(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Gain_Red(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Gain_Green(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Gain_Green(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Gain_Blue(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Gain_Blue(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Offset_Red(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Offset_Red(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Offset_Green(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Offset_Green(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Offset_Blue(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Offset_Blue(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_WB_Initial(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_WB_Initial(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_ColorTemp_Mode(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_ColorTemp_Mode(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Test_Pattern(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Test_Pattern(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Picture_Mode(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Picture_Mode(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Contrast(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Contrast(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Brightness(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Brightness(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Saturation(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Saturation(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_HueColorTint(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_HueColorTint(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Backlight(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Backlight(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Source(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Source(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Mute(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Mute(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Volume_Bar(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Volume_Bar(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Balance(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Balance(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Master_Volume(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Master_Volume(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_CM(COMM_DEV_TYPE_E fromDev, unsigned char value); + int cfbc_Get_CM(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_DNLP(COMM_DEV_TYPE_E fromDev, unsigned char value); + int cfbc_Get_DNLP(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Gamma(COMM_DEV_TYPE_E fromDev, unsigned char value); + int cfbc_Get_Gamma(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_WhiteBalance_OnOff(COMM_DEV_TYPE_E fromDev, unsigned char value); + int cfbc_Get_WhiteBalance_OnOff(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Auto_Backlight_OnOff(COMM_DEV_TYPE_E fromDev, unsigned char value); + int cfbc_Get_Auto_Backlight_OnOff(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_WhiteBalance_GrayPattern_OnOff(COMM_DEV_TYPE_E fromDev, int onOff); + int cfbc_TestPattern_Select(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_WhiteBalance_SetGrayPattern(COMM_DEV_TYPE_E fromDev, unsigned char value); + int cfbc_Get_WB_Batch(COMM_DEV_TYPE_E fromDev, unsigned char mode, unsigned char *r_gain, unsigned char *g_gain, unsigned char *b_gain, unsigned char *r_offset, unsigned char *g_offset, unsigned char *b_offset); + int cfbc_Set_WB_Batch(COMM_DEV_TYPE_E fromDev, unsigned char mode, unsigned char r_gain, unsigned char g_gain, unsigned char b_gain, unsigned char r_offset, unsigned char g_offset, unsigned char b_offset); + int cfbc_Set_backlight_onoff(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_backlight_onoff(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_LVDS_SSG_Set(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Set_AUTO_ELEC_MODE(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_AUTO_ELEC_MODE(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Get_FBC_MAINCODE_Version(COMM_DEV_TYPE_E fromDev, char sw_ver[], char build_time[], char git_ver[], char git_branch[], char build_name[]); + int cfbc_Get_FBC_Get_PANel_INFO(COMM_DEV_TYPE_E fromDev, char panel_model[]); + int cfbc_Set_FBC_panel_power_switch(COMM_DEV_TYPE_E fromDev, int switch_val); + int cfbc_Set_FBC_suspend(COMM_DEV_TYPE_E fromDev, int switch_val); + int cfbc_FBC_Send_Key_To_Fbc(COMM_DEV_TYPE_E fromDev, int keycode, int param); + int cfbc_Get_FBC_PANEL_REVERSE(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Get_FBC_PANEL_OUTPUT(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_FBC_project_id(COMM_DEV_TYPE_E fromDev, int prj_id); + int cfbc_Get_FBC_project_id(COMM_DEV_TYPE_E fromDev, int *prj_id); + int cfbc_SendRebootToUpgradeCmd(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Set_FBC_User_Setting_Default(COMM_DEV_TYPE_E fromDev, int param); + int cfbc_Set_FBC_Factory_SN(COMM_DEV_TYPE_E fromDev, const char *pSNval) ; + int cfbc_Get_FBC_Factory_SN(COMM_DEV_TYPE_E fromDev, char FactorySN[]); + int cfbc_Set_FBC_Audio_Source(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Set_Thermal_state(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Set_LightSensor_N310(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_LightSensor_N310(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Dream_Panel_N310(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Dream_Panel_N310(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_MULT_PQ_N310(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_MULT_PQ_N310(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_MEMC_N310(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_MEMC_N310(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_LockN_state(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Set_VMute(COMM_DEV_TYPE_E fromDev, unsigned char value); - int cfbc_SET_SPLIT_SCREEN_DEMO(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Set_Bluetooth_IIS_onoff(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Bluetooth_IIS_onoff(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Led_onoff(COMM_DEV_TYPE_E fromDev, int val_1, int val_2, int val_3); - int cfbc_Set_AP_STANDBY_N310(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_AP_STANDBY_N310(COMM_DEV_TYPE_E fromDev, int *value); - virtual int cfbc_Set_Fbc_Uboot_Stage(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Set_Thermal_state(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Set_LightSensor_N310(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_LightSensor_N310(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Dream_Panel_N310(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Dream_Panel_N310(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_MULT_PQ_N310(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_MULT_PQ_N310(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_MEMC_N310(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_MEMC_N310(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_LockN_state(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Set_VMute(COMM_DEV_TYPE_E fromDev, unsigned char value); + int cfbc_SET_SPLIT_SCREEN_DEMO(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Set_Bluetooth_IIS_onoff(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_Bluetooth_IIS_onoff(COMM_DEV_TYPE_E fromDev, int *value); + int cfbc_Set_Led_onoff(COMM_DEV_TYPE_E fromDev, int val_1, int val_2, int val_3); + int cfbc_Set_AP_STANDBY_N310(COMM_DEV_TYPE_E fromDev, int value); + int cfbc_Get_AP_STANDBY_N310(COMM_DEV_TYPE_E fromDev, int *value); + virtual int cfbc_Set_Fbc_Uboot_Stage(COMM_DEV_TYPE_E fromDev, int value); private: - //now,just one item in list,haha... - void showTime(struct timeval *_time); - long getTime(void); - int rmFromRequestList(); - int addToRequestList(); - void initCrc32Table(); - void sendAckCmd(bool isOk); - unsigned int GetCrc32(unsigned char *InStr, unsigned int len); - int processData(COMM_DEV_TYPE_E fromDev, unsigned char *PData, int dataLen); - int uartReadData(unsigned char *retData, int *retLen); - int Fbc_Set_Value_INT8(COMM_DEV_TYPE_E toDev, int cmd_type, int value); - int Fbc_Get_Value_INT8(COMM_DEV_TYPE_E fromDev, int cmd_type, int *value); - int Fbc_Set_Value_INT32(COMM_DEV_TYPE_E toDev, int cmd_type, int value); - int Fbc_Get_BatchValue(COMM_DEV_TYPE_E toDev, unsigned char *cmd_buf, int count); - int Fbc_Set_BatchValue(COMM_DEV_TYPE_E fromDev, unsigned char *cmd_buf, int count); - int cfbc_Set_Get_BatchValue(COMM_DEV_TYPE_E fromDev, unsigned char *cmd_buf, int count, int isSet); - bool threadLoop(); + //now,just one item in list,haha... + void showTime(struct timeval *_time); + long getTime(void); + int rmFromRequestList(); + int addToRequestList(); + void initCrc32Table(); + void sendAckCmd(bool isOk); + unsigned int GetCrc32(unsigned char *InStr, unsigned int len); + int processData(COMM_DEV_TYPE_E fromDev, unsigned char *PData, int dataLen); + int uartReadData(unsigned char *retData, int *retLen); + int Fbc_Set_Value_INT8(COMM_DEV_TYPE_E toDev, int cmd_type, int value); + int Fbc_Get_Value_INT8(COMM_DEV_TYPE_E fromDev, int cmd_type, int *value); + int Fbc_Set_Value_INT32(COMM_DEV_TYPE_E toDev, int cmd_type, int value); + int Fbc_Get_BatchValue(COMM_DEV_TYPE_E toDev, unsigned char *cmd_buf, int count); + int Fbc_Set_BatchValue(COMM_DEV_TYPE_E fromDev, unsigned char *cmd_buf, int count); + int cfbc_Set_Get_BatchValue(COMM_DEV_TYPE_E fromDev, unsigned char *cmd_buf, int count, int isSet); + bool threadLoop(); - int mUpgradeFlag; - CHdmiCec mHdmiCec; - CSerialPort mSerialPort; - Epoll mEpoll; - mutable CMutex mLock; - REQUEST_REPLY_S mReplyList; - //list - epoll_event m_event; - unsigned char *mpRevDataBuf; - unsigned int mCrc32Table[256]; - bool mbSendKeyCode; - CTvInput mTvInput; - CFbcMsgQueue mFbcMsgQueue; - int mbDownHaveSend; + int mUpgradeFlag; + CHdmiCec mHdmiCec; + CSerialPort mSerialPort; + Epoll mEpoll; + mutable CMutex mLock; + REQUEST_REPLY_S mReplyList; + //list + epoll_event m_event; + unsigned char *mpRevDataBuf; + unsigned int mCrc32Table[256]; + bool mbSendKeyCode; + CTvInput mTvInput; + CFbcMsgQueue mFbcMsgQueue; + int mbDownHaveSend; - int mbFbcKeyEnterDown; - nsecs_t mFbcEnterKeyDownTime; + int mbFbcKeyEnterDown; + nsecs_t mFbcEnterKeyDownTime; }; extern CFbcCommunication *GetSingletonFBC(); diff --git a/tvapi/libtv/tv/CFrontEnd.cpp b/tvapi/libtv/tv/CFrontEnd.cpp index 86c4a0c..5453a26 100644 --- a/tvapi/libtv/tv/CFrontEnd.cpp +++ b/tvapi/libtv/tv/CFrontEnd.cpp @@ -24,643 +24,643 @@ extern "C" { CFrontEnd::CFrontEnd() { - mFrontDevID = FE_DEV_ID; - mpObserver = NULL; - mCurFineFreq = 0; - mCurMode = FE_ANALOG; - mCurFreq = -1; - mCurPara1 = -1; - mCurPara2 = -1; - mbFEOpened = false; + mFrontDevID = FE_DEV_ID; + mpObserver = NULL; + mCurFineFreq = 0; + mCurMode = FE_ANALOG; + mCurFreq = -1; + mCurPara1 = -1; + mCurPara2 = -1; + mbFEOpened = false; } CFrontEnd::~CFrontEnd() { - AM_EVT_Unsubscribe(mFrontDevID, AM_FEND_EVT_STATUS_CHANGED, dmd_fend_callback, NULL); - if (mFrontDevID == FE_DEV_ID) - AM_FEND_Close(mFrontDevID); - mFrontDevID = -1; + AM_EVT_Unsubscribe(mFrontDevID, AM_FEND_EVT_STATUS_CHANGED, dmd_fend_callback, NULL); + if (mFrontDevID == FE_DEV_ID) + AM_FEND_Close(mFrontDevID); + mFrontDevID = -1; } int CFrontEnd::Open(int mode) { - AM_FEND_OpenPara_t para; - int rc = 0; - - if (mbFEOpened) { - LOGD("FrontEnd have opened, return"); - return 0; - } - mbFEOpened = true; - memset(¶, 0, sizeof(AM_FEND_OpenPara_t)); - para.mode = mode; - rc = AM_FEND_Open(mFrontDevID, ¶); - if ((rc == AM_FEND_ERR_BUSY) || (rc == 0)) { - AM_EVT_Subscribe(mFrontDevID, AM_FEND_EVT_STATUS_CHANGED, dmd_fend_callback, this); - LOGD("%s,frontend dev open success!\n", __FUNCTION__); - return 0; - } else { - LOGD("%s,frontend dev open failed! dvb error id is %d\n", __FUNCTION__, rc); - return -1; - } - mCurMode = mode; - mCurFreq = -1; - mCurPara1 = -1; - mCurPara2 = -1; + AM_FEND_OpenPara_t para; + int rc = 0; + + if (mbFEOpened) { + LOGD("FrontEnd have opened, return"); + return 0; + } + mbFEOpened = true; + memset(¶, 0, sizeof(AM_FEND_OpenPara_t)); + para.mode = mode; + rc = AM_FEND_Open(mFrontDevID, ¶); + if ((rc == AM_FEND_ERR_BUSY) || (rc == 0)) { + AM_EVT_Subscribe(mFrontDevID, AM_FEND_EVT_STATUS_CHANGED, dmd_fend_callback, this); + LOGD("%s,frontend dev open success!\n", __FUNCTION__); + return 0; + } else { + LOGD("%s,frontend dev open failed! dvb error id is %d\n", __FUNCTION__, rc); + return -1; + } + mCurMode = mode; + mCurFreq = -1; + mCurPara1 = -1; + mCurPara2 = -1; } int CFrontEnd::Close() { - int rc = 0; - if (!mbFEOpened) { - LOGD("FrontEnd have close, but not return"); - } - rc = AM_FEND_Close(mFrontDevID); - mbFEOpened = false; - mCurMode = -1; - mCurFreq = -1; - mCurPara1 = -1; - mCurPara2 = -1; - if (rc != 0) { - LOGD("%s,frontend_close fail! dvb error id is %d\n", __FUNCTION__, rc); - return -1; - } else { - LOGD("%s,close frontend is ok\n", __FUNCTION__); - } - return 0; + int rc = 0; + if (!mbFEOpened) { + LOGD("FrontEnd have close, but not return"); + } + rc = AM_FEND_Close(mFrontDevID); + mbFEOpened = false; + mCurMode = -1; + mCurFreq = -1; + mCurPara1 = -1; + mCurPara2 = -1; + if (rc != 0) { + LOGD("%s,frontend_close fail! dvb error id is %d\n", __FUNCTION__, rc); + return -1; + } else { + LOGD("%s,close frontend is ok\n", __FUNCTION__); + } + return 0; } int CFrontEnd::setMode(int mode) { - int rc = 0; - if (mCurMode == mode) return 0; - rc = AM_FEND_SetMode(mFrontDevID, mode); + int rc = 0; + if (mCurMode == mode) return 0; + rc = AM_FEND_SetMode(mFrontDevID, mode); - if (rc != 0) { - LOGD("%s,front dev set mode failed! dvb error id is %d\n", __FUNCTION__, rc); - return -1; - } - return 0; + if (rc != 0) { + LOGD("%s,front dev set mode failed! dvb error id is %d\n", __FUNCTION__, rc); + return -1; + } + return 0; } int CFrontEnd::setPara(int mode, int freq, int para1, int para2) { - int ret = 0; - int buff_size = 32; - char VideoStdBuff[buff_size]; - char audioStdBuff[buff_size]; - if (mCurMode == mode && mCurFreq == freq && mCurPara1 == para1 && mCurPara2 == para2) { - LOGD("fe setpara is same return"); - return 0; - } - mCurMode = mode; - mCurFreq = freq; - mCurPara1 = para1; - mCurPara2 = para2; - - AM_FENDCTRL_DVBFrontendParameters_t dvbfepara; - memset(&dvbfepara, 0, sizeof(AM_FENDCTRL_DVBFrontendParameters_t)); - LOGD("%s,set fe para mode = %d freq=%d p1=%d p2=%d", __FUNCTION__, mode, freq, para1, para2); - dvbfepara.m_type = mode; - switch (mode) { - case FE_OFDM: - dvbfepara.terrestrial.para.frequency = freq; - dvbfepara.terrestrial.para.u.ofdm.bandwidth = (fe_bandwidth_t)para1; - break; - case FE_DTMB: - LOGD("%s,FE_DTMB is support\n", __FUNCTION__); - LOGD("%s,freq = %d, bandwidth = %d\n", __FUNCTION__, freq, para1); - dvbfepara.dtmb.para.frequency = freq; - dvbfepara.dtmb.para.u.ofdm.bandwidth = (fe_bandwidth_t)para1; - break; - case FE_ATSC: - dvbfepara.atsc.para.frequency = freq; - dvbfepara.atsc.para.u.vsb.modulation = (fe_modulation_t)para1; - break; - case FE_QAM: - dvbfepara.cable.para.frequency = freq; - dvbfepara.cable.para.u.qam.symbol_rate = para1; - dvbfepara.cable.para.u.qam.modulation = (fe_modulation_t)para2; - break; - case FE_ANALOG: - LOGD("%s,FE_ANALOG is support\n", __FUNCTION__); - /*para2 is finetune data */ - dvbfepara.analog.para.frequency = freq; - dvbfepara.analog.para.u.analog.std = para1; - dvbfepara.analog.para.u.analog.afc_range = AFC_RANGE; - if (para2 == 0) { - dvbfepara.analog.para.u.analog.flag |= ANALOG_FLAG_ENABLE_AFC; - } else { - dvbfepara.analog.para.u.analog.flag &= ~ANALOG_FLAG_ENABLE_AFC; - dvbfepara.analog.para.u.analog.afc_range = 0; - } - - printAudioStdStr(para1, audioStdBuff, buff_size); - printVideoStdStr(para1, VideoStdBuff, buff_size); - LOGD("%s,freq = %dHz, video_std = %s, audio_std = %s, fineFreqOffset = %dHz\n", __FUNCTION__, - freq, VideoStdBuff, audioStdBuff, para2); - - break; - } - - ret = AM_FENDCTRL_SetPara(mFrontDevID, &dvbfepara); - - if (ret != 0) { - LOGD("%s,fend set para failed! dvb error id is %d\n", __FUNCTION__, ret); - return -1; - } - return 0; + int ret = 0; + int buff_size = 32; + char VideoStdBuff[buff_size]; + char audioStdBuff[buff_size]; + if (mCurMode == mode && mCurFreq == freq && mCurPara1 == para1 && mCurPara2 == para2) { + LOGD("fe setpara is same return"); + return 0; + } + mCurMode = mode; + mCurFreq = freq; + mCurPara1 = para1; + mCurPara2 = para2; + + AM_FENDCTRL_DVBFrontendParameters_t dvbfepara; + memset(&dvbfepara, 0, sizeof(AM_FENDCTRL_DVBFrontendParameters_t)); + LOGD("%s,set fe para mode = %d freq=%d p1=%d p2=%d", __FUNCTION__, mode, freq, para1, para2); + dvbfepara.m_type = mode; + switch (mode) { + case FE_OFDM: + dvbfepara.terrestrial.para.frequency = freq; + dvbfepara.terrestrial.para.u.ofdm.bandwidth = (fe_bandwidth_t)para1; + break; + case FE_DTMB: + LOGD("%s,FE_DTMB is support\n", __FUNCTION__); + LOGD("%s,freq = %d, bandwidth = %d\n", __FUNCTION__, freq, para1); + dvbfepara.dtmb.para.frequency = freq; + dvbfepara.dtmb.para.u.ofdm.bandwidth = (fe_bandwidth_t)para1; + break; + case FE_ATSC: + dvbfepara.atsc.para.frequency = freq; + dvbfepara.atsc.para.u.vsb.modulation = (fe_modulation_t)para1; + break; + case FE_QAM: + dvbfepara.cable.para.frequency = freq; + dvbfepara.cable.para.u.qam.symbol_rate = para1; + dvbfepara.cable.para.u.qam.modulation = (fe_modulation_t)para2; + break; + case FE_ANALOG: + LOGD("%s,FE_ANALOG is support\n", __FUNCTION__); + /*para2 is finetune data */ + dvbfepara.analog.para.frequency = freq; + dvbfepara.analog.para.u.analog.std = para1; + dvbfepara.analog.para.u.analog.afc_range = AFC_RANGE; + if (para2 == 0) { + dvbfepara.analog.para.u.analog.flag |= ANALOG_FLAG_ENABLE_AFC; + } else { + dvbfepara.analog.para.u.analog.flag &= ~ANALOG_FLAG_ENABLE_AFC; + dvbfepara.analog.para.u.analog.afc_range = 0; + } + + printAudioStdStr(para1, audioStdBuff, buff_size); + printVideoStdStr(para1, VideoStdBuff, buff_size); + LOGD("%s,freq = %dHz, video_std = %s, audio_std = %s, fineFreqOffset = %dHz\n", __FUNCTION__, + freq, VideoStdBuff, audioStdBuff, para2); + + break; + } + + ret = AM_FENDCTRL_SetPara(mFrontDevID, &dvbfepara); + + if (ret != 0) { + LOGD("%s,fend set para failed! dvb error id is %d\n", __FUNCTION__, ret); + return -1; + } + return 0; } int CFrontEnd::fineTune(int fineFreq) { - int ret = 0; - if (mCurFineFreq == fineFreq) return -1; + int ret = 0; + if (mCurFineFreq == fineFreq) return -1; - mCurFineFreq = fineFreq; - ret = AM_FEND_FineTune(FE_DEV_ID, fineFreq); + mCurFineFreq = fineFreq; + ret = AM_FEND_FineTune(FE_DEV_ID, fineFreq); - if (ret != 0) { - LOGD("%s, fail! dvb error id is %d", __FUNCTION__, ret); - return -1; - } - return 0; + if (ret != 0) { + LOGD("%s, fail! dvb error id is %d", __FUNCTION__, ret); + return -1; + } + return 0; } int CFrontEnd::GetTSSource(AM_DMX_Source_t *src) { - AM_FEND_GetTSSource(mFrontDevID, src); - return 0; + AM_FEND_GetTSSource(mFrontDevID, src); + return 0; } void CFrontEnd::dmd_fend_callback(long dev_no, int event_type, void *param, void *user_data) { - CFrontEnd *pFront = (CFrontEnd *)user_data; - if (NULL == pFront) { - LOGD("%s,warnning : dmd_fend_callback NULL == pFront\n", __FUNCTION__); - return ; - } - if (pFront->mpObserver == NULL) { - LOGD("%s,warnning : mpObserver NULL == mpObserver\n", __FUNCTION__); - return; - } - struct dvb_frontend_event *evt = (struct dvb_frontend_event *) param; - if (!evt) - return; - - if (evt->status & FE_HAS_LOCK) { - pFront->mCurSigEv.mCurSigStaus = FEEvent::EVENT_FE_HAS_SIG; - pFront->mCurSigEv.mCurFreq = evt->parameters.frequency; - pFront->mpObserver->onEvent(pFront->mCurSigEv); - } else if (evt->status & FE_TIMEDOUT) { - pFront->mCurSigEv.mCurSigStaus = FEEvent::EVENT_FE_NO_SIG; - pFront->mCurSigEv.mCurFreq = evt->parameters.frequency; - pFront->mpObserver->onEvent(pFront->mCurSigEv); - } + CFrontEnd *pFront = (CFrontEnd *)user_data; + if (NULL == pFront) { + LOGD("%s,warnning : dmd_fend_callback NULL == pFront\n", __FUNCTION__); + return ; + } + if (pFront->mpObserver == NULL) { + LOGD("%s,warnning : mpObserver NULL == mpObserver\n", __FUNCTION__); + return; + } + struct dvb_frontend_event *evt = (struct dvb_frontend_event *) param; + if (!evt) + return; + + if (evt->status & FE_HAS_LOCK) { + pFront->mCurSigEv.mCurSigStaus = FEEvent::EVENT_FE_HAS_SIG; + pFront->mCurSigEv.mCurFreq = evt->parameters.frequency; + pFront->mpObserver->onEvent(pFront->mCurSigEv); + } else if (evt->status & FE_TIMEDOUT) { + pFront->mCurSigEv.mCurSigStaus = FEEvent::EVENT_FE_NO_SIG; + pFront->mCurSigEv.mCurFreq = evt->parameters.frequency; + pFront->mpObserver->onEvent(pFront->mCurSigEv); + } } int CFrontEnd::stdAndColorToAudioEnum(int data) { - atv_audio_std_t std = CC_ATV_AUDIO_STD_DK; - if (((data & V4L2_STD_PAL_DK) == V4L2_STD_PAL_DK) || - ((data & V4L2_STD_SECAM_DK) == V4L2_STD_SECAM_DK)) { - std = CC_ATV_AUDIO_STD_DK; - } else if ((data & V4L2_STD_PAL_I) == V4L2_STD_PAL_I) { - std = CC_ATV_AUDIO_STD_I; - } else if (((data & V4L2_STD_PAL_BG) == V4L2_STD_PAL_BG) || - ((data & V4L2_STD_SECAM_B) == V4L2_STD_SECAM_B) || - ((data & V4L2_STD_SECAM_G) == V4L2_STD_SECAM_G )) { - std = CC_ATV_AUDIO_STD_BG; - } else if (((data & V4L2_STD_PAL_M) == V4L2_STD_PAL_M) || - ((data & V4L2_STD_NTSC_M) == V4L2_STD_NTSC_M)) { - std = CC_ATV_AUDIO_STD_M; - } else if ((data & V4L2_STD_SECAM_L) == V4L2_STD_SECAM_L) { - std = CC_ATV_AUDIO_STD_L; - } - return std ; + atv_audio_std_t std = CC_ATV_AUDIO_STD_DK; + if (((data & V4L2_STD_PAL_DK) == V4L2_STD_PAL_DK) || + ((data & V4L2_STD_SECAM_DK) == V4L2_STD_SECAM_DK)) { + std = CC_ATV_AUDIO_STD_DK; + } else if ((data & V4L2_STD_PAL_I) == V4L2_STD_PAL_I) { + std = CC_ATV_AUDIO_STD_I; + } else if (((data & V4L2_STD_PAL_BG) == V4L2_STD_PAL_BG) || + ((data & V4L2_STD_SECAM_B) == V4L2_STD_SECAM_B) || + ((data & V4L2_STD_SECAM_G) == V4L2_STD_SECAM_G )) { + std = CC_ATV_AUDIO_STD_BG; + } else if (((data & V4L2_STD_PAL_M) == V4L2_STD_PAL_M) || + ((data & V4L2_STD_NTSC_M) == V4L2_STD_NTSC_M)) { + std = CC_ATV_AUDIO_STD_M; + } else if ((data & V4L2_STD_SECAM_L) == V4L2_STD_SECAM_L) { + std = CC_ATV_AUDIO_STD_L; + } + return std ; } int CFrontEnd::stdAndColorToVideoEnum(int std) { - atv_video_std_t video_standard = CC_ATV_VIDEO_STD_PAL; - if ((std & V4L2_COLOR_STD_PAL) == V4L2_COLOR_STD_PAL) { - video_standard = CC_ATV_VIDEO_STD_PAL; - } else if ((std & V4L2_COLOR_STD_NTSC) == V4L2_COLOR_STD_NTSC) { - video_standard = CC_ATV_VIDEO_STD_NTSC; - } else if ((std & V4L2_COLOR_STD_SECAM) == V4L2_COLOR_STD_SECAM) { - video_standard = CC_ATV_VIDEO_STD_SECAM; - } - return video_standard; + atv_video_std_t video_standard = CC_ATV_VIDEO_STD_PAL; + if ((std & V4L2_COLOR_STD_PAL) == V4L2_COLOR_STD_PAL) { + video_standard = CC_ATV_VIDEO_STD_PAL; + } else if ((std & V4L2_COLOR_STD_NTSC) == V4L2_COLOR_STD_NTSC) { + video_standard = CC_ATV_VIDEO_STD_NTSC; + } else if ((std & V4L2_COLOR_STD_SECAM) == V4L2_COLOR_STD_SECAM) { + video_standard = CC_ATV_VIDEO_STD_SECAM; + } + return video_standard; } bool CFrontEnd::stdIsColorAuto(int std) { - return ((std & V4L2_COLOR_STD_AUTO) == V4L2_COLOR_STD_AUTO) ? true : false; + return ((std & V4L2_COLOR_STD_AUTO) == V4L2_COLOR_STD_AUTO) ? true : false; } int CFrontEnd::addColorAutoFlag(int std) { - return std | V4L2_COLOR_STD_AUTO; + return std | V4L2_COLOR_STD_AUTO; } v4l2_std_id CFrontEnd::enumToStdAndColor(int videoStd, int audioStd) { - v4l2_std_id tmpTunerStd = 0; - if (videoStd == CC_ATV_VIDEO_STD_PAL) { - tmpTunerStd |= V4L2_COLOR_STD_PAL; - if (audioStd == CC_ATV_AUDIO_STD_DK) { - tmpTunerStd |= V4L2_STD_PAL_DK; - } else if (audioStd == CC_ATV_AUDIO_STD_I) { - tmpTunerStd |= V4L2_STD_PAL_I; - } else if (audioStd == CC_ATV_AUDIO_STD_BG) { - tmpTunerStd |= V4L2_STD_PAL_BG; - } else if (audioStd == CC_ATV_AUDIO_STD_M) { - tmpTunerStd |= V4L2_STD_PAL_M; - } - } else if (videoStd == CC_ATV_VIDEO_STD_NTSC || videoStd == CC_ATV_VIDEO_STD_AUTO) { - tmpTunerStd |= V4L2_COLOR_STD_NTSC; - if (audioStd == CC_ATV_AUDIO_STD_DK) { - tmpTunerStd |= V4L2_STD_PAL_DK; - } else if (audioStd == CC_ATV_AUDIO_STD_I) { - tmpTunerStd |= V4L2_STD_PAL_I; - } else if (audioStd == CC_ATV_AUDIO_STD_BG) { - tmpTunerStd |= V4L2_STD_PAL_BG; - } else if (audioStd == CC_ATV_AUDIO_STD_M) { - tmpTunerStd |= V4L2_STD_NTSC_M; - } - } else if (videoStd == CC_ATV_VIDEO_STD_SECAM) { - tmpTunerStd |= V4L2_COLOR_STD_SECAM; - if (audioStd == CC_ATV_AUDIO_STD_DK) { - tmpTunerStd |= V4L2_STD_SECAM_DK; - } else if (audioStd == CC_ATV_AUDIO_STD_I) { - tmpTunerStd |= V4L2_STD_PAL_I; - } else if (audioStd == CC_ATV_AUDIO_STD_BG) { - tmpTunerStd |= (V4L2_STD_SECAM_B | V4L2_STD_SECAM_G); - } else if (audioStd == CC_ATV_AUDIO_STD_M) { - tmpTunerStd |= V4L2_STD_NTSC_M; - } else if (audioStd == CC_ATV_AUDIO_STD_L) { - tmpTunerStd |= V4L2_STD_SECAM_L; - } - - } - return tmpTunerStd; + v4l2_std_id tmpTunerStd = 0; + if (videoStd == CC_ATV_VIDEO_STD_PAL) { + tmpTunerStd |= V4L2_COLOR_STD_PAL; + if (audioStd == CC_ATV_AUDIO_STD_DK) { + tmpTunerStd |= V4L2_STD_PAL_DK; + } else if (audioStd == CC_ATV_AUDIO_STD_I) { + tmpTunerStd |= V4L2_STD_PAL_I; + } else if (audioStd == CC_ATV_AUDIO_STD_BG) { + tmpTunerStd |= V4L2_STD_PAL_BG; + } else if (audioStd == CC_ATV_AUDIO_STD_M) { + tmpTunerStd |= V4L2_STD_PAL_M; + } + } else if (videoStd == CC_ATV_VIDEO_STD_NTSC || videoStd == CC_ATV_VIDEO_STD_AUTO) { + tmpTunerStd |= V4L2_COLOR_STD_NTSC; + if (audioStd == CC_ATV_AUDIO_STD_DK) { + tmpTunerStd |= V4L2_STD_PAL_DK; + } else if (audioStd == CC_ATV_AUDIO_STD_I) { + tmpTunerStd |= V4L2_STD_PAL_I; + } else if (audioStd == CC_ATV_AUDIO_STD_BG) { + tmpTunerStd |= V4L2_STD_PAL_BG; + } else if (audioStd == CC_ATV_AUDIO_STD_M) { + tmpTunerStd |= V4L2_STD_NTSC_M; + } + } else if (videoStd == CC_ATV_VIDEO_STD_SECAM) { + tmpTunerStd |= V4L2_COLOR_STD_SECAM; + if (audioStd == CC_ATV_AUDIO_STD_DK) { + tmpTunerStd |= V4L2_STD_SECAM_DK; + } else if (audioStd == CC_ATV_AUDIO_STD_I) { + tmpTunerStd |= V4L2_STD_PAL_I; + } else if (audioStd == CC_ATV_AUDIO_STD_BG) { + tmpTunerStd |= (V4L2_STD_SECAM_B | V4L2_STD_SECAM_G); + } else if (audioStd == CC_ATV_AUDIO_STD_M) { + tmpTunerStd |= V4L2_STD_NTSC_M; + } else if (audioStd == CC_ATV_AUDIO_STD_L) { + tmpTunerStd |= V4L2_STD_SECAM_L; + } + + } + return tmpTunerStd; } int CFrontEnd::getPara(int *mode, int *freq, int *para1, int *para2) { - struct dvb_frontend_parameters para; - memset(¶, 0, sizeof(struct dvb_frontend_parameters)); - /*if((ret1=AM_FEND_GetPara(mFrontDevID, ¶))<0) { - LOGD("%s,getPara faiture\n", __FUNCTION__ ); - return -1; + struct dvb_frontend_parameters para; + memset(¶, 0, sizeof(struct dvb_frontend_parameters)); + /*if((ret1=AM_FEND_GetPara(mFrontDevID, ¶))<0) { + LOGD("%s,getPara faiture\n", __FUNCTION__ ); + return -1; - //fpara->mode = fend_mode ; + //fpara->mode = fend_mode ; - }*/ - *mode = mCurMode; - *freq = mCurFreq; - *para1 = mCurPara1; - *para2 = mCurPara2; - return 0; + }*/ + *mode = mCurMode; + *freq = mCurFreq; + *para1 = mCurPara1; + *para2 = mCurPara2; + return 0; } int CFrontEnd::getSNR() { - int snr = 0; - AM_FEND_GetSNR(mFrontDevID, &snr); - return snr; + int snr = 0; + AM_FEND_GetSNR(mFrontDevID, &snr); + return snr; } int CFrontEnd::getBER() { - int ber = 0; - AM_FEND_GetBER(mFrontDevID, &ber); - return ber; + int ber = 0; + AM_FEND_GetBER(mFrontDevID, &ber); + return ber; } int CFrontEnd::getStrength() { - int Strength = 0; - AM_FEND_GetStrength(mFrontDevID, &Strength); - return Strength; + int Strength = 0; + AM_FEND_GetStrength(mFrontDevID, &Strength); + return Strength; } int CFrontEnd::formatATVFreq(int tmp_freq) { - const int ATV_1MHZ = 1000000; - const int ATV_50KHZ = 50 * 1000; - const int ATV_25KHZ = 25 * 1000; - int mastar = (tmp_freq / ATV_50KHZ) * ATV_50KHZ; - int follow = tmp_freq % ATV_50KHZ; - if (follow >= ATV_25KHZ) { - follow = ATV_50KHZ; - } else { - follow = 0; - } - return mastar + follow; + const int ATV_1MHZ = 1000000; + const int ATV_50KHZ = 50 * 1000; + const int ATV_25KHZ = 25 * 1000; + int mastar = (tmp_freq / ATV_50KHZ) * ATV_50KHZ; + int follow = tmp_freq % ATV_50KHZ; + if (follow >= ATV_25KHZ) { + follow = ATV_50KHZ; + } else { + follow = 0; + } + return mastar + follow; } int CFrontEnd::printVideoStdStr(int compStd, char strBuffer[], int buff_size) { - memset(strBuffer, 0, buff_size); - int videoStd = stdAndColorToVideoEnum(compStd); - switch (videoStd) { - case CC_ATV_VIDEO_STD_AUTO: - strcpy(strBuffer, "AUTO"); - break; - case CC_ATV_VIDEO_STD_PAL: - strcpy(strBuffer, "PAL"); - break; - case CC_ATV_VIDEO_STD_NTSC: - strcpy(strBuffer, "NTSC"); - break; - case CC_ATV_VIDEO_STD_SECAM: - strcpy(strBuffer, "SECAM"); - break; - default: - strcpy(strBuffer, "UnkownVideo"); - break; - } - - return 0; + memset(strBuffer, 0, buff_size); + int videoStd = stdAndColorToVideoEnum(compStd); + switch (videoStd) { + case CC_ATV_VIDEO_STD_AUTO: + strcpy(strBuffer, "AUTO"); + break; + case CC_ATV_VIDEO_STD_PAL: + strcpy(strBuffer, "PAL"); + break; + case CC_ATV_VIDEO_STD_NTSC: + strcpy(strBuffer, "NTSC"); + break; + case CC_ATV_VIDEO_STD_SECAM: + strcpy(strBuffer, "SECAM"); + break; + default: + strcpy(strBuffer, "UnkownVideo"); + break; + } + + return 0; } int CFrontEnd::printAudioStdStr(int compStd, char strBuffer[], int buff_size) { - memset(strBuffer, 0, buff_size); - int audioStd = stdAndColorToAudioEnum(compStd); - switch (audioStd) { - case CC_ATV_AUDIO_STD_DK: - strcpy(strBuffer, "DK"); - break; - case CC_ATV_AUDIO_STD_I: - strcpy(strBuffer, "I"); - break; - case CC_ATV_AUDIO_STD_BG: - strcpy(strBuffer, "BG"); - break; - case CC_ATV_AUDIO_STD_M: - strcpy(strBuffer, "M"); - break; - case CC_ATV_AUDIO_STD_L: - strcpy(strBuffer, "L"); - break; - case CC_ATV_AUDIO_STD_AUTO: - strcpy(strBuffer, "AUTO"); - break; - default: - strcpy(strBuffer, "UnkownAudio"); - break; - } - - return 0; + memset(strBuffer, 0, buff_size); + int audioStd = stdAndColorToAudioEnum(compStd); + switch (audioStd) { + case CC_ATV_AUDIO_STD_DK: + strcpy(strBuffer, "DK"); + break; + case CC_ATV_AUDIO_STD_I: + strcpy(strBuffer, "I"); + break; + case CC_ATV_AUDIO_STD_BG: + strcpy(strBuffer, "BG"); + break; + case CC_ATV_AUDIO_STD_M: + strcpy(strBuffer, "M"); + break; + case CC_ATV_AUDIO_STD_L: + strcpy(strBuffer, "L"); + break; + case CC_ATV_AUDIO_STD_AUTO: + strcpy(strBuffer, "AUTO"); + break; + default: + strcpy(strBuffer, "UnkownAudio"); + break; + } + + return 0; } int CFrontEnd::autoLoadFE() { - FILE *fp = NULL; - int ret = -1; + FILE *fp = NULL; + int ret = -1; - fp = fopen ( "/sys/class/amlfe/setting", "w" ); + fp = fopen ( "/sys/class/amlfe/setting", "w" ); - if ( fp == NULL ) { - LOGW ( "Open /sys/class/amlfe/setting error(%s)!\n", strerror ( errno ) ); - return -1; - } + if ( fp == NULL ) { + LOGW ( "Open /sys/class/amlfe/setting error(%s)!\n", strerror ( errno ) ); + return -1; + } - ret = fprintf ( fp, "%s", "autoload" ); + ret = fprintf ( fp, "%s", "autoload" ); - if ( ret < 0 ) { - LOGW ( "autoload FE error(%s)!\n", strerror ( errno ) ); - } - LOGD("autoLoadFE"); - fclose ( fp ); - fp = NULL; + if ( ret < 0 ) { + LOGW ( "autoload FE error(%s)!\n", strerror ( errno ) ); + } + LOGD("autoLoadFE"); + fclose ( fp ); + fp = NULL; - return ret; + return ret; } int CFrontEnd::setCvbsAmpOut(int tmp) { - int rc = AM_SUCCESS; - rc = AM_FEND_SetCvbsAmpOut(mFrontDevID, tmp); - if (rc == AM_SUCCESS) { - LOGD("%s, sucessful!", __FUNCTION__); - rc = 0; - } else { - LOGD("%s, fail!", __FUNCTION__); - rc = -1; - } - return rc; + int rc = AM_SUCCESS; + rc = AM_FEND_SetCvbsAmpOut(mFrontDevID, tmp); + if (rc == AM_SUCCESS) { + LOGD("%s, sucessful!", __FUNCTION__); + rc = 0; + } else { + LOGD("%s, fail!", __FUNCTION__); + rc = -1; + } + return rc; } int CFrontEnd::setThreadDelay(int delay) { - int rc = AM_SUCCESS; + int rc = AM_SUCCESS; - rc = AM_FEND_SetThreadDelay(mFrontDevID, delay); - if (rc == AM_SUCCESS) { - LOGD("frontend_setThreadDelay sucessful!\n"); - return 0; - } else { - LOGD("frontend_setThreadDelay fail! %d\n\n", rc); - return -1; - } + rc = AM_FEND_SetThreadDelay(mFrontDevID, delay); + if (rc == AM_SUCCESS) { + LOGD("frontend_setThreadDelay sucessful!\n"); + return 0; + } else { + LOGD("frontend_setThreadDelay fail! %d\n\n", rc); + return -1; + } } int CFrontEnd::lock(int frequency, int symbol_rate, int modulation, int bandwidth) { - int rt = -1; - struct dvb_frontend_parameters fparam; - struct dvb_frontend_info finfo; + int rt = -1; + struct dvb_frontend_parameters fparam; + struct dvb_frontend_info finfo; - memset(&fparam, 0, sizeof(struct dvb_frontend_parameters)); - memset(&finfo, 0, sizeof(struct dvb_frontend_info)); + memset(&fparam, 0, sizeof(struct dvb_frontend_parameters)); + memset(&finfo, 0, sizeof(struct dvb_frontend_info)); - AM_FEND_GetInfo(mFrontDevID, &finfo); + AM_FEND_GetInfo(mFrontDevID, &finfo); - if (frequency == 0) - return -1; - fparam.frequency = frequency; + if (frequency == 0) + return -1; + fparam.frequency = frequency; - switch (finfo.type) { + switch (finfo.type) { - case FE_QAM: - default: + case FE_QAM: + default: - if (symbol_rate == 0) - return -1; - fparam.u.qam.symbol_rate = symbol_rate; + if (symbol_rate == 0) + return -1; + fparam.u.qam.symbol_rate = symbol_rate; - if (modulation == 0) - return -1; - fparam.u.qam.modulation = (fe_modulation_t)modulation; + if (modulation == 0) + return -1; + fparam.u.qam.modulation = (fe_modulation_t)modulation; - LOGD("mFrontDevID = %d;fre=%d;sym=%d;qam=%d ", - mFrontDevID, fparam.frequency, fparam.u.qam.symbol_rate, fparam.u.qam.modulation); - break; - case FE_OFDM: - case FE_ATSC: - LOGD("mFrontDevID = %d;fre=%d;bw=%d\n ", - mFrontDevID, fparam.frequency, fparam.u.ofdm.bandwidth); - break; - case FE_QPSK: - LOGD("QPSK are not supported.\n "); - break; - case FE_ANALOG: - LOGD("ANALOG is supported.\n "); - fparam.u.analog.std = V4L2_STD_PAL_I; - break; - } + LOGD("mFrontDevID = %d;fre=%d;sym=%d;qam=%d ", + mFrontDevID, fparam.frequency, fparam.u.qam.symbol_rate, fparam.u.qam.modulation); + break; + case FE_OFDM: + case FE_ATSC: + LOGD("mFrontDevID = %d;fre=%d;bw=%d\n ", + mFrontDevID, fparam.frequency, fparam.u.ofdm.bandwidth); + break; + case FE_QPSK: + LOGD("QPSK are not supported.\n "); + break; + case FE_ANALOG: + LOGD("ANALOG is supported.\n "); + fparam.u.analog.std = V4L2_STD_PAL_I; + break; + } - fe_status_t status; + fe_status_t status; - rt = AM_FEND_Lock(FE_DEV_ID, &fparam, &status); + rt = AM_FEND_Lock(FE_DEV_ID, &fparam, &status); - if ((!rt) && (status & FE_HAS_LOCK)) { - LOGD("frontend_lock sucessful!\n"); - return true; - } else { - LOGD("frontend_lock fail %d!\n", rt); - return false; - } + if ((!rt) && (status & FE_HAS_LOCK)) { + LOGD("frontend_lock sucessful!\n"); + return true; + } else { + LOGD("frontend_lock fail %d!\n", rt); + return false; + } } int CFrontEnd::getInfo() { - struct dvb_frontend_info finfo; + struct dvb_frontend_info finfo; - AM_FEND_GetInfo(mFrontDevID, &finfo); + AM_FEND_GetInfo(mFrontDevID, &finfo); - //return fend_info; noitfy FrontEnd message - return 0; + //return fend_info; noitfy FrontEnd message + return 0; } int CFrontEnd::setTunerAfc(int afc) { - AM_FEND_SetAfc(FE_DEV_ID, afc); - return 0; + AM_FEND_SetAfc(FE_DEV_ID, afc); + return 0; } int CFrontEnd::getStatus() { - fe_status_t status; - AM_FEND_GetStatus(mFrontDevID, &status); + fe_status_t status; + AM_FEND_GetStatus(mFrontDevID, &status); - return status; + return status; } int CFrontEnd::checkStatusOnce() { - fe_status_t status; - AM_FEND_GetStatus(mFrontDevID, &status); - LOGD("%s,get status = %x", __FUNCTION__, status); - if (status & FE_HAS_LOCK) { - mCurSigEv.mCurSigStaus = FEEvent::EVENT_FE_HAS_SIG; - mCurSigEv.mCurFreq = 0; - mpObserver->onEvent(mCurSigEv); - } else if (status & FE_TIMEDOUT) { - mCurSigEv.mCurSigStaus = FEEvent::EVENT_FE_NO_SIG; - mCurSigEv.mCurFreq = 0; - mpObserver->onEvent(mCurSigEv); - } - return 0; + fe_status_t status; + AM_FEND_GetStatus(mFrontDevID, &status); + LOGD("%s,get status = %x", __FUNCTION__, status); + if (status & FE_HAS_LOCK) { + mCurSigEv.mCurSigStaus = FEEvent::EVENT_FE_HAS_SIG; + mCurSigEv.mCurFreq = 0; + mpObserver->onEvent(mCurSigEv); + } else if (status & FE_TIMEDOUT) { + mCurSigEv.mCurSigStaus = FEEvent::EVENT_FE_NO_SIG; + mCurSigEv.mCurFreq = 0; + mpObserver->onEvent(mCurSigEv); + } + return 0; } int CFrontEnd::stdEnumToCvbsFmt (int videoStd, int audioStd) { - tvin_sig_fmt_e cvbs_fmt = TVIN_SIG_FMT_NULL; - - if ( videoStd == CC_ATV_VIDEO_STD_PAL ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_PAL_I; - if ( audioStd == CC_ATV_AUDIO_STD_DK ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_PAL_I; - } else if ( audioStd == CC_ATV_AUDIO_STD_I ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_PAL_I; - } else if ( audioStd == CC_ATV_AUDIO_STD_BG ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_PAL_I; - } else if ( audioStd == CC_ATV_AUDIO_STD_M ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_PAL_M; - } - } else if ( videoStd == CC_ATV_VIDEO_STD_NTSC ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_NTSC_M; - if ( audioStd == CC_ATV_AUDIO_STD_DK ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_NTSC_M; - } else if ( audioStd == CC_ATV_AUDIO_STD_I ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_NTSC_M; - } else if ( audioStd == CC_ATV_AUDIO_STD_BG ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_NTSC_M; - } else if ( audioStd == CC_ATV_AUDIO_STD_M ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_NTSC_M; - } - } else if ( videoStd == CC_ATV_VIDEO_STD_SECAM ) { - if ( audioStd == CC_ATV_AUDIO_STD_DK ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_SECAM; - } else if ( audioStd == CC_ATV_AUDIO_STD_I ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_SECAM; - } else if ( audioStd == CC_ATV_AUDIO_STD_BG ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_SECAM; - } else if ( audioStd == CC_ATV_AUDIO_STD_M ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_SECAM; - } else if ( audioStd == CC_ATV_AUDIO_STD_L ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_SECAM; - } - } - return cvbs_fmt; + tvin_sig_fmt_e cvbs_fmt = TVIN_SIG_FMT_NULL; + + if ( videoStd == CC_ATV_VIDEO_STD_PAL ) { + cvbs_fmt = TVIN_SIG_FMT_CVBS_PAL_I; + if ( audioStd == CC_ATV_AUDIO_STD_DK ) { + cvbs_fmt = TVIN_SIG_FMT_CVBS_PAL_I; + } else if ( audioStd == CC_ATV_AUDIO_STD_I ) { + cvbs_fmt = TVIN_SIG_FMT_CVBS_PAL_I; + } else if ( audioStd == CC_ATV_AUDIO_STD_BG ) { + cvbs_fmt = TVIN_SIG_FMT_CVBS_PAL_I; + } else if ( audioStd == CC_ATV_AUDIO_STD_M ) { + cvbs_fmt = TVIN_SIG_FMT_CVBS_PAL_M; + } + } else if ( videoStd == CC_ATV_VIDEO_STD_NTSC ) { + cvbs_fmt = TVIN_SIG_FMT_CVBS_NTSC_M; + if ( audioStd == CC_ATV_AUDIO_STD_DK ) { + cvbs_fmt = TVIN_SIG_FMT_CVBS_NTSC_M; + } else if ( audioStd == CC_ATV_AUDIO_STD_I ) { + cvbs_fmt = TVIN_SIG_FMT_CVBS_NTSC_M; + } else if ( audioStd == CC_ATV_AUDIO_STD_BG ) { + cvbs_fmt = TVIN_SIG_FMT_CVBS_NTSC_M; + } else if ( audioStd == CC_ATV_AUDIO_STD_M ) { + cvbs_fmt = TVIN_SIG_FMT_CVBS_NTSC_M; + } + } else if ( videoStd == CC_ATV_VIDEO_STD_SECAM ) { + if ( audioStd == CC_ATV_AUDIO_STD_DK ) { + cvbs_fmt = TVIN_SIG_FMT_CVBS_SECAM; + } else if ( audioStd == CC_ATV_AUDIO_STD_I ) { + cvbs_fmt = TVIN_SIG_FMT_CVBS_SECAM; + } else if ( audioStd == CC_ATV_AUDIO_STD_BG ) { + cvbs_fmt = TVIN_SIG_FMT_CVBS_SECAM; + } else if ( audioStd == CC_ATV_AUDIO_STD_M ) { + cvbs_fmt = TVIN_SIG_FMT_CVBS_SECAM; + } else if ( audioStd == CC_ATV_AUDIO_STD_L ) { + cvbs_fmt = TVIN_SIG_FMT_CVBS_SECAM; + } + } + return cvbs_fmt; } int CFrontEnd::ClearAnalogFrontEnd() { - return this->setPara ( FE_ANALOG, 44250000, V4L2_COLOR_STD_PAL | V4L2_STD_PAL_DK, 0 ); + return this->setPara ( FE_ANALOG, 44250000, V4L2_COLOR_STD_PAL | V4L2_STD_PAL_DK, 0 ); } /*to control afc function*/ int CFrontEnd::SetAnalogFrontEndTimerSwitch(int onOff) { - FILE *fp = NULL; - int ret = -1; + FILE *fp = NULL; + int ret = -1; - fp = fopen ( "/sys/module/aml_fe/parameters/aml_timer_en", "w" ); + fp = fopen ( "/sys/module/aml_fe/parameters/aml_timer_en", "w" ); - if ( fp == NULL ) { - LOGW ( "Open /sys/module/aml_fe/parameters/aml_timer_en error(%s)!\n", strerror ( errno ) ); - return -1; - } - if (onOff) - ret = fprintf(fp, "%s", "1"); - else - ret = fprintf(fp, "%s", "0"); - if ( ret < 0 ) { - LOGW ( "set aml_timer_en error(%s)!\n", strerror ( errno ) ); - } - LOGD("SetAnalogFrontEndTimerSwitch %d", onOff); - fclose ( fp ); - fp = NULL; + if ( fp == NULL ) { + LOGW ( "Open /sys/module/aml_fe/parameters/aml_timer_en error(%s)!\n", strerror ( errno ) ); + return -1; + } + if (onOff) + ret = fprintf(fp, "%s", "1"); + else + ret = fprintf(fp, "%s", "0"); + if ( ret < 0 ) { + LOGW ( "set aml_timer_en error(%s)!\n", strerror ( errno ) ); + } + LOGD("SetAnalogFrontEndTimerSwitch %d", onOff); + fclose ( fp ); + fp = NULL; - return ret; + return ret; } int CFrontEnd::SetAnalogFrontEndSearhSlowMode(int onOff) { - FILE *fp = NULL; - int ret = -1; - - fp = fopen ( "/sys/module/aml_fe/parameters/slow_mode", "w" ); - - if ( fp == NULL ) { - LOGW ( "Open /sys/module/aml_fe/parameters/slow_mode error(%s)!\n", strerror ( errno ) ); - return -1; - } - if (onOff) - ret = fprintf(fp, "%s", "1"); - else - ret = fprintf(fp, "%s", "0"); - if ( ret < 0 ) { - LOGW ( "set aml_timer_en error(%s)!\n", strerror ( errno ) ); - } - LOGD("SetAnalogFrontEndSearhSlowMode %d", onOff); - fclose ( fp ); - fp = NULL; - - return ret; + FILE *fp = NULL; + int ret = -1; + + fp = fopen ( "/sys/module/aml_fe/parameters/slow_mode", "w" ); + + if ( fp == NULL ) { + LOGW ( "Open /sys/module/aml_fe/parameters/slow_mode error(%s)!\n", strerror ( errno ) ); + return -1; + } + if (onOff) + ret = fprintf(fp, "%s", "1"); + else + ret = fprintf(fp, "%s", "0"); + if ( ret < 0 ) { + LOGW ( "set aml_timer_en error(%s)!\n", strerror ( errno ) ); + } + LOGD("SetAnalogFrontEndSearhSlowMode %d", onOff); + fclose ( fp ); + fp = NULL; + + return ret; } diff --git a/tvapi/libtv/tv/CFrontEnd.h b/tvapi/libtv/tv/CFrontEnd.h index 86c526e..81b8caf 100644 --- a/tvapi/libtv/tv/CFrontEnd.h +++ b/tvapi/libtv/tv/CFrontEnd.h @@ -13,24 +13,24 @@ extern "C" { } //for app typedef enum atv_audo_std_s { - CC_ATV_AUDIO_STD_START = 0, - CC_ATV_AUDIO_STD_DK = 0, - CC_ATV_AUDIO_STD_I, - CC_ATV_AUDIO_STD_BG, - CC_ATV_AUDIO_STD_M, - CC_ATV_AUDIO_STD_L, - CC_ATV_AUDIO_STD_AUTO, - CC_ATV_AUDIO_STD_END = CC_ATV_AUDIO_STD_AUTO, - CC_ATV_AUDIO_STD_MUTE, + CC_ATV_AUDIO_STD_START = 0, + CC_ATV_AUDIO_STD_DK = 0, + CC_ATV_AUDIO_STD_I, + CC_ATV_AUDIO_STD_BG, + CC_ATV_AUDIO_STD_M, + CC_ATV_AUDIO_STD_L, + CC_ATV_AUDIO_STD_AUTO, + CC_ATV_AUDIO_STD_END = CC_ATV_AUDIO_STD_AUTO, + CC_ATV_AUDIO_STD_MUTE, } atv_audio_std_t; //for app typedef enum atv_video_std_s { - CC_ATV_VIDEO_STD_START = 0, - CC_ATV_VIDEO_STD_AUTO = 0, - CC_ATV_VIDEO_STD_PAL, - CC_ATV_VIDEO_STD_NTSC, - CC_ATV_VIDEO_STD_SECAM, - CC_ATV_VIDEO_STD_END = CC_ATV_VIDEO_STD_SECAM, + CC_ATV_VIDEO_STD_START = 0, + CC_ATV_VIDEO_STD_AUTO = 0, + CC_ATV_VIDEO_STD_PAL, + CC_ATV_VIDEO_STD_NTSC, + CC_ATV_VIDEO_STD_SECAM, + CC_ATV_VIDEO_STD_END = CC_ATV_VIDEO_STD_SECAM, } atv_video_std_t; @@ -43,124 +43,124 @@ static const v4l2_std_id V4L2_COLOR_STD_SECAM = ((v4l2_std_id)0x10000000); static const v4l2_std_id V4L2_COLOR_STD_AUTO = ((v4l2_std_id)0x02000000); typedef struct frontend_para_set_s { - fe_type_t mode; - int freq; - atv_video_std_t videoStd; - atv_audio_std_t audioStd; - int para1; - int para2; + fe_type_t mode; + int freq; + atv_video_std_t videoStd; + atv_audio_std_t audioStd; + int para1; + int para2; } frontend_para_set_t; typedef struct atv_channel_info_s { - int finefreq; - atv_video_std_t videoStd; - atv_audio_std_t audioStd; - int isAutoStd; + int finefreq; + atv_video_std_t videoStd; + atv_audio_std_t audioStd; + int isAutoStd; } atv_channel_info_t; typedef struct dtv_channel_info_s { - int strength; - int quality; - int ber; + int strength; + int quality; + int ber; } dtv_channel_info_t; typedef struct channel_info_s { - int freq; - union { - atv_channel_info_t atvChanInfo; - dtv_channel_info_t dtvChanInfo; - } uInfo; + int freq; + union { + atv_channel_info_t atvChanInfo; + dtv_channel_info_t dtvChanInfo; + } uInfo; } channel_info_t; class CFrontEnd { public: - static const int FE_DEV_ID = 0; - static const int AFC_RANGE = 1000000; - - CFrontEnd(); - ~CFrontEnd(); - - int Open(int mode); - int Close(); - int setMode(int mode); - int fineTune(int freq); - static int formatATVFreq(int freq); - int GetTSSource(AM_DMX_Source_t *src); - int setPara(int mode, int freq, int para1, int para2); - int ClearAnalogFrontEnd(); - int autoLoadFE(); - int SetAnalogFrontEndTimerSwitch(int onOff); - int SetAnalogFrontEndSearhSlowMode(int onOff); - - static int stdAndColorToAudioEnum(int std); - static int stdAndColorToVideoEnum(int std); - static bool stdIsColorAuto(int std); - static int addColorAutoFlag(int std); - static int printVideoStdStr(int videoStd, char strBuffer[], int buff_size); - static int printAudioStdStr(int audioStd, char strBuffer[], int buff_size); - static v4l2_std_id enumToStdAndColor(int videoStd, int audioStd); - static int stdEnumToCvbsFmt (int videoStd, int audioStd); - class FEEvent: public CTvEv { - public: - //static const int EVENT_FE_HAS_SIG = 0X01; /* found something above the noise level */ - //static const int EVENT_FE_HAS_CARRIER = 0x02; /* found a DVB signal */ - //static const int EVENT_FE_HAS_VITERBI = 0X04; /* FEC is stable */ - //static const int EVENT_FE_HAS_SYNC = 0X08; /* found sync bytes */ - // static const int EVENT_FE_HAS_LOCK = 0X10; /* everything's working... */ - //static const int EVENT_FE_HAS_TIMEOUT = 0X20; /* no lock within the last ~2 seconds */ - //static const int EVENT_FE_REINIT = 0X40; /* frontend was reinitialized, */ - static const int EVENT_FE_HAS_SIG = 0x01; - static const int EVENT_FE_NO_SIG = 0x02; - static const int EVENT_FE_INIT = 0x03; - - FEEvent(): CTvEv(CTvEv::TV_EVENT_SIGLE_DETECT) - { - } - ~FEEvent() - { - } - int mCurSigStaus; - int mCurFreq; - }; - - class IObserver { - public: - IObserver() {}; - virtual ~IObserver() {}; - virtual void onEvent(const FEEvent &ev) = 0; - }; - - int setObserver(IObserver *ob) - { - mpObserver = ob; - return 0; - } - - int getSNR(); - int getBER(); - int getInfo(); - int getStatus(); - int checkStatusOnce(); - int getStrength(); - int setCvbsAmpOut(int amp); - int setThreadDelay(int delay) ; - int getPara(int *mode, int *freq, int *para1, int *para2); - int lock(int frequency, int symbol_rate, int modulation, int bandwidth); - int setTunerAfc(int afc); + static const int FE_DEV_ID = 0; + static const int AFC_RANGE = 1000000; + + CFrontEnd(); + ~CFrontEnd(); + + int Open(int mode); + int Close(); + int setMode(int mode); + int fineTune(int freq); + static int formatATVFreq(int freq); + int GetTSSource(AM_DMX_Source_t *src); + int setPara(int mode, int freq, int para1, int para2); + int ClearAnalogFrontEnd(); + int autoLoadFE(); + int SetAnalogFrontEndTimerSwitch(int onOff); + int SetAnalogFrontEndSearhSlowMode(int onOff); + + static int stdAndColorToAudioEnum(int std); + static int stdAndColorToVideoEnum(int std); + static bool stdIsColorAuto(int std); + static int addColorAutoFlag(int std); + static int printVideoStdStr(int videoStd, char strBuffer[], int buff_size); + static int printAudioStdStr(int audioStd, char strBuffer[], int buff_size); + static v4l2_std_id enumToStdAndColor(int videoStd, int audioStd); + static int stdEnumToCvbsFmt (int videoStd, int audioStd); + class FEEvent: public CTvEv { + public: + //static const int EVENT_FE_HAS_SIG = 0X01; /* found something above the noise level */ + //static const int EVENT_FE_HAS_CARRIER = 0x02; /* found a DVB signal */ + //static const int EVENT_FE_HAS_VITERBI = 0X04; /* FEC is stable */ + //static const int EVENT_FE_HAS_SYNC = 0X08; /* found sync bytes */ + // static const int EVENT_FE_HAS_LOCK = 0X10; /* everything's working... */ + //static const int EVENT_FE_HAS_TIMEOUT = 0X20; /* no lock within the last ~2 seconds */ + //static const int EVENT_FE_REINIT = 0X40; /* frontend was reinitialized, */ + static const int EVENT_FE_HAS_SIG = 0x01; + static const int EVENT_FE_NO_SIG = 0x02; + static const int EVENT_FE_INIT = 0x03; + + FEEvent(): CTvEv(CTvEv::TV_EVENT_SIGLE_DETECT) + { + } + ~FEEvent() + { + } + int mCurSigStaus; + int mCurFreq; + }; + + class IObserver { + public: + IObserver() {}; + virtual ~IObserver() {}; + virtual void onEvent(const FEEvent &ev) = 0; + }; + + int setObserver(IObserver *ob) + { + mpObserver = ob; + return 0; + } + + int getSNR(); + int getBER(); + int getInfo(); + int getStatus(); + int checkStatusOnce(); + int getStrength(); + int setCvbsAmpOut(int amp); + int setThreadDelay(int delay) ; + int getPara(int *mode, int *freq, int *para1, int *para2); + int lock(int frequency, int symbol_rate, int modulation, int bandwidth); + int setTunerAfc(int afc); private: - int mFrontDevID; - int mDemuxDevID; - int mTvPlayDevID; - int mCurFineFreq; - IObserver *mpObserver; - FEEvent mCurSigEv; - int mCurMode; - int mCurFreq; - int mCurPara1; - int mCurPara2; - bool mbFEOpened; - static void dmd_fend_callback(long dev_no, int event_type, void *param, void *user_data); + int mFrontDevID; + int mDemuxDevID; + int mTvPlayDevID; + int mCurFineFreq; + IObserver *mpObserver; + FEEvent mCurSigEv; + int mCurMode; + int mCurFreq; + int mCurPara1; + int mCurPara2; + bool mbFEOpened; + static void dmd_fend_callback(long dev_no, int event_type, void *param, void *user_data); }; #endif // ANDROID_FRONTEND_H diff --git a/tvapi/libtv/tv/CTv.cpp b/tvapi/libtv/tv/CTv.cpp index 597aeec..3f4fd4a 100644 --- a/tvapi/libtv/tv/CTv.cpp +++ b/tvapi/libtv/tv/CTv.cpp @@ -65,7 +65,8 @@ extern "C" { using namespace android; // Called each time a message is logged. -static void sqliteLogCallback(void *data, int iErrCode, const char *zMsg) { +static void sqliteLogCallback(void *data, int iErrCode, const char *zMsg) +{ data = data; LOGD( "showbo sqlite (%d) %s\n", iErrCode, zMsg); } @@ -78,7 +79,8 @@ CTv::CTv() : mTvMsgQueue(this), mAutoBackLight( &mVpp, &mTvin ), mTvScannerDetectObserver(this), - mAutoPQparam( &mVpp, &mTvin, &mAv ) { + mAutoPQparam( &mVpp, &mTvin, &mAv ) +{ mAudioMuteStatusForTv = CC_AUDIO_UNMUTE; mAudioMuteStatusForSystem = CC_AUDIO_UNMUTE; //mpClient = pClient; @@ -211,7 +213,8 @@ CTv::CTv() : print_version_info(); }; -CTv::~CTv() { +CTv::~CTv() +{ int iRet; mpObserver = NULL; CTvSettingunLoad(); @@ -227,7 +230,8 @@ CTv::~CTv() { } } -void CTv::onEvent ( const CTvScanner::ScannerEvent &ev ) { +void CTv::onEvent ( const CTvScanner::ScannerEvent &ev ) +{ LOGD ( "%s, CTv::onEvent lockStatus = %d type = %d\n", __FUNCTION__, ev.mLockedStatus, ev.mType ); if ( mDtvScanRunningStatus == DTV_SCAN_RUNNING_ANALYZE_CHANNEL ) { @@ -247,7 +251,8 @@ void CTv::onEvent ( const CTvScanner::ScannerEvent &ev ) { } } -void CTv::onEvent ( const CFrontEnd::FEEvent &ev ) { +void CTv::onEvent ( const CFrontEnd::FEEvent &ev ) +{ const char *config_value = NULL; LOGD ( "%s, FE event type = %d tvaction=%x", __FUNCTION__, ev.mCurSigStaus, mTvAction); if (mTvAction & TV_ACTION_SCANNING) return; @@ -297,157 +302,163 @@ void CTv::onEvent ( const CFrontEnd::FEEvent &ev ) { } } -void CTv::onEvent ( const CTvEpg::EpgEvent &ev ) { +void CTv::onEvent ( const CTvEpg::EpgEvent &ev ) +{ switch ( ev.type ) { - case CTvEpg::EpgEvent::EVENT_TDT_END: - LOGD ( "%s, CTv::onEvent epg time = %ld", __FUNCTION__, ev.time ); - mTvTime.setTime ( ev.time ); + case CTvEpg::EpgEvent::EVENT_TDT_END: + LOGD ( "%s, CTv::onEvent epg time = %ld", __FUNCTION__, ev.time ); + mTvTime.setTime ( ev.time ); break; - case CTvEpg::EpgEvent::EVENT_CHANNEL_UPDATE: { - LOGD ( "%s, CTv:: onEvent channel update", __FUNCTION__ ); - CMessage msg; - msg.mType = CTvMsgQueue::TV_MSG_START_ANALYZE_TS; - msg.mpData = this; - mCurAnalyzeTsChannelID = ev.channelID; - mTvMsgQueue.sendMsg ( msg ); - break; - } + case CTvEpg::EpgEvent::EVENT_CHANNEL_UPDATE: { + LOGD ( "%s, CTv:: onEvent channel update", __FUNCTION__ ); + CMessage msg; + msg.mType = CTvMsgQueue::TV_MSG_START_ANALYZE_TS; + msg.mpData = this; + mCurAnalyzeTsChannelID = ev.channelID; + mTvMsgQueue.sendMsg ( msg ); + break; + } - default: + default: break; } sendTvEvent ( ev ); } -void CTv::onEvent(const CAv::AVEvent &ev) { +void CTv::onEvent(const CAv::AVEvent &ev) +{ const char *config_value = NULL; LOGD("AVEvent = %d", ev.type); switch ( ev.type ) { - case CAv::AVEvent::EVENT_AV_STOP: { - config_value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); - if ( strcmp ( config_value, "black" ) == 0 ) { - mAv.DisableVideoWithBlackColor(); - } else { - mAv.DisableVideoWithBlueColor(); - } - SetAudioMuteForTv ( CC_AUDIO_MUTE ); - - TvEvent::SignalInfoEvent ev; - ev.mStatus = TVIN_SIG_STATUS_NOSIG; - ev.mTrans_fmt = TVIN_TFMT_2D; - ev.mFmt = TVIN_SIG_FMT_NULL; - ev.mReserved = 0; - sendTvEvent ( ev ); - break; + case CAv::AVEvent::EVENT_AV_STOP: { + config_value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); + if ( strcmp ( config_value, "black" ) == 0 ) { + mAv.DisableVideoWithBlackColor(); + } else { + mAv.DisableVideoWithBlueColor(); } + SetAudioMuteForTv ( CC_AUDIO_MUTE ); - case CAv::AVEvent::EVENT_AV_RESUEM: { - //if (mAv.WaittingVideoPlaying() == 0) { - SetDisplayMode ( mVpp.GetDisplayMode ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) ), - CTvin::Tvin_SourceInputToSourceInputType(m_source_input), - mAv.getVideoResolutionToFmt()); - usleep(50 * 1000); - mAv.EnableVideoNow(); - SetAudioMuteForTv ( CC_AUDIO_UNMUTE ); - //} - TvEvent::AVPlaybackEvent AvPlayBackEvt; - AvPlayBackEvt.mMsgType = TvEvent::AVPlaybackEvent::EVENT_AV_PLAYBACK_RESUME; - AvPlayBackEvt.mProgramId = ( int ) ev.param; - sendTvEvent(AvPlayBackEvt ); - break; - } + TvEvent::SignalInfoEvent ev; + ev.mStatus = TVIN_SIG_STATUS_NOSIG; + ev.mTrans_fmt = TVIN_TFMT_2D; + ev.mFmt = TVIN_SIG_FMT_NULL; + ev.mReserved = 0; + sendTvEvent ( ev ); + break; + } - case CAv::AVEvent::EVENT_AV_SCAMBLED: { - config_value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); - if ( strcmp ( config_value, "black" ) == 0 ) { - mAv.DisableVideoWithBlackColor(); - } else { - mAv.DisableVideoWithBlueColor(); - } - TvEvent::AVPlaybackEvent AvPlayBackEvt; - AvPlayBackEvt.mMsgType = TvEvent::AVPlaybackEvent::EVENT_AV_SCAMBLED; - AvPlayBackEvt.mProgramId = ( int ) ev.param; - sendTvEvent(AvPlayBackEvt ); - break; - } + case CAv::AVEvent::EVENT_AV_RESUEM: { + //if (mAv.WaittingVideoPlaying() == 0) { + SetDisplayMode ( mVpp.GetDisplayMode ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) ), + CTvin::Tvin_SourceInputToSourceInputType(m_source_input), + mAv.getVideoResolutionToFmt()); + usleep(50 * 1000); + mAv.EnableVideoNow(); + SetAudioMuteForTv ( CC_AUDIO_UNMUTE ); + //} + TvEvent::AVPlaybackEvent AvPlayBackEvt; + AvPlayBackEvt.mMsgType = TvEvent::AVPlaybackEvent::EVENT_AV_PLAYBACK_RESUME; + AvPlayBackEvt.mProgramId = ( int ) ev.param; + sendTvEvent(AvPlayBackEvt ); + break; + } - case CAv::AVEvent::EVENT_AV_UNSUPPORT: { - LOGD("To AVS or AVS+ format");//just avs format, not unsupport, and avs avs+ - break; + case CAv::AVEvent::EVENT_AV_SCAMBLED: { + config_value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); + if ( strcmp ( config_value, "black" ) == 0 ) { + mAv.DisableVideoWithBlackColor(); + } else { + mAv.DisableVideoWithBlueColor(); } + TvEvent::AVPlaybackEvent AvPlayBackEvt; + AvPlayBackEvt.mMsgType = TvEvent::AVPlaybackEvent::EVENT_AV_SCAMBLED; + AvPlayBackEvt.mProgramId = ( int ) ev.param; + sendTvEvent(AvPlayBackEvt ); + break; + } - default: - break; + case CAv::AVEvent::EVENT_AV_UNSUPPORT: { + LOGD("To AVS or AVS+ format");//just avs format, not unsupport, and avs avs+ + break; + } + + default: + break; } } -CTv::CTvMsgQueue::CTvMsgQueue(CTv *tv) { +CTv::CTvMsgQueue::CTvMsgQueue(CTv *tv) +{ mpTv = tv; } -CTv::CTvMsgQueue::~CTvMsgQueue() { +CTv::CTvMsgQueue::~CTvMsgQueue() +{ } -void CTv::CTvMsgQueue::handleMessage ( CMessage &msg ) { +void CTv::CTvMsgQueue::handleMessage ( CMessage &msg ) +{ LOGD ("%s, CTv::CTvMsgQueue::handleMessage type = %d", __FUNCTION__, msg.mType); switch ( msg.mType ) { - case TV_MSG_COMMON: + case TV_MSG_COMMON: break; - case TV_MSG_STOP_ANALYZE_TS: + case TV_MSG_STOP_ANALYZE_TS: //mpTv->Tv_Stop_Analyze_Ts(); break; - case TV_MSG_START_ANALYZE_TS: + case TV_MSG_START_ANALYZE_TS: //mpTv->Tv_Start_Analyze_Ts ( pTv->mCurAnalyzeTsChannelID ); break; - case TV_MSG_CHECK_FE_DELAY: { - mpTv->mFrontDev.checkStatusOnce(); - break; - } + case TV_MSG_CHECK_FE_DELAY: { + mpTv->mFrontDev.checkStatusOnce(); + break; + } - case TV_MSG_AV_EVENT: { - mpTv->onEvent(*((CAv::AVEvent *)(msg.mpPara))); - break; - } + case TV_MSG_AV_EVENT: { + mpTv->onEvent(*((CAv::AVEvent *)(msg.mpPara))); + break; + } - case TV_MSG_FE_EVENT: { - mpTv->onEvent(*((CFrontEnd::FEEvent *)(msg.mpPara))); - break; - } + case TV_MSG_FE_EVENT: { + mpTv->onEvent(*((CFrontEnd::FEEvent *)(msg.mpPara))); + break; + } - case TV_MSG_SCAN_EVENT: { - mpTv->onEvent(*((CTvScanner::ScannerEvent *)(msg.mpPara))); - break; - } + case TV_MSG_SCAN_EVENT: { + mpTv->onEvent(*((CTvScanner::ScannerEvent *)(msg.mpPara))); + break; + } - case TV_MSG_EPG_EVENT: { - mpTv->onEvent(*((CTvEpg::EpgEvent *)(msg.mpPara))); - break; - } + case TV_MSG_EPG_EVENT: { + mpTv->onEvent(*((CTvEpg::EpgEvent *)(msg.mpPara))); + break; + } - case TV_MSG_HDMI_SR_CHANGED: { - int sr = ((int *)(msg.mpPara))[0]; - mpTv->onHdmiSrChanged(sr, (((int *)(msg.mpPara))[1] == 0) ? true : false); - break; - } + case TV_MSG_HDMI_SR_CHANGED: { + int sr = ((int *)(msg.mpPara))[0]; + mpTv->onHdmiSrChanged(sr, (((int *)(msg.mpPara))[1] == 0) ? true : false); + break; + } - case TV_MSG_ENABLE_VIDEO_LATER: { - int fc = msg.mpPara[0]; - mpTv->onEnableVideoLater(fc); - break; - } + case TV_MSG_ENABLE_VIDEO_LATER: { + int fc = msg.mpPara[0]; + mpTv->onEnableVideoLater(fc); + break; + } - default: + default: break; } } -void CTv::onHdmiSrChanged(int sr, bool bInit) { +void CTv::onHdmiSrChanged(int sr, bool bInit) +{ if (bInit) { LOGD ( "%s, Init HDMI audio, sampling rate:%d", __FUNCTION__, sr ); sr = HanldeAudioInputSr(sr); @@ -458,7 +469,8 @@ void CTv::onHdmiSrChanged(int sr, bool bInit) { } } -void CTv::onHMDIAudioStatusChanged(int status) { +void CTv::onHMDIAudioStatusChanged(int status) +{ if (status == 0) {//change to no audio data SetAudioMuteForTv ( CC_AUDIO_MUTE ); } else if (status == 1) {//change to audio data come @@ -468,7 +480,8 @@ void CTv::onHMDIAudioStatusChanged(int status) { } } -void CTv::CTvMsgQueue::onEvent ( const CTvScanner::ScannerEvent &ev ) { +void CTv::CTvMsgQueue::onEvent ( const CTvScanner::ScannerEvent &ev ) +{ CMessage msg; msg.mDelayMs = 0; msg.mType = CTvMsgQueue::TV_MSG_SCAN_EVENT; @@ -476,7 +489,8 @@ void CTv::CTvMsgQueue::onEvent ( const CTvScanner::ScannerEvent &ev ) { this->sendMsg ( msg ); } -void CTv::CTvMsgQueue::onEvent ( const CFrontEnd::FEEvent &ev ) { +void CTv::CTvMsgQueue::onEvent ( const CFrontEnd::FEEvent &ev ) +{ CMessage msg; msg.mDelayMs = 0; msg.mType = CTvMsgQueue::TV_MSG_FE_EVENT; @@ -484,7 +498,8 @@ void CTv::CTvMsgQueue::onEvent ( const CFrontEnd::FEEvent &ev ) { this->sendMsg ( msg ); } -void CTv::CTvMsgQueue::onEvent ( const CTvEpg::EpgEvent &ev ) { +void CTv::CTvMsgQueue::onEvent ( const CTvEpg::EpgEvent &ev ) +{ CMessage msg; msg.mDelayMs = 0; msg.mType = CTvMsgQueue::TV_MSG_EPG_EVENT; @@ -492,7 +507,8 @@ void CTv::CTvMsgQueue::onEvent ( const CTvEpg::EpgEvent &ev ) { this->sendMsg ( msg ); } -void CTv::CTvMsgQueue::onEvent(const CAv::AVEvent &ev) { +void CTv::CTvMsgQueue::onEvent(const CAv::AVEvent &ev) +{ CMessage msg; msg.mDelayMs = 0; msg.mType = CTvMsgQueue::TV_MSG_AV_EVENT; @@ -500,12 +516,14 @@ void CTv::CTvMsgQueue::onEvent(const CAv::AVEvent &ev) { this->sendMsg ( msg ); } -int CTv::setTvObserver ( TvIObserver *ob ) { +int CTv::setTvObserver ( TvIObserver *ob ) +{ mpObserver = ob; return 0; } -void CTv::sendTvEvent ( const CTvEv &ev ) { +void CTv::sendTvEvent ( const CTvEv &ev ) +{ //AutoMutex lock(mLock); /* send sigstate to AutoBackLight */ if (ev.getEvType() == CTvEv::TV_EVENT_SIGLE_DETECT) { @@ -527,11 +545,13 @@ void CTv::sendTvEvent ( const CTvEv &ev ) { } } -int CTv::ClearAnalogFrontEnd() { +int CTv::ClearAnalogFrontEnd() +{ return mFrontDev.ClearAnalogFrontEnd (); } -int CTv::dtvAutoScan() { +int CTv::dtvAutoScan() +{ AutoMutex lock ( mLock ); mTvAction |= TV_ACTION_SCANNING; //mTvEpg.leaveChannel(); @@ -547,7 +567,8 @@ int CTv::dtvAutoScan() { return 0; } -int CTv::dtvCleanProgramByFreq ( int freq ) { +int CTv::dtvCleanProgramByFreq ( int freq ) +{ int iOutRet = 0; CTvChannel channel; iOutRet = CTvChannel::SelectByFreq ( freq, channel ); @@ -559,7 +580,8 @@ int CTv::dtvCleanProgramByFreq ( int freq ) { return iOutRet; } -int CTv::dtvManualScan (int beginFreq, int endFreq, int modulation) { +int CTv::dtvManualScan (int beginFreq, int endFreq, int modulation) +{ AutoMutex lock ( mLock ); mTvAction |= TV_ACTION_SCANNING; //mTvEpg.leaveChannel(); @@ -573,11 +595,12 @@ int CTv::dtvManualScan (int beginFreq, int endFreq, int modulation) { return iOutRet; } -int CTv::dtvAutoScanAtscLock(int attenna, int videoStd, int audioStd) { +int CTv::dtvAutoScanAtscLock(int attenna, int videoStd, int audioStd) +{ //for warning attenna = attenna; videoStd = videoStd; - audioStd= audioStd; + audioStd = audioStd; //showboz /* int minScanFreq, maxScanFreq, vStd, aStd; vStd = CC_ATV_VIDEO_STD_PAL; @@ -600,7 +623,8 @@ int CTv::dtvAutoScanAtscLock(int attenna, int videoStd, int audioStd) { } //searchType 0:not 256 1:is 256 Program -int CTv::atvAutoScan(int videoStd, int audioStd, int searchType) { +int CTv::atvAutoScan(int videoStd, int audioStd, int searchType) +{ int minScanFreq, maxScanFreq, vStd, aStd; AutoMutex lock ( mLock ); mAv.DisableVideoWithBlueColor(); @@ -646,7 +670,8 @@ int CTv::atvAutoScan(int videoStd, int audioStd, int searchType) { return 0; } -int CTv::clearAllProgram(int arg0) { +int CTv::clearAllProgram(int arg0) +{ CTvProgram::CleanAllProgramBySrvType ( CTvProgram::TYPE_ATV ); CTvProgram::CleanAllProgramBySrvType ( CTvProgram::TYPE_TV ); CTvProgram::CleanAllProgramBySrvType ( CTvProgram::TYPE_DTV ); @@ -655,7 +680,8 @@ int CTv::clearAllProgram(int arg0) { } int CTv::atvMunualScan ( int startFreq, int endFreq, int videoStd, int audioStd, - int store_Type , int channel_num ) { + int store_Type , int channel_num ) +{ int minScanFreq, maxScanFreq, vStd, aStd; minScanFreq = mFrontDev.formatATVFreq ( startFreq ); @@ -693,7 +719,8 @@ int CTv::atvMunualScan ( int startFreq, int endFreq, int videoStd, int audioStd, return mTvScanner.ATVManualScan ( minScanFreq, maxScanFreq, stdAndColor, store_Type, channel_num); } -int CTv::getVideoFormatInfo ( int *pWidth, int *pHeight, int *pFPS, int *pInterlace ) { +int CTv::getVideoFormatInfo ( int *pWidth, int *pHeight, int *pFPS, int *pInterlace ) +{ int iOutRet = -1; AM_AV_VideoStatus_t video_status; @@ -719,12 +746,14 @@ int CTv::getVideoFormatInfo ( int *pWidth, int *pHeight, int *pFPS, int *pInterl return iOutRet; } -int CTv::stopScanLock() { +int CTv::stopScanLock() +{ AutoMutex lock ( mLock ); return stopScan(); } -int CTv::stopScan() { +int CTv::stopScan() +{ const char *config_value = NULL; if (!(mTvAction & TV_ACTION_SCANNING)) { LOGD("%s, tv not scanning ,return\n", __FUNCTION__); @@ -747,7 +776,8 @@ int CTv::stopScan() { return 0; } -int CTv::playProgramLock ( int progId ) { +int CTv::playProgramLock ( int progId ) +{ /*AutoMutex lock ( mLock ); CTvProgram prog; int ret = CTvProgram::selectByID ( progId, prog ); @@ -787,7 +817,8 @@ int CTv::playProgramLock ( int progId ) { return 0; } -int CTv::playDvbcProgram ( int progId ) { +int CTv::playDvbcProgram ( int progId ) +{ LOGD ( "%s, progId = %d\n", __FUNCTION__, progId ); CTvProgram prog; @@ -832,7 +863,8 @@ int CTv::playDvbcProgram ( int progId ) { return 0; } -int CTv::getAudioTrackNum ( int progId ) { +int CTv::getAudioTrackNum ( int progId ) +{ int iRet, iOutCnt = 0; CTvProgram prog; @@ -852,7 +884,8 @@ int CTv::getAudioTrackNum ( int progId ) { return iOutCnt; } -int CTv::getAudioInfoByIndex ( int progId, int idx, int *pAFmt, String8 &lang ) { +int CTv::getAudioInfoByIndex ( int progId, int idx, int *pAFmt, String8 &lang ) +{ int iRet, iOutRet = -1; CTvProgram prog; CTvProgram::Audio *pA = NULL; @@ -885,7 +918,8 @@ int CTv::getAudioInfoByIndex ( int progId, int idx, int *pAFmt, String8 &lang ) return iOutRet; } -int CTv::switchAudioTrack ( int aPid, int aFmt, int aParam ) { +int CTv::switchAudioTrack ( int aPid, int aFmt, int aParam ) +{ int iOutRet = 0; do { @@ -900,7 +934,8 @@ int CTv::switchAudioTrack ( int aPid, int aFmt, int aParam ) { return iOutRet; } -int CTv::switchAudioTrack ( int progId, int idx ) { +int CTv::switchAudioTrack ( int progId, int idx ) +{ int iOutRet = 0; CTvProgram prog; CTvProgram::Audio *pAudio = NULL; @@ -943,7 +978,8 @@ int CTv::switchAudioTrack ( int progId, int idx ) { return iOutRet; } -int CTv::ResetAudioDecoderForPCMOutput() { +int CTv::ResetAudioDecoderForPCMOutput() +{ int iOutRet = 0; iOutRet = mAv.ResetAudioDecoder (); @@ -952,7 +988,8 @@ int CTv::ResetAudioDecoderForPCMOutput() { } int CTv::playDtvProgram ( int mode, int freq, int para1, int para2, - int vpid, int vfmt, int apid, int afmt, int pcr, int audioCompetation) { + int vpid, int vfmt, int apid, int afmt, int pcr, int audioCompetation) +{ AutoMutex lock ( mLock ); mTvAction |= TV_ACTION_PLAYING; if ( m_blackout_enable == 1 ) { @@ -974,7 +1011,8 @@ int CTv::playDtvProgram ( int mode, int freq, int para1, int para2, } -int CTv::playDtmbProgram ( int progId ) { +int CTv::playDtmbProgram ( int progId ) +{ CTvProgram prog; CTvChannel channel; int vpid = 0x1fff, apid = 0x1fff, vfmt = -1, afmt = -1; @@ -1024,7 +1062,8 @@ int CTv::playDtmbProgram ( int progId ) { return 0; } -int CTv::playAtvProgram (int freq, int videoStd, int audioStd, int fineTune, int audioCompetation) { +int CTv::playAtvProgram (int freq, int videoStd, int audioStd, int fineTune, int audioCompetation) +{ mTvAction |= TV_ACTION_PLAYING; if ( m_blackout_enable == 1 ) { mAv.EnableVideoBlackout(); @@ -1052,7 +1091,8 @@ int CTv::playAtvProgram (int freq, int videoStd, int audioStd, int fineTune, in return 0; } -int CTv::resetFrontEndPara ( frontend_para_set_t feParms ) { +int CTv::resetFrontEndPara ( frontend_para_set_t feParms ) +{ if ( feParms.mode == FE_ANALOG ) { int progID = -1; int tmpFreq = feParms.freq; @@ -1089,7 +1129,8 @@ int CTv::resetFrontEndPara ( frontend_para_set_t feParms ) { return 0; } -int CTv::resetDmxAndAvSource() { +int CTv::resetDmxAndAvSource() +{ AM_DMX_Source_t curdmxSource; mFrontDev.GetTSSource ( &curdmxSource ); LOGD ( "%s, AM_FEND_GetTSSource %d", __FUNCTION__, curdmxSource ); @@ -1103,7 +1144,8 @@ int CTv::resetDmxAndAvSource() { return 0; } -int CTv::SetCurProgramAudioVolumeCompensationVal ( int tmpVal ) { +int CTv::SetCurProgramAudioVolumeCompensationVal ( int tmpVal ) +{ SetAudioVolumeCompensationVal ( tmpVal ); SetAudioMasterVolume (GetAudioMasterVolume() ); @@ -1121,7 +1163,8 @@ int CTv::SetCurProgramAudioVolumeCompensationVal ( int tmpVal ) { return 0; } -int CTv::GetAudioVolumeCompensationVal(int progxxId) { +int CTv::GetAudioVolumeCompensationVal(int progxxId) +{ int tmpVolValue = 0; CTvProgram prog; if ( CTvProgram::selectByID ( m_cur_playing_prog_id, prog ) != 0 ) { @@ -1134,7 +1177,8 @@ int CTv::GetAudioVolumeCompensationVal(int progxxId) { return tmpVolValue; } -int CTv::startPlayTv ( int source, int vid, int aid, int vfat, int afat ) { +int CTv::startPlayTv ( int source, int vid, int aid, int vfat, int afat ) +{ if ( source == SOURCE_DTV ) { AM_FileEcho ( DEVICE_CLASS_TSYNC_AV_THRESHOLD_MIN, AV_THRESHOLD_MIN_MS ); LOGD ( "%s, startPlayTv", __FUNCTION__); @@ -1143,14 +1187,16 @@ int CTv::startPlayTv ( int source, int vid, int aid, int vfat, int afat ) { return 0; } -int CTv::stopPlayingLock() { +int CTv::stopPlayingLock() +{ AutoMutex lock ( mLock ); if (getSubSwitchStatus() == 1) stopSubtitle(); return stopPlaying(); } -int CTv::stopPlaying() { +int CTv::stopPlaying() +{ const char *config_value = NULL; if (!(mTvAction & TV_ACTION_PLAYING)) { LOGD("%s, stopplay cur action = %x not playing , return", __FUNCTION__, mTvAction); @@ -1178,21 +1224,24 @@ int CTv::stopPlaying() { return 0; } -int CTv::GetATVAFCType() { +int CTv::GetATVAFCType() +{ return 1; } -int CTv::GetATVSourceTimerSwitch() { +int CTv::GetATVSourceTimerSwitch() +{ return 1; } -int CTv::getAudioChannel() { +int CTv::getAudioChannel() +{ int iRet = -1; AM_AOUT_OutputMode_t audioChanneleMod; do { iRet = mAv.AudioGetOutputMode (&audioChanneleMod ); if ( AM_SUCCESS != iRet ) { - LOGD ( "%s, jianfei.lan GetOutputMode is FAILED %d\n", __FUNCTION__, iRet ); + LOGD ( "%s, jianfei.lan GetOutputMode is FAILED %d\n", __FUNCTION__, iRet ); break; } LOGD ( "%s, jianfei.lan getAudioChannel iRet : %d audioChanneleMod %d\n", __FUNCTION__, iRet, audioChanneleMod ); @@ -1200,7 +1249,8 @@ int CTv::getAudioChannel() { return audioChanneleMod; } -int CTv::setAudioChannel ( int channelIdx ) { +int CTv::setAudioChannel ( int channelIdx ) +{ int iOutRet = 0; AM_AOUT_OutputMode_t audioChanneleMod; LOGD ( "%s, channelIdx : %d\n", __FUNCTION__, channelIdx ); @@ -1221,25 +1271,29 @@ int CTv::setAudioChannel ( int channelIdx ) { return 0; } -int CTv::getFrontendSignalStrength() { +int CTv::getFrontendSignalStrength() +{ int Strength = 0; Strength = mFrontDev.getStrength(); return Strength; } -int CTv::getFrontendSNR() { +int CTv::getFrontendSNR() +{ int snr = 0; snr = mFrontDev.getSNR(); return snr; } -int CTv::getFrontendBER() { +int CTv::getFrontendBER() +{ int ber = 0; ber = mFrontDev.getBER(); return ber; } -int CTv::getChannelInfoBydbID ( int dbID, channel_info_t &chan_info ) { +int CTv::getChannelInfoBydbID ( int dbID, channel_info_t &chan_info ) +{ CTvProgram prog; CTvChannel channel; Vector > out; @@ -1283,7 +1337,8 @@ int CTv::getChannelInfoBydbID ( int dbID, channel_info_t &chan_info ) { return 0; } -bool CTv::Tv_Start_Analyze_Ts ( int channelID ) { +bool CTv::Tv_Start_Analyze_Ts ( int channelID ) +{ int freq, ret; CTvChannel channel; @@ -1305,30 +1360,36 @@ bool CTv::Tv_Start_Analyze_Ts ( int channelID ) { return true; } -bool CTv::Tv_Stop_Analyze_Ts() { +bool CTv::Tv_Stop_Analyze_Ts() +{ stopScanLock(); return true; } -int CTv::saveATVProgramID ( int dbID ) { +int CTv::saveATVProgramID ( int dbID ) +{ config_set_int ( CFG_SECTION_TV, "atv.get.program.id", dbID ); return 0; } -int CTv::getATVProgramID ( void ) { +int CTv::getATVProgramID ( void ) +{ return config_get_int ( CFG_SECTION_TV, "atv.get.program.id", -1 ); } -int CTv::saveDTVProgramID ( int dbID ) { +int CTv::saveDTVProgramID ( int dbID ) +{ config_set_int ( CFG_SECTION_TV, "dtv.get.program.id", dbID ); return 0; } -int CTv::getDTVProgramID ( void ) { +int CTv::getDTVProgramID ( void ) +{ return config_get_int ( CFG_SECTION_TV, "dtv.get.program.id", -1 ); } -int CTv::getATVMinMaxFreq ( int *scanMinFreq, int *scanMaxFreq ) { +int CTv::getATVMinMaxFreq ( int *scanMinFreq, int *scanMaxFreq ) +{ int tmpVal, i = 0; const char *config_value; const char *strDelimit = ","; @@ -1359,11 +1420,13 @@ int CTv::getATVMinMaxFreq ( int *scanMinFreq, int *scanMaxFreq ) { return 0; } -int CTv::IsDVISignal() { +int CTv::IsDVISignal() +{ return ( ( TVIN_SIG_FMT_NULL != mSigDetectThread.getCurSigInfo().fmt ) && ( mSigDetectThread.getCurSigInfo().reserved & 0x1 ) ); } -int CTv::getHDMIFrameRate() { +int CTv::getHDMIFrameRate() +{ int ConstRate[5] = {24, 25, 30, 50, 60}; float ConstRateDiffHz[5] = {0.5, 0.5, 0.5, 2, 2}; //å差便 int fps = mSigDetectThread.getCurSigInfo().fps; @@ -1375,11 +1438,13 @@ int CTv::getHDMIFrameRate() { return fps; } -tv_source_input_t CTv::GetLastSourceInput ( void ) { +tv_source_input_t CTv::GetLastSourceInput ( void ) +{ return m_last_source_input; } -int CTv::isVgaFmtInHdmi ( void ) { +int CTv::isVgaFmtInHdmi ( void ) +{ tvin_sig_fmt_t fmt = mSigDetectThread.getCurSigInfo().fmt; if ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_HDMI ) { @@ -1388,7 +1453,8 @@ int CTv::isVgaFmtInHdmi ( void ) { return CTvin::isVgaFmtInHdmi ( fmt ); } -int CTv::isSDFmtInHdmi ( void ) { +int CTv::isSDFmtInHdmi ( void ) +{ tvin_sig_fmt_t fmt = mSigDetectThread.getCurSigInfo().fmt; if ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_HDMI ) { @@ -1397,7 +1463,8 @@ int CTv::isSDFmtInHdmi ( void ) { return CTvin::isSDFmtInHdmi ( fmt ); } -void CTv::print_version_info ( void ) { +void CTv::print_version_info ( void ) +{ // print tvapi version info LOGD ( "libtvservice git branch:%s\n", tvservice_get_git_branch_info() ); LOGD ( "libtvservice git version:%s\n", tvservice_get_git_version_info() ); @@ -1414,7 +1481,8 @@ void CTv::print_version_info ( void ) { LOGD ( "libdvb Builer Name:%s\n", dvb_get_build_name_info() ); } -int CTv::Tvin_GetTvinConfig ( void ) { +int CTv::Tvin_GetTvinConfig ( void ) +{ const char *config_value; int i = 0; @@ -1455,12 +1523,14 @@ int CTv::Tvin_GetTvinConfig ( void ) { return 0; } -TvRunStatus_t CTv::GetTvStatus() { +TvRunStatus_t CTv::GetTvStatus() +{ Mutex::Autolock _l ( mLock ); return mTvStatus; } -int CTv::OpenTv ( void ) { +int CTv::OpenTv ( void ) +{ int tmp_val = 0; const char *value; Tv_Spread_Spectrum(); @@ -1591,7 +1661,8 @@ int CTv::OpenTv ( void ) { return 0; } -int CTv::CloseTv ( void ) { +int CTv::CloseTv ( void ) +{ LOGD ( "tv close"); mSigDetectThread.stopDetect(); if (mpUpgradeFBC != NULL) { @@ -1605,7 +1676,8 @@ int CTv::CloseTv ( void ) { return 0; } -int CTv::StartTvLock () { +int CTv::StartTvLock () +{ LOGD ( "%s, tv start status = %d", __FUNCTION__, mTvStatus); if (mTvStatus == TV_START_ED) return 0; @@ -1648,7 +1720,8 @@ int CTv::StartTvLock () { return 0; } -int CTv::DoInstabootSuspend() { +int CTv::DoInstabootSuspend() +{ CTvDatabase::GetTvDb()->UnInitTvDb(); CTvSettingdoSuspend(); mVpp.doSuspend(); @@ -1656,7 +1729,8 @@ int CTv::DoInstabootSuspend() { return 0; } -int CTv::DoInstabootResume() { +int CTv::DoInstabootResume() +{ CTvDatabase::GetTvDb()->InitTvDb(TV_DB_PATH); CTvSettingdoResume(); mVpp.doResume(); @@ -1664,21 +1738,24 @@ int CTv::DoInstabootResume() { return 0; } -int CTv::DoSuspend(int type) { +int CTv::DoSuspend(int type) +{ if (type == 1) { DoInstabootSuspend(); } return 0; } -int CTv::DoResume(int type) { +int CTv::DoResume(int type) +{ if (type == 1) { DoInstabootResume(); } return 0; } -int CTv::StopTvLock ( void ) { +int CTv::StopTvLock ( void ) +{ LOGD("%s, call Tv_Stop status = %d \n", __FUNCTION__, mTvStatus); const char *value; Mutex::Autolock _l ( mLock ); @@ -1732,49 +1809,52 @@ int CTv::StopTvLock ( void ) { return 0; } -const char *CTv::getPqDbPath() { +const char *CTv::getPqDbPath() +{ return config_get_str(CFG_SECTION_TV, "pq_db_path", "/param/pq.db"); } -int CTv::Tv_MiscSetBySource ( tv_source_input_t source_input ) { +int CTv::Tv_MiscSetBySource ( tv_source_input_t source_input ) +{ int ret = -1; switch ( source_input ) { - case SOURCE_TV: - mVpp.VPP_SetScalerPathSel(1); - ret = SetFileAttrValue ( "/sys/module/am_vecm/parameters/dnlp_adj_level", "4" ); - break; + case SOURCE_TV: + mVpp.VPP_SetScalerPathSel(1); + ret = SetFileAttrValue ( "/sys/module/am_vecm/parameters/dnlp_adj_level", "4" ); + break; - case SOURCE_HDMI1: - case SOURCE_HDMI2: - case SOURCE_HDMI3: - mVpp.VPP_SetScalerPathSel(0); - //ret = mVpp.Tv_SavePanoramaMode ( VPP_PANORAMA_MODE_FULL, SOURCE_TYPE_HDMI ); - ret |= SetFileAttrValue ( "/sys/module/am_vecm/parameters/dnlp_adj_level", "5" ); - break; + case SOURCE_HDMI1: + case SOURCE_HDMI2: + case SOURCE_HDMI3: + mVpp.VPP_SetScalerPathSel(0); + //ret = mVpp.Tv_SavePanoramaMode ( VPP_PANORAMA_MODE_FULL, SOURCE_TYPE_HDMI ); + ret |= SetFileAttrValue ( "/sys/module/am_vecm/parameters/dnlp_adj_level", "5" ); + break; - case SOURCE_DTV: - mVpp.VPP_SetScalerPathSel(0); + case SOURCE_DTV: + mVpp.VPP_SetScalerPathSel(0); - case SOURCE_AV1: - case SOURCE_AV2: - case SOURCE_VGA: - mVpp.VPP_SetScalerPathSel(1); - ret |= SetFileAttrValue ( "/sys/module/am_vecm/parameters/dnlp_adj_level", "5" ); - break; + case SOURCE_AV1: + case SOURCE_AV2: + case SOURCE_VGA: + mVpp.VPP_SetScalerPathSel(1); + ret |= SetFileAttrValue ( "/sys/module/am_vecm/parameters/dnlp_adj_level", "5" ); + break; - case SOURCE_SVIDEO: - case SOURCE_IPTV: - mVpp.VPP_SetScalerPathSel(1); - default: - mVpp.VPP_SetScalerPathSel(0); - ret |= SetFileAttrValue ( "/sys/module/am_vecm/parameters/dnlp_adj_level", "5" ); - break; + case SOURCE_SVIDEO: + case SOURCE_IPTV: + mVpp.VPP_SetScalerPathSel(1); + default: + mVpp.VPP_SetScalerPathSel(0); + ret |= SetFileAttrValue ( "/sys/module/am_vecm/parameters/dnlp_adj_level", "5" ); + break; } return ret; } -int CTv::SetSourceSwitchInput (tv_source_input_t source_input ) { +int CTv::SetSourceSwitchInput (tv_source_input_t source_input ) +{ Mutex::Autolock _l ( mLock ); LOGD ( "%s, source input = %d", __FUNCTION__, source_input ); tv_source_input_t cur_source_input = m_source_input; @@ -1791,18 +1871,18 @@ int CTv::SetSourceSwitchInput (tv_source_input_t source_input ) { if (m_is_set_hdmi_edid) { int tmp_ret = 0; switch ( source_input ) { - case SOURCE_HDMI1: - tmp_ret = SSMSetHDMIEdid(1); - break; - case SOURCE_HDMI2: - tmp_ret = SSMSetHDMIEdid(2); - break; - case SOURCE_HDMI3: - tmp_ret = SSMSetHDMIEdid(3); - break; - default: - tmp_ret = -1; - break; + case SOURCE_HDMI1: + tmp_ret = SSMSetHDMIEdid(1); + break; + case SOURCE_HDMI2: + tmp_ret = SSMSetHDMIEdid(2); + break; + case SOURCE_HDMI3: + tmp_ret = SSMSetHDMIEdid(3); + break; + default: + tmp_ret = -1; + break; } if (tmp_ret < 0) LOGE ( "%s, do not set hdmi port%d edid.ret=%d", __FUNCTION__, source_input - 4, tmp_ret ); @@ -1884,7 +1964,7 @@ int CTv::SetSourceSwitchInput (tv_source_input_t source_input ) { static int sigchkcnt = 0; while ( true ) { if ( ( mTvin.Tvin_CheckPathActive ( TV_PATH_TYPE_DEFAULT, isNeedCheckD2D3 ) == TV_PATH_STATUS_INACTIVE ) - && ( mTvin.Tvin_CheckPathActive ( TV_PATH_TYPE_TVIN, isNeedCheckD2D3 ) == TV_PATH_STATUS_INACTIVE ) ) { + && ( mTvin.Tvin_CheckPathActive ( TV_PATH_TYPE_TVIN, isNeedCheckD2D3 ) == TV_PATH_STATUS_INACTIVE ) ) { LOGD("%s, path check is ok, and break\n", __FUNCTION__); break; } else { @@ -1901,7 +1981,7 @@ int CTv::SetSourceSwitchInput (tv_source_input_t source_input ) { // Uninit data UnInitTvAudio(); if (source_input == SOURCE_HDMI1 || source_input == SOURCE_HDMI2 || source_input == SOURCE_HDMI3 || - source_input == SOURCE_MPEG || source_input == SOURCE_DTV ) { + source_input == SOURCE_MPEG || source_input == SOURCE_DTV ) { SwitchAVOutBypass(0); } else { SwitchAVOutBypass(1); @@ -1954,7 +2034,8 @@ int CTv::SetSourceSwitchInput (tv_source_input_t source_input ) { return 0; } -void CTv::onSigToStable() { +void CTv::onSigToStable() +{ if (m_autoset_displayfreq) { int freq = 60; if (CTvin::Tvin_SourceInputToSourceInputType(m_source_input) == SOURCE_TYPE_HDMI ) { @@ -1985,7 +2066,8 @@ void CTv::onSigToStable() { m_sig_stable_nums = 0; } -void CTv::onSigStillStable() { +void CTv::onSigStillStable() +{ if ( m_sig_stable_nums == 20) { tvin_info_t info = mSigDetectThread.getCurSigInfo(); TvEvent::SignalInfoEvent ev; @@ -2020,7 +2102,8 @@ void CTv::onSigStillStable() { m_sig_stable_nums++; } -void CTv::onEnableVideoLater(int framecount) { +void CTv::onEnableVideoLater(int framecount) +{ LOGD("onEnableVideoLater framecount = %d", framecount); mAv.EnableVideoWhenVideoPlaying(2); //if(CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_HDMI ){ @@ -2031,10 +2114,11 @@ void CTv::onEnableVideoLater(int framecount) { } } -void CTv::Tv_SetAVOutPut_Input_gain(tv_source_input_t source_input) { +void CTv::Tv_SetAVOutPut_Input_gain(tv_source_input_t source_input) +{ int nPgaValueIndex = 0; int nAdcValueIndex = 0; - int nDdcValueIndex= 0; + int nDdcValueIndex = 0; int tmpAvoutBufPtr[9]; if (GetAvOutGainBuf_Cfg(tmpAvoutBufPtr) != 0) { @@ -2042,28 +2126,28 @@ void CTv::Tv_SetAVOutPut_Input_gain(tv_source_input_t source_input) { } switch (source_input) { - case SOURCE_AV1: - case SOURCE_AV2: - nPgaValueIndex = 0; - nAdcValueIndex = 1; - nDdcValueIndex = 2; - break; - case SOURCE_HDMI1: - case SOURCE_HDMI2: - case SOURCE_HDMI3: - case SOURCE_DTV: - case SOURCE_MPEG: - nPgaValueIndex = 3; - nAdcValueIndex = 4; - nDdcValueIndex = 5; - break; - case SOURCE_TV: - nPgaValueIndex = 6; - nAdcValueIndex = 7; - nDdcValueIndex = 8; - break; - default: - break; + case SOURCE_AV1: + case SOURCE_AV2: + nPgaValueIndex = 0; + nAdcValueIndex = 1; + nDdcValueIndex = 2; + break; + case SOURCE_HDMI1: + case SOURCE_HDMI2: + case SOURCE_HDMI3: + case SOURCE_DTV: + case SOURCE_MPEG: + nPgaValueIndex = 3; + nAdcValueIndex = 4; + nDdcValueIndex = 5; + break; + case SOURCE_TV: + nPgaValueIndex = 6; + nAdcValueIndex = 7; + nDdcValueIndex = 8; + break; + default: + break; } SetPGA_IN_Value(tmpAvoutBufPtr[nPgaValueIndex]); @@ -2071,14 +2155,16 @@ void CTv::Tv_SetAVOutPut_Input_gain(tv_source_input_t source_input) { SetDAC_Digital_PlayBack_Volume(tmpAvoutBufPtr[nDdcValueIndex]); } -void CTv::onSigStableToUnstable() { +void CTv::onSigStableToUnstable() +{ LOGD ( "%s, stable to unstable\n", __FUNCTION__); SetAudioMuteForTv(CC_AUDIO_MUTE); mAv.DisableVideoWithBlackColor(); mTvin.Tvin_StopDecoder(); } -void CTv::onSigStableToUnSupport() { +void CTv::onSigStableToUnSupport() +{ SetAudioMuteForTv(CC_AUDIO_MUTE); mAv.DisableVideoWithBlackColor(); mTvin.Tvin_StopDecoder(); @@ -2093,9 +2179,10 @@ void CTv::onSigStableToUnSupport() { LOGD ( "%s, Enable blackscreen for signal change in StableToUnSupport!", __FUNCTION__ ); } -void CTv::onSigStableToNoSig() { +void CTv::onSigStableToNoSig() +{ SetAudioMuteForTv(CC_AUDIO_MUTE); - const char * value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); + const char *value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); if ( strcmp ( value, "black" ) == 0 ) { mAv.DisableVideoWithBlackColor(); } else { @@ -2114,7 +2201,8 @@ void CTv::onSigStableToNoSig() { LOGD ( "%s, Enable bluescreen for signal change in StableToNoSig!", __FUNCTION__); } -void CTv::onSigUnStableToUnSupport() { +void CTv::onSigUnStableToUnSupport() +{ mAv.DisableVideoWithBlackColor(); mTvin.Tvin_StopDecoder(); tvin_info_t info = mSigDetectThread.getCurSigInfo(); @@ -2128,9 +2216,10 @@ void CTv::onSigUnStableToUnSupport() { LOGD ( "%s, Enable blackscreen for signal change in UnStableToUnSupport!", __FUNCTION__); } -void CTv::onSigUnStableToNoSig() { +void CTv::onSigUnStableToNoSig() +{ SetAudioMuteForTv(CC_AUDIO_MUTE); - const char * value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); + const char *value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); if ( strcmp ( value, "black" ) == 0 ) { mAv.DisableVideoWithBlackColor(); } else { @@ -2149,9 +2238,10 @@ void CTv::onSigUnStableToNoSig() { LOGD ( "%s, Enable bluescreen for signal change in UnStableToNoSig! status = %d", __FUNCTION__, ev.mStatus ); } -void CTv::onSigNullToNoSig() { +void CTv::onSigNullToNoSig() +{ SetAudioMuteForTv(CC_AUDIO_MUTE); - const char * value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); + const char *value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); if ( strcmp ( value, "black" ) == 0 ) { mAv.DisableVideoWithBlackColor(); } else { @@ -2171,8 +2261,9 @@ void CTv::onSigNullToNoSig() { LOGD ( "%s, Enable bluescreen for signal change in NullToNoSig!", __FUNCTION__); } -void CTv::onSigNoSigToUnstable() { - const char * value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); +void CTv::onSigNoSigToUnstable() +{ + const char *value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); if ( strcmp ( value, "black" ) == 0 ) { mAv.DisableVideoWithBlackColor(); } else { @@ -2181,13 +2272,16 @@ void CTv::onSigNoSigToUnstable() { LOGD("Enable bluescreen for signal change in NoSigToUnstable\n"); } -void CTv::onSigStillUnstable(){ +void CTv::onSigStillUnstable() +{ } -void CTv::onSigStillNosig(){ +void CTv::onSigStillNosig() +{ } -void CTv::onSigStillNoSupport() { +void CTv::onSigStillNoSupport() +{ return;//change for gxtvbb, don't send event when sitll not support /* tvin_info_t info = mSigDetectThread.getCurSigInfo(); @@ -2201,10 +2295,12 @@ void CTv::onSigStillNoSupport() { */ } -void CTv::onSigStillNull(){ +void CTv::onSigStillNull() +{ } -void CTv::onStableSigFmtChange() { +void CTv::onStableSigFmtChange() +{ if ( m_autoset_displayfreq) { if (CTvin::Tvin_SourceInputToSourceInputType(m_source_input) == SOURCE_TYPE_HDMI ) { int fps = getHDMIFrameRate(); @@ -2232,14 +2328,17 @@ void CTv::onStableSigFmtChange() { } } -void CTv::onStableTransFmtChange() { +void CTv::onStableTransFmtChange() +{ LOGD("onStableTransFmtChange trans_fmt = %d", mSigDetectThread.getCurSigInfo().trans_fmt); } -void CTv::onSigDetectEnter(){ +void CTv::onSigDetectEnter() +{ } -void CTv::onSigDetectLoop() { +void CTv::onSigDetectLoop() +{ if (( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) == SOURCE_TYPE_HDMI ) ) { int sr = mTvin.get_hdmi_sampling_rate(); if ( ( sr > 0 ) && ( sr != m_hdmi_sampling_rate ) ) { @@ -2263,16 +2362,18 @@ void CTv::onSigDetectLoop() { } } -CTv::CTvDetectObserverForScanner::CTvDetectObserverForScanner(CTv *pTv) { +CTv::CTvDetectObserverForScanner::CTvDetectObserverForScanner(CTv *pTv) +{ mpTv = pTv; m_sig_stable_nums = 0; } -void CTv::CTvDetectObserverForScanner::onSigStableToUnstable() { +void CTv::CTvDetectObserverForScanner::onSigStableToUnstable() +{ LOGD ( "%s, stable to unstable\n", __FUNCTION__); mpTv->SetAudioMuteForTv(CC_AUDIO_MUTE); mpTv->SetAudioMuteForTv(CC_AUDIO_MUTE); - const char * value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); + const char *value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); if ( strcmp ( value, "black" ) == 0 ) { mpTv->mAv.DisableVideoWithBlackColor(); } else { @@ -2281,9 +2382,10 @@ void CTv::CTvDetectObserverForScanner::onSigStableToUnstable() { mpTv->mTvin.Tvin_StopDecoder(); } -void CTv::CTvDetectObserverForScanner::onSigUnStableToNoSig() { +void CTv::CTvDetectObserverForScanner::onSigUnStableToNoSig() +{ mpTv->SetAudioMuteForTv(CC_AUDIO_MUTE); - const char * value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); + const char *value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); if ( strcmp ( value, "black" ) == 0 ) { mpTv->mAv.DisableVideoWithBlackColor(); } else { @@ -2292,9 +2394,10 @@ void CTv::CTvDetectObserverForScanner::onSigUnStableToNoSig() { mpTv->mTvin.Tvin_StopDecoder(); } -void CTv::CTvDetectObserverForScanner::onSigStableToNoSig() { +void CTv::CTvDetectObserverForScanner::onSigStableToNoSig() +{ mpTv->SetAudioMuteForTv(CC_AUDIO_MUTE); - const char * value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); + const char *value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); if ( strcmp ( value, "black" ) == 0 ) { mpTv->mAv.DisableVideoWithBlackColor(); } else { @@ -2304,17 +2407,19 @@ void CTv::CTvDetectObserverForScanner::onSigStableToNoSig() { LOGD ( "%s, Enable bluescreen for signal change in StableToNoSig!", __FUNCTION__); } -void CTv::CTvDetectObserverForScanner::onSigToStable() { +void CTv::CTvDetectObserverForScanner::onSigToStable() +{ mpTv->mAv.setVideoScreenMode ( CAv::VIDEO_WIDEOPTION_16_9 ); m_sig_stable_nums = 0; } -void CTv::CTvDetectObserverForScanner::onSigStillStable() { +void CTv::CTvDetectObserverForScanner::onSigStillStable() +{ if (m_sig_stable_nums == 1) { LOGD("%s still stable , to start decoder", __FUNCTION__); int startdec_status = mpTv->mTvin.Tvin_StartDecoder (mpTv->mSigDetectThread.getCurSigInfo() ); if ( startdec_status == 0 ) { - const char * value = config_get_str ( CFG_SECTION_TV, "tvin.db.reg.en", "null" ); + const char *value = config_get_str ( CFG_SECTION_TV, "tvin.db.reg.en", "null" ); if ( strcmp ( value, "enable" ) == 0 ) { usleep ( 20 * 1000 ); mpTv->Tvin_SetPLLValues (); @@ -2329,14 +2434,16 @@ void CTv::CTvDetectObserverForScanner::onSigStillStable() { m_sig_stable_nums++; } -void CTv::onSourceConnect(int source_type, int connect_status) { +void CTv::onSourceConnect(int source_type, int connect_status) +{ TvEvent::SourceConnectEvent ev; ev.mSourceInput = source_type; ev.connectionState = connect_status; sendTvEvent(ev); } -void CTv::onVframeSizeChange() { +void CTv::onVframeSizeChange() +{ if (m_source_input == SOURCE_DTV) { mVpp.LoadVppSettings ( SOURCE_TYPE_DTV, mAv.getVideoResolutionToFmt(), INDEX_2D, TVIN_TFMT_2D ); } else if (m_source_input == SOURCE_INVALID) { @@ -2344,17 +2451,20 @@ void CTv::onVframeSizeChange() { } } -int CTv::GetSourceConnectStatus(tv_source_input_t source_input) { +int CTv::GetSourceConnectStatus(tv_source_input_t source_input) +{ return mSourceConnectDetectThread.GetSourceConnectStatus((tv_source_input_t)source_input); } -tv_source_input_t CTv::GetCurrentSourceInputLock ( void ) { +tv_source_input_t CTv::GetCurrentSourceInputLock ( void ) +{ Mutex::Autolock _l ( mLock ); return m_source_input; } //dtv and tvin -tvin_info_t CTv::GetCurrentSignalInfo ( void ) { +tvin_info_t CTv::GetCurrentSignalInfo ( void ) +{ tvin_trans_fmt det_fmt = TVIN_TFMT_2D; tvin_sig_status_t signalState = TVIN_SIG_STATUS_NULL; tvin_info_t signal_info = mSigDetectThread.getCurSigInfo(); @@ -2375,14 +2485,16 @@ tvin_info_t CTv::GetCurrentSignalInfo ( void ) { return signal_info; } -int CTv::Tv_GetHistgram(int *histgram_buf) { +int CTv::Tv_GetHistgram(int *histgram_buf) +{ if (histgram_buf == NULL) { return -1; } return mTvin.VDIN_GetHistgram(histgram_buf); } -int CTv::Tv_Set3DMode ( VIDEO_3D_MODE_T mode ) { +int CTv::Tv_Set3DMode ( VIDEO_3D_MODE_T mode ) +{ if (mode == VIDEO_3D_MODE_AUTO) { mTvin.VDIN_SetDI3DDetc (1); } else { @@ -2395,49 +2507,57 @@ int CTv::Tv_Set3DMode ( VIDEO_3D_MODE_T mode ) { return 0; } -VIDEO_3D_MODE_T CTv::Tv_Get3DMode ( void ) { +VIDEO_3D_MODE_T CTv::Tv_Get3DMode ( void ) +{ return m_mode_3d; } -int CTv::Tv_Set3DLRSwith ( int on_off) { +int CTv::Tv_Set3DLRSwith ( int on_off) +{ LOGW ( "%s,Set3D LRSwith on_off %d ,status %d !!! ", __FUNCTION__, on_off); mAv.set3DMode(m_mode_3d, on_off, 0); SSMSave3DLRSwitch(on_off); return 0; } -int CTv::Tv_Get3DLRSwith ( void ) { +int CTv::Tv_Get3DLRSwith ( void ) +{ unsigned char val = 0; SSMRead3DLRSwitch ( &val ); return ( int ) val; } -int CTv::Tv_Set3DTo2DMode ( int mode) { +int CTv::Tv_Set3DTo2DMode ( int mode) +{ LOGW ( "%s,Set3D to 2D mode %d ,status %d !!! ", __FUNCTION__ , mode); mAv.set3DMode(m_mode_3d, 0, mode); SSMSave3DTO2D ( mode ); return 0; } -int CTv::Tv_Get3DTo2DMode ( void ) { +int CTv::Tv_Get3DTo2DMode ( void ) +{ unsigned char val = 0; SSMRead3DTO2D ( &val ); return val; } -int CTv::Tv_Set3DDepth ( int value ) { +int CTv::Tv_Set3DDepth ( int value ) +{ mTvin.Tvin_SetDepthOf2Dto3D( value ); SSMSave3DDepth ( value ); return 0; } -int CTv::GetSave3DDepth ( void ) { +int CTv::GetSave3DDepth ( void ) +{ unsigned char val = 0; SSMRead3DDepth ( &val ); return val; } -is_3d_type_t CTv::Check2Dor3D ( VIDEO_3D_MODE_T mode3d, tvin_trans_fmt_t trans_fmt ) { +is_3d_type_t CTv::Check2Dor3D ( VIDEO_3D_MODE_T mode3d, tvin_trans_fmt_t trans_fmt ) +{ if ( mode3d == VIDEO_3D_MODE_DISABLE ) { return INDEX_2D; } else if ( mode3d == VIDEO_3D_MODE_AUTO ) { @@ -2451,7 +2571,8 @@ is_3d_type_t CTv::Check2Dor3D ( VIDEO_3D_MODE_T mode3d, tvin_trans_fmt_t trans_f } } -int CTv::Tvin_SetPLLValues (){ +int CTv::Tvin_SetPLLValues () +{ tvin_sig_fmt_t sig_fmt = mSigDetectThread.getCurSigInfo().fmt; tvin_port_t source_port = CTvin::Tvin_GetSourcePortBySourceInput(m_source_input); am_regs_t regs; @@ -2471,14 +2592,15 @@ int CTv::Tvin_SetPLLValues (){ return 0; } -int CTv::SetCVD2Values () { +int CTv::SetCVD2Values () +{ tvin_sig_fmt_t sig_fmt = mSigDetectThread.getCurSigInfo().fmt; tvin_port_t source_port = CTvin::Tvin_GetSourcePortBySourceInput(m_source_input); am_regs_t regs; if (mVpp.getPqData()->PQ_GetCVD2Params ( source_port, sig_fmt, ®s ) == 0) { LOGD ( "%s, PQ_GetCVD2Params(source_port[%d], sig_fmt[%d],®s).\n", __FUNCTION__, - source_port, sig_fmt ); + source_port, sig_fmt ); if ( mTvin.TvinApi_LoadCVD2Values ( regs ) < 0 ) { LOGE ( "%s, TvinApi_LoadCVD2Values failed!\n", __FUNCTION__); @@ -2492,7 +2614,8 @@ int CTv::SetCVD2Values () { return 0; } -int CTv::SetPreviewWindow ( tvin_window_pos_t pos ) { +int CTv::SetPreviewWindow ( tvin_window_pos_t pos ) +{ m_win_pos.x1 = pos.x1; m_win_pos.y1 = pos.y1; m_win_pos.x2 = pos.x2; @@ -2512,7 +2635,8 @@ int CTv::SetPreviewWindow ( tvin_window_pos_t pos ) { } /*********************** Audio start **********************/ -int CTv::SetAudioVolDigitLUTTable ( tv_source_input_t source_input ) { +int CTv::SetAudioVolDigitLUTTable ( tv_source_input_t source_input ) +{ int tmpDefDigitLutBuf[CC_LUT_BUF_SIZE] = { 0 }; int lut_table_index = 0; if (source_input == SOURCE_TV) { @@ -2544,7 +2668,8 @@ int CTv::SetAudioVolDigitLUTTable ( tv_source_input_t source_input ) { return 0; } -void CTv::RefreshAudioMasterVolume ( tv_source_input_t source_input ) { +void CTv::RefreshAudioMasterVolume ( tv_source_input_t source_input ) +{ if (source_input == SOURCE_HDMI1 || source_input == SOURCE_HDMI2 || source_input == SOURCE_HDMI3) { if ( GetAudioDVISupportEnable() == 1 ) { if ( IsDVISignal() ) { @@ -2559,7 +2684,8 @@ void CTv::RefreshAudioMasterVolume ( tv_source_input_t source_input ) { SetAudioMasterVolume ( GetAudioMasterVolume() ); } -int CTv::Tv_SetAudioInSource (tv_source_input_t source_input) { +int CTv::Tv_SetAudioInSource (tv_source_input_t source_input) +{ int vol = 255; if (source_input == SOURCE_TV) { if (mTvin.Tvin_GetAudioInSourceType(source_input) == TV_AUDIO_IN_SOURCE_TYPE_ATV) { @@ -2578,7 +2704,7 @@ int CTv::Tv_SetAudioInSource (tv_source_input_t source_input) { AudioSetAudioInSource(CC_AUDIO_IN_SOURCE_HDMI); vol = GetAudioInternalDACDigitalPlayBackVolume_Cfg(CC_AUDIO_IN_SOURCE_HDMI); } else if (source_input == SOURCE_YPBPR1 || source_input == SOURCE_YPBPR2 || - source_input == SOURCE_TYPE_VGA) { + source_input == SOURCE_TYPE_VGA) { AudioSetAudioInSource(CC_AUDIO_IN_SOURCE_LINEIN); vol = GetAudioInternalDACDigitalPlayBackVolume_Cfg(CC_AUDIO_IN_SOURCE_LINEIN); } else if (source_input == SOURCE_MPEG) { @@ -2594,7 +2720,8 @@ int CTv::Tv_SetAudioInSource (tv_source_input_t source_input) { return 0; } -int CTv::Tv_SetAudioSourceType (tv_source_input_t source_input) { +int CTv::Tv_SetAudioSourceType (tv_source_input_t source_input) +{ int audio_source = -1; if (source_input == SOURCE_TV) { @@ -2602,10 +2729,10 @@ int CTv::Tv_SetAudioSourceType (tv_source_input_t source_input) { } else if (source_input == SOURCE_AV1 || source_input == SOURCE_AV2) { audio_source = AUDIO_AV_SOURCE; } else if (source_input == SOURCE_HDMI1 || source_input == SOURCE_HDMI2 || - source_input == SOURCE_HDMI3) { + source_input == SOURCE_HDMI3) { audio_source = AUDIO_HDMI_SOURCE; } else if (source_input == SOURCE_YPBPR1 || source_input == SOURCE_YPBPR2 || - source_input == SOURCE_TYPE_VGA) { + source_input == SOURCE_TYPE_VGA) { audio_source = AUDIO_AV_SOURCE; } else if (source_input == SOURCE_DTV) { audio_source = AUDIO_MPEG_SOURCE; @@ -2616,50 +2743,55 @@ int CTv::Tv_SetAudioSourceType (tv_source_input_t source_input) { return AudioSetAudioSourceType(audio_source); } -void CTv::Tv_SetAudioOutputSwap_Type (tv_source_input_t source_input) { +void CTv::Tv_SetAudioOutputSwap_Type (tv_source_input_t source_input) +{ int sw_status = GetAudioOutputSwapStatus(source_input); SetOutput_Swap(sw_status); } -void CTv::Tv_ADCDigitalCapture_Volume (void) { +void CTv::Tv_ADCDigitalCapture_Volume (void) +{ int capture_vol = GetADCDigitalCaptureVol_Cfg(); LOGD("%s, we have read ADCDigitalCaptureVol_Config = %d \n", __FUNCTION__, capture_vol); SetADC_Digital_Capture_Volume(capture_vol); } -void CTv::Tv_SetPGAIn_Gain (void) { +void CTv::Tv_SetPGAIn_Gain (void) +{ int gain_val = GetAudioInternalDacPGAInGain_Cfg(); LOGD("%s, we have read ADCDigitalCaptureVol_Config = %d \n", __FUNCTION__, gain_val); SetPGA_IN_Value(gain_val); } -void CTv::Tv_SetDACDigitalPlayBack_Volume (int audio_src_in_type) { +void CTv::Tv_SetDACDigitalPlayBack_Volume (int audio_src_in_type) +{ int vol = GetAudioInternalDACDigitalPlayBackVolume_Cfg(audio_src_in_type); LOGD("%s, we have read DACDigitalPlayBackVolume config = %d \n", __FUNCTION__, vol); SetDAC_Digital_PlayBack_Volume(vol); } /*********************** Audio end **********************/ -unsigned int CTv::Vpp_GetDisplayResolutionInfo(tvin_window_pos_t *win_pos) { +unsigned int CTv::Vpp_GetDisplayResolutionInfo(tvin_window_pos_t *win_pos) +{ int display_resolution = mAv.getVideoDisplayResolution(); int width = 0, height = 0; switch (display_resolution) { - case VPP_DISPLAY_RESOLUTION_1366X768: - width = CC_RESOLUTION_1366X768_W; - height = CC_RESOLUTION_1366X768_H; - break; - case VPP_DISPLAY_RESOLUTION_1920X1080: - width = CC_RESOLUTION_1920X1080_W; - height = CC_RESOLUTION_1920X1080_H; - break; - case VPP_DISPLAY_RESOLUTION_3840X2160: - width = CC_RESOLUTION_3840X2160_W; - height = CC_RESOLUTION_3840X2160_H; - break; - default: - width = CC_RESOLUTION_3840X2160_W; - height = CC_RESOLUTION_3840X2160_H; - break; + case VPP_DISPLAY_RESOLUTION_1366X768: + width = CC_RESOLUTION_1366X768_W; + height = CC_RESOLUTION_1366X768_H; + break; + case VPP_DISPLAY_RESOLUTION_1920X1080: + width = CC_RESOLUTION_1920X1080_W; + height = CC_RESOLUTION_1920X1080_H; + break; + case VPP_DISPLAY_RESOLUTION_3840X2160: + width = CC_RESOLUTION_3840X2160_W; + height = CC_RESOLUTION_3840X2160_H; + break; + default: + width = CC_RESOLUTION_3840X2160_W; + height = CC_RESOLUTION_3840X2160_H; + break; } if (win_pos != NULL) { @@ -2671,18 +2803,21 @@ unsigned int CTv::Vpp_GetDisplayResolutionInfo(tvin_window_pos_t *win_pos) { return 0; } -int CTv::setBlackoutEnable(int enable) { +int CTv::setBlackoutEnable(int enable) +{ m_blackout_enable = enable; return SSMSaveBlackoutEnable(enable); } -int CTv::getSaveBlackoutEnable() { +int CTv::getSaveBlackoutEnable() +{ int8_t enable; SSMReadBlackoutEnable(&enable); return enable; } -void CTv::startAutoBackLight() { +void CTv::startAutoBackLight() +{ if (mHdmiOutFbc) { Tv_FactorySet_FBC_Auto_Backlight_OnOff(1); } else { @@ -2690,7 +2825,8 @@ void CTv::startAutoBackLight() { } } -void CTv::stopAutoBackLight() { +void CTv::stopAutoBackLight() +{ if (mHdmiOutFbc) { Tv_FactorySet_FBC_Auto_Backlight_OnOff(0); } else { @@ -2698,7 +2834,8 @@ void CTv::stopAutoBackLight() { } } -int CTv::getAutoBackLight_on_off() { +int CTv::getAutoBackLight_on_off() +{ if (mHdmiOutFbc) { return Tv_FactoryGet_FBC_Auto_Backlight_OnOff(); } else { @@ -2706,14 +2843,16 @@ int CTv::getAutoBackLight_on_off() { } } -int CTv::getAverageLuma() { +int CTv::getAverageLuma() +{ return mTvin.VDIN_Get_avg_luma(); } -int CTv::setAutobacklightData(const char* value) { - const char* KEY ="haier.autobacklight.mp.data"; +int CTv::setAutobacklightData(const char *value) +{ + const char *KEY = "haier.autobacklight.mp.data"; - const char * keyValue = config_get_str(CFG_SECTION_TV, KEY, "null"); + const char *keyValue = config_get_str(CFG_SECTION_TV, KEY, "null"); if (strcmp(keyValue, value) != 0) { config_set_str(CFG_SECTION_TV, KEY, value); LOGD("%s, config string now set as: %s \n", __FUNCTION__, keyValue); @@ -2723,11 +2862,12 @@ int CTv::setAutobacklightData(const char* value) { return 0; } -int CTv::getAutoBacklightData(int* data) { +int CTv::getAutoBacklightData(int *data) +{ char datas[512] = {0}; char delims[] = ","; char *result = NULL; - const char* KEY ="haier.autobacklight.mp.data"; + const char *KEY = "haier.autobacklight.mp.data"; int i = 0; if (NULL == data) { @@ -2735,18 +2875,18 @@ int CTv::getAutoBacklightData(int* data) { return -1; } - const char * keyValue = config_get_str(CFG_SECTION_TV, KEY, (char *) "null"); - if (strcmp(keyValue,"null") == 0) { - LOGD("%s, value is NULL\n",__FUNCTION__); + const char *keyValue = config_get_str(CFG_SECTION_TV, KEY, (char *) "null"); + if (strcmp(keyValue, "null") == 0) { + LOGD("%s, value is NULL\n", __FUNCTION__); return -1; } - strncpy(datas, keyValue, sizeof(datas)-1); + strncpy(datas, keyValue, sizeof(datas) - 1); result = strtok( datas, delims ); while ( result != NULL ) { char *pd = strstr(result, ":"); if (pd != NULL) { - data[i] = strtol(pd+1, NULL, 10 ); + data[i] = strtol(pd + 1, NULL, 10 ); i++; } result = strtok( NULL, delims ); @@ -2755,7 +2895,8 @@ int CTv::getAutoBacklightData(int* data) { } /*********************** SSM start **********************/ -int CTv::Tv_SSMRestoreDefaultSetting() { +int CTv::Tv_SSMRestoreDefaultSetting() +{ SSMRestoreDeviceMarkValues(); AudioSSMRestoreDefaultSetting(); mVpp.VPPSSMRestoreDefault(); @@ -2771,11 +2912,13 @@ int CTv::Tv_SSMRestoreDefaultSetting() { return 0; } -int CTv::clearDbAllProgramInfoTable() { +int CTv::clearDbAllProgramInfoTable() +{ return CTvDatabase::GetTvDb()->clearDbAllProgramInfoTable(); } -int CTv::Tv_SSMFacRestoreDefaultSetting() { +int CTv::Tv_SSMFacRestoreDefaultSetting() +{ mVpp.VPPSSMFacRestoreDefault(); AudioSSMRestoreDefaultSetting(); MiscSSMFacRestoreDefault(); @@ -2785,7 +2928,8 @@ int CTv::Tv_SSMFacRestoreDefaultSetting() { /*********************** SSM End **********************/ //not in CTv, not use lock -void CTv::setSourceSwitchAndPlay() { +void CTv::setSourceSwitchAndPlay() +{ int progID = 0, ret = -1; CTvProgram prog; LOGD ( "%s\n", __FUNCTION__ ); @@ -2811,12 +2955,14 @@ void CTv::setSourceSwitchAndPlay() { playProgramLock(progID); } -int CTv::startCC(int country, int src, int channel, int service) { +int CTv::startCC(int country, int src, int channel, int service) +{ //turn_on_cc = true; return mSubtitle.sub_start_atsc_cc((enum cc_param_country)country, (enum cc_param_source_type)src, channel, (enum cc_param_caption_type)service); } -int CTv::stopCC() { +int CTv::stopCC() +{ //because cc,vchip data both come from vbi thread , here judge cc, vchip is whether both turn off /*turn_on_cc = false; if (config_get_int(CFG_SECTION_TV,"tv.vchip.enable", 0)) @@ -2826,7 +2972,8 @@ int CTv::stopCC() { return mSubtitle.sub_stop_atsc_cc(); } -void CTv::printDebugInfo() { +void CTv::printDebugInfo() +{ print_version_info(); LOGD("%s, TvAction = %x", __FUNCTION__, mTvAction); LOGD("%s, TvRunStatus = %d", __FUNCTION__, mTvStatus); @@ -2836,34 +2983,41 @@ void CTv::printDebugInfo() { //==============vchip end================================ //----------------DVR API============================ -void CTv::SetRecordFileName ( char *name ) { +void CTv::SetRecordFileName ( char *name ) +{ char tmp[256]; strcpy ( tmp, name ); mTvRec.SetRecordFileName ( tmp ); } -void CTv::StartToRecord() { +void CTv::StartToRecord() +{ int progID = getDTVProgramID(); mTvRec.StartRecord ( progID ); } -void CTv::StopRecording() { +void CTv::StopRecording() +{ mTvRec.StopRecord(); } -void CTv::SetRecCurTsOrCurProgram ( int sel ) { +void CTv::SetRecCurTsOrCurProgram ( int sel ) +{ mTvRec.SetRecCurTsOrCurProgram ( sel ); } -int CTv::GetDisplayResolutionConfig() { +int CTv::GetDisplayResolutionConfig() +{ return mAv.getVideoDisplayResolution(); } -int CTv::GetDisplayResolutionInfo() { +int CTv::GetDisplayResolutionInfo() +{ return Vpp_GetDisplayResolutionInfo(NULL); } -void CTv::onHDMIRxCECMessage(int msg_len, unsigned char msg_buf[]) { +void CTv::onHDMIRxCECMessage(int msg_len, unsigned char msg_buf[]) +{ int i = 0; TvEvent::HDMIRxCECEvent ev; ev.mDataCount = msg_len; @@ -2873,22 +3027,26 @@ void CTv::onHDMIRxCECMessage(int msg_len, unsigned char msg_buf[]) { sendTvEvent(ev); } -int CTv::SendHDMIRxCECCustomMessage(unsigned char data_buf[]) { +int CTv::SendHDMIRxCECCustomMessage(unsigned char data_buf[]) +{ tv_source_input_t source_input = m_source_input; return mHDMIRxCEC.SendCustomMessage(source_input, data_buf); } -int CTv::SendHDMIRxCECCustomMessageAndWaitReply(unsigned char data_buf[], unsigned char reply_buf[], int WaitCmd, int timeout) { +int CTv::SendHDMIRxCECCustomMessageAndWaitReply(unsigned char data_buf[], unsigned char reply_buf[], int WaitCmd, int timeout) +{ tv_source_input_t source_input = m_source_input; return mHDMIRxCEC.SendCustomMessageAndWaitReply(source_input, data_buf, reply_buf, WaitCmd, timeout); } -int CTv::SendHDMIRxCECBoradcastStandbyMessage(void) { +int CTv::SendHDMIRxCECBoradcastStandbyMessage(void) +{ tv_source_input_t source_input = m_source_input; return mHDMIRxCEC.SendBoradcastStandbyMessage(source_input); } -int CTv::SendHDMIRxCECGiveCECVersionMessage(tv_source_input_t source_input, unsigned char data_buf[]) { +int CTv::SendHDMIRxCECGiveCECVersionMessage(tv_source_input_t source_input, unsigned char data_buf[]) +{ if (mHDMIRxCEC.processRefreshSrcDevice(source_input) == 0) { return mHDMIRxCEC.SendGiveCECVersionMessage(source_input, data_buf); } @@ -2896,7 +3054,8 @@ int CTv::SendHDMIRxCECGiveCECVersionMessage(tv_source_input_t source_input, unsi return -1; } -int CTv::SendHDMIRxCECGiveDeviceVendorIDMessage(tv_source_input_t source_input, unsigned char data_buf[]) { +int CTv::SendHDMIRxCECGiveDeviceVendorIDMessage(tv_source_input_t source_input, unsigned char data_buf[]) +{ if (mHDMIRxCEC.processRefreshSrcDevice(source_input) == 0) { return mHDMIRxCEC.SendGiveDeviceVendorIDMessage(source_input, data_buf); } @@ -2904,7 +3063,8 @@ int CTv::SendHDMIRxCECGiveDeviceVendorIDMessage(tv_source_input_t source_input, return -1; } -int CTv::SendHDMIRxCECGiveOSDNameMessage(tv_source_input_t source_input, unsigned char data_buf[]) { +int CTv::SendHDMIRxCECGiveOSDNameMessage(tv_source_input_t source_input, unsigned char data_buf[]) +{ if (mHDMIRxCEC.processRefreshSrcDevice(source_input) == 0) { return mHDMIRxCEC.SendGiveOSDNameMessage(source_input, data_buf); } @@ -2912,12 +3072,14 @@ int CTv::SendHDMIRxCECGiveOSDNameMessage(tv_source_input_t source_input, unsigne return -1; } -int CTv::GetHdmiHdcpKeyKsvInfo(int data_buf[]) { +int CTv::GetHdmiHdcpKeyKsvInfo(int data_buf[]) +{ return mTvin.get_hdmi_ksv_info(m_source_input, data_buf); } -bool CTv::hdmiOutWithFbc() { - const char * value = config_get_str(CFG_SECTION_TV, "platform.havefbc", "true"); +bool CTv::hdmiOutWithFbc() +{ + const char *value = config_get_str(CFG_SECTION_TV, "platform.havefbc", "true"); if (strcmp(value, "true") == 0) { return true; } @@ -2925,14 +3087,16 @@ bool CTv::hdmiOutWithFbc() { return false; } -void CTv::onUpgradeStatus(int state, int param) { +void CTv::onUpgradeStatus(int state, int param) +{ TvEvent::UpgradeFBCEvent ev; ev.mState = state; ev.param = param; sendTvEvent(ev); } -int CTv::StartUpgradeFBC(char *file_name, int mode, int upgrade_blk_size) { +int CTv::StartUpgradeFBC(char *file_name, int mode, int upgrade_blk_size) +{ if (mpUpgradeFBC != NULL) { mpUpgradeFBC->SetUpgradeFileName(file_name); mpUpgradeFBC->SetUpgradeMode(mode); @@ -2944,7 +3108,8 @@ int CTv::StartUpgradeFBC(char *file_name, int mode, int upgrade_blk_size) { return -1; } -void CTv::onSerialCommunication(int dev_id, int rd_len, unsigned char data_buf[]) { +void CTv::onSerialCommunication(int dev_id, int rd_len, unsigned char data_buf[]) +{ int i = 0; TvEvent::SerialCommunicationEvent ev; ev.mDevId = dev_id; @@ -2955,12 +3120,14 @@ void CTv::onSerialCommunication(int dev_id, int rd_len, unsigned char data_buf[] sendTvEvent(ev); } -int CTv::StartHeadSetDetect() { +int CTv::StartHeadSetDetect() +{ mHeadSet.startDetect(); return 0; } -void CTv::onHeadSetDetect(int state,int para) { +void CTv::onHeadSetDetect(int state, int para) +{ TvEvent::HeadSetOf2d4GEvent ev; if (state == 1) property_set("audio.headset_plug.enable", "1"); @@ -2971,7 +3138,8 @@ void CTv::onHeadSetDetect(int state,int para) { sendTvEvent(ev); } -void CTv::onThermalDetect(int state) { +void CTv::onThermalDetect(int state) +{ const char *value; const char *value_normal; const char *value_cold; @@ -3012,7 +3180,8 @@ void CTv::onThermalDetect(int state) { } } -int CTv::SetDebugSerialOnOff(int on_off) { +int CTv::SetDebugSerialOnOff(int on_off) +{ if (on_off) { property_set("ubootenv.var.console", "ttyS0,115200n8"); } else { @@ -3021,7 +3190,8 @@ int CTv::SetDebugSerialOnOff(int on_off) { return 0; } -int CTv::GetDebugSerialOnOff() { +int CTv::GetDebugSerialOnOff() +{ char prop[256]; memset(prop, '\0', 256); property_get("ubootenv.var.console", prop, "null" ); @@ -3033,7 +3203,8 @@ int CTv::GetDebugSerialOnOff() { } } -int CTv::SetSerialSwitch(int dev_id, int switch_val) { +int CTv::SetSerialSwitch(int dev_id, int switch_val) +{ int tmp_ret = 0; if (dev_id == SERIAL_A) { if (switch_val == 0) { @@ -3070,7 +3241,8 @@ int CTv::SetSerialSwitch(int dev_id, int switch_val) { return tmp_ret; } -int CTv::SendSerialData(int dev_id, int data_len, unsigned char data_buf[]) { +int CTv::SendSerialData(int dev_id, int data_len, unsigned char data_buf[]) +{ int tmp_ret = 0; if (dev_id == SERIAL_A) { @@ -3084,7 +3256,8 @@ int CTv::SendSerialData(int dev_id, int data_len, unsigned char data_buf[]) { return tmp_ret; } -int CTv::ChannelExport(const char *destPath) { +int CTv::ChannelExport(const char *destPath) +{ //DIR *dirptr = NULL; //dirptr = opendir("/storage/external_storage/sda1/"); //if(NULL == dirptr) { @@ -3116,7 +3289,8 @@ int CTv::ChannelExport(const char *destPath) { //} } -int CTv::ChannelImport(const char *srcPath) { +int CTv::ChannelImport(const char *srcPath) +{ if (srcPath == NULL) { srcPath = "/storage/external_storage/sda1/dvb.db"; } @@ -3159,15 +3333,18 @@ int CTv::ChannelImport(const char *srcPath) { } } -int CTv::Tv_GetProjectInfo(project_info_t *ptrInfo) { +int CTv::Tv_GetProjectInfo(project_info_t *ptrInfo) +{ return GetProjectInfo(ptrInfo, fbcIns); } -int CTv::Tv_GetPlatformType() { +int CTv::Tv_GetPlatformType() +{ return mHdmiOutFbc ? 1 : 0; } -int CTv::Tv_HandeHDMIEDIDFilePathConfig() { +int CTv::Tv_HandeHDMIEDIDFilePathConfig() +{ int i, file_exist_flag = 1; const char *value = NULL; char val_buf[256]; @@ -3178,13 +3355,13 @@ int CTv::Tv_HandeHDMIEDIDFilePathConfig() { if (strtoul(value, NULL, 10) == 1) { LOGD( "%s, get config \"%s\" is \"%s\".\n", - __FUNCTION__, "ssm.handle.hdmi.edid.en", value); + __FUNCTION__, "ssm.handle.hdmi.edid.en", value); //get hdmi edid use mode memset(val_buf, '\0', 256); property_get("ubootenv.var.outputmode", val_buf, "null"); LOGD( "%s, get property \"%s\" is \"%s\".\n", - __FUNCTION__, "ubootenv.var.outputmode", val_buf); + __FUNCTION__, "ubootenv.var.outputmode", val_buf); if (strcmp(val_buf, "null") != 0) { config_set_str ( CFG_SECTION_TV, CS_HDMI_EDID_USE_CFG, val_buf); @@ -3239,7 +3416,8 @@ int CTv::Tv_HandeHDMIEDIDFilePathConfig() { return 0; } -int CTv::Tv_SetDDDRCMode(tv_source_input_t source_input) { +int CTv::Tv_SetDDDRCMode(tv_source_input_t source_input) +{ if (source_input == SOURCE_DTV) { if (GetPlatformHaveDDFlag() == 1) { Tv_Utils_SetFileAttrStr("/sys/class/audiodsp/ac3_drc_control", (char *)"drcmode 3"); @@ -3253,79 +3431,98 @@ int CTv::Tv_SetDDDRCMode(tv_source_input_t source_input) { } //PQ -int CTv::Tv_SetBrightness ( int brightness, tv_source_input_type_t source_type, int is_save ) { +int CTv::Tv_SetBrightness ( int brightness, tv_source_input_type_t source_type, int is_save ) +{ return mVpp.SetBrightness(brightness, (tv_source_input_type_t)source_type, mSigDetectThread.getCurSigInfo().fmt, mSigDetectThread.getCurSigInfo().trans_fmt, Check2Dor3D(m_mode_3d, mSigDetectThread.getCurSigInfo().trans_fmt ), is_save); } -int CTv::Tv_GetBrightness ( tv_source_input_type_t source_type ) { +int CTv::Tv_GetBrightness ( tv_source_input_type_t source_type ) +{ return mVpp.GetBrightness((tv_source_input_type_t)source_type); } -int CTv::Tv_SaveBrightness ( int brightness, tv_source_input_type_t source_type ) { +int CTv::Tv_SaveBrightness ( int brightness, tv_source_input_type_t source_type ) +{ return SSMSaveBrightness ( source_type, brightness ); } -int CTv::Tv_SetContrast ( int contrast, tv_source_input_type_t source_type, int is_save ) { +int CTv::Tv_SetContrast ( int contrast, tv_source_input_type_t source_type, int is_save ) +{ return mVpp.SetContrast(contrast, (tv_source_input_type_t)source_type, mSigDetectThread.getCurSigInfo().fmt, mSigDetectThread.getCurSigInfo().trans_fmt, Check2Dor3D(m_mode_3d, mSigDetectThread.getCurSigInfo().trans_fmt ), is_save); } -int CTv::Tv_GetContrast ( tv_source_input_type_t source_type ) { +int CTv::Tv_GetContrast ( tv_source_input_type_t source_type ) +{ return mVpp.GetContrast((tv_source_input_type_t)source_type); } -int CTv::Tv_SaveContrast ( int contrast, tv_source_input_type_t source_type ) { +int CTv::Tv_SaveContrast ( int contrast, tv_source_input_type_t source_type ) +{ return SSMSaveContrast ( source_type, contrast ); } -int CTv::Tv_SetSaturation ( int satuation, tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, int is_save ) { +int CTv::Tv_SetSaturation ( int satuation, tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, int is_save ) +{ return mVpp.SetSaturation(satuation, (tv_source_input_type_t)source_type, (tvin_sig_fmt_t)fmt, mSigDetectThread.getCurSigInfo().trans_fmt, Check2Dor3D(m_mode_3d, mSigDetectThread.getCurSigInfo().trans_fmt ), is_save); } -int CTv::Tv_GetSaturation ( tv_source_input_type_t source_type ) { +int CTv::Tv_GetSaturation ( tv_source_input_type_t source_type ) +{ return mVpp.GetSaturation((tv_source_input_type_t)source_type); } -int CTv::Tv_SaveSaturation ( int satuation, tv_source_input_type_t source_type ) { +int CTv::Tv_SaveSaturation ( int satuation, tv_source_input_type_t source_type ) +{ return SSMSaveSaturation ( source_type, satuation ); } -int CTv::Tv_SetHue ( int hue, tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, int is_save ) { +int CTv::Tv_SetHue ( int hue, tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, int is_save ) +{ return mVpp.SetHue(hue, (tv_source_input_type_t)source_type, (tvin_sig_fmt_t)fmt, mSigDetectThread.getCurSigInfo().trans_fmt, Check2Dor3D(m_mode_3d, mSigDetectThread.getCurSigInfo().trans_fmt ), is_save); } -int CTv::Tv_GetHue ( tv_source_input_type_t source_type ) { +int CTv::Tv_GetHue ( tv_source_input_type_t source_type ) +{ return mVpp.GetHue((tv_source_input_type_t)source_type); } -int CTv::Tv_SaveHue ( int hue, tv_source_input_type_t source_type ) { +int CTv::Tv_SaveHue ( int hue, tv_source_input_type_t source_type ) +{ return SSMSaveHue ( source_type, hue ); } -int CTv::Tv_SetPQMode ( vpp_picture_mode_t mode, tv_source_input_type_t source_type, int is_save ) { +int CTv::Tv_SetPQMode ( vpp_picture_mode_t mode, tv_source_input_type_t source_type, int is_save ) +{ return mVpp.SetPQMode((vpp_picture_mode_t)mode, (tv_source_input_type_t)source_type, mSigDetectThread.getCurSigInfo().fmt, mSigDetectThread.getCurSigInfo().trans_fmt, Check2Dor3D(m_mode_3d, mSigDetectThread.getCurSigInfo().trans_fmt ), is_save); } -vpp_picture_mode_t CTv::Tv_GetPQMode ( tv_source_input_type_t source_type ) { +vpp_picture_mode_t CTv::Tv_GetPQMode ( tv_source_input_type_t source_type ) +{ return mVpp.GetPQMode((tv_source_input_type_t)source_type); } -int CTv::Tv_SavePQMode ( vpp_picture_mode_t mode, tv_source_input_type_t source_type ) { +int CTv::Tv_SavePQMode ( vpp_picture_mode_t mode, tv_source_input_type_t source_type ) +{ return mVpp.SavePQMode ( mode, source_type ); } -int CTv::Tv_SetSharpness ( int value, tv_source_input_type_t source_type, int en, int is_save ) { +int CTv::Tv_SetSharpness ( int value, tv_source_input_type_t source_type, int en, int is_save ) +{ return mVpp.SetSharpness(value, (tv_source_input_type_t)source_type, en, Check2Dor3D(m_mode_3d, mSigDetectThread.getCurSigInfo().trans_fmt ), mSigDetectThread.getCurSigInfo().fmt, mSigDetectThread.getCurSigInfo().trans_fmt, is_save); } -int CTv::Tv_GetSharpness ( tv_source_input_type_t source_type ) { +int CTv::Tv_GetSharpness ( tv_source_input_type_t source_type ) +{ return mVpp.GetSharpness((tv_source_input_type_t)source_type); } -int CTv::Tv_SaveSharpness ( int value, tv_source_input_type_t source_type ) { +int CTv::Tv_SaveSharpness ( int value, tv_source_input_type_t source_type ) +{ return SSMSaveSharpness ( source_type, value ); } -int CTv::Tv_SetBacklight ( int value, tv_source_input_type_t source_type, int is_save ) { +int CTv::Tv_SetBacklight ( int value, tv_source_input_type_t source_type, int is_save ) +{ if (mHdmiOutFbc) { return Tv_FactorySet_FBC_Backlight(value); } else { @@ -3333,7 +3530,8 @@ int CTv::Tv_SetBacklight ( int value, tv_source_input_type_t source_type, int is } } -int CTv::Tv_GetBacklight ( tv_source_input_type_t source_type ) { +int CTv::Tv_GetBacklight ( tv_source_input_type_t source_type ) +{ if (mHdmiOutFbc) { return Tv_FactoryGet_FBC_Backlight(); } else { @@ -3341,11 +3539,13 @@ int CTv::Tv_GetBacklight ( tv_source_input_type_t source_type ) { } } -int CTv::Tv_SaveBacklight ( int value, tv_source_input_type_t source_type ) { +int CTv::Tv_SaveBacklight ( int value, tv_source_input_type_t source_type ) +{ return mVpp.SaveBacklight ( value, source_type ); } -int CTv::Tv_SetBacklight_Switch ( int value ) { +int CTv::Tv_SetBacklight_Switch ( int value ) +{ if (mHdmiOutFbc) { return Tv_FactorySet_FBC_backlight_onoff(value); } else { @@ -3353,7 +3553,8 @@ int CTv::Tv_SetBacklight_Switch ( int value ) { } } -int CTv::Tv_GetBacklight_Switch ( void ) { +int CTv::Tv_GetBacklight_Switch ( void ) +{ if (mHdmiOutFbc) { return Tv_FactoryGet_FBC_backlight_onoff(); } else { @@ -3361,7 +3562,8 @@ int CTv::Tv_GetBacklight_Switch ( void ) { } } -int CTv::Tv_SetColorTemperature ( vpp_color_temperature_mode_t mode, tv_source_input_type_t source_type, int is_save ) { +int CTv::Tv_SetColorTemperature ( vpp_color_temperature_mode_t mode, tv_source_input_type_t source_type, int is_save ) +{ if (mHdmiOutFbc) { return Tv_FactorySet_FBC_ColorTemp_Mode(mode); } else { @@ -3369,7 +3571,8 @@ int CTv::Tv_SetColorTemperature ( vpp_color_temperature_mode_t mode, tv_source_i } } -vpp_color_temperature_mode_t CTv::Tv_GetColorTemperature ( tv_source_input_type_t source_type ) { +vpp_color_temperature_mode_t CTv::Tv_GetColorTemperature ( tv_source_input_type_t source_type ) +{ if (mHdmiOutFbc) { return (vpp_color_temperature_mode_t)Tv_FactoryGet_FBC_ColorTemp_Mode(); } else { @@ -3377,11 +3580,13 @@ vpp_color_temperature_mode_t CTv::Tv_GetColorTemperature ( tv_source_input_type_ } } -int CTv::Tv_SaveColorTemperature ( vpp_color_temperature_mode_t mode, tv_source_input_type_t source_type ) { +int CTv::Tv_SaveColorTemperature ( vpp_color_temperature_mode_t mode, tv_source_input_type_t source_type ) +{ return mVpp.SaveColorTemp ( mode, source_type ); } -int CTv::Tv_SetDisplayMode ( vpp_display_mode_t mode, tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, int is_save ) { +int CTv::Tv_SetDisplayMode ( vpp_display_mode_t mode, tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, int is_save ) +{ int ret = 0; if (m_mode_3d == VIDEO_3D_MODE_DISABLE) { ret = SetDisplayMode((vpp_display_mode_t)mode, (tv_source_input_type_t)source_type, (tvin_sig_fmt_t)fmt); @@ -3396,7 +3601,8 @@ int CTv::Tv_SetDisplayMode ( vpp_display_mode_t mode, tv_source_input_type_t sou return ret; } -int CTv::SetDisplayMode ( vpp_display_mode_t display_mode, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt ) { +int CTv::SetDisplayMode ( vpp_display_mode_t display_mode, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt ) +{ LOGD("SetDisplayMode, display_mode = %d, source_type = %d fmt = %d tranfmt = %d\n", display_mode, source_type, sig_fmt, mSigDetectThread.getCurSigInfo().trans_fmt); tvin_cutwin_t cutwin = mVpp.GetOverscan ( source_type, sig_fmt, Check2Dor3D(m_mode_3d, mSigDetectThread.getCurSigInfo().trans_fmt ), mSigDetectThread.getCurSigInfo().trans_fmt); @@ -3406,54 +3612,54 @@ int CTv::SetDisplayMode ( vpp_display_mode_t display_mode, tv_source_input_type_ int display_resolution = Vpp_GetDisplayResolutionInfo(&win_pos); switch ( display_mode ) { - case VPP_DISPLAY_MODE_169: - video_screen_mode = CAv::VIDEO_WIDEOPTION_16_9; - break; - case VPP_DISPLAY_MODE_MODE43: - video_screen_mode = CAv::VIDEO_WIDEOPTION_4_3; - break; - case VPP_DISPLAY_MODE_NORMAL: - video_screen_mode = CAv::VIDEO_WIDEOPTION_NORMAL; - break; - case VPP_DISPLAY_MODE_FULL: - video_screen_mode = CAv::VIDEO_WIDEOPTION_NONLINEAR; - mVpp.VPP_SetNonLinearFactor ( 20 ); - //mVpp.VPP_SetNonLinearFactor ( 20 ); - break; - case VPP_DISPLAY_MODE_CROP_FULL: - cutwin.vs = 0; - cutwin.hs = 0; - cutwin.ve = 0; - cutwin.he = 0; - break; - case VPP_DISPLAY_MODE_NOSCALEUP: - video_screen_mode = CAv::VIDEO_WIDEOPTION_NORMAL_NOSCALEUP; - break; - case VPP_DISPLAY_MODE_FULL_REAL: - video_screen_mode = CAv::VIDEO_WIDEOPTION_16_9; //added for N360 by haifeng.liu - break; - case VPP_DISPLAY_MODE_PERSON: - video_screen_mode = CAv::VIDEO_WIDEOPTION_FULL_STRETCH; - cutwin.vs = cutwin.vs + 20; - cutwin.ve = cutwin.ve + 20; - break; - case VPP_DISPLAY_MODE_MOVIE: - video_screen_mode = CAv::VIDEO_WIDEOPTION_FULL_STRETCH; - cutwin.vs = cutwin.vs + 40; - cutwin.ve = cutwin.ve + 40; - break; - case VPP_DISPLAY_MODE_CAPTION: - video_screen_mode = CAv::VIDEO_WIDEOPTION_FULL_STRETCH; - cutwin.vs = cutwin.vs + 55; - cutwin.ve = cutwin.ve + 55; - break; - case VPP_DISPLAY_MODE_ZOOM: - video_screen_mode = CAv::VIDEO_WIDEOPTION_FULL_STRETCH; - cutwin.vs = cutwin.vs + 70; - cutwin.ve = cutwin.ve + 70; - break; - default: - break; + case VPP_DISPLAY_MODE_169: + video_screen_mode = CAv::VIDEO_WIDEOPTION_16_9; + break; + case VPP_DISPLAY_MODE_MODE43: + video_screen_mode = CAv::VIDEO_WIDEOPTION_4_3; + break; + case VPP_DISPLAY_MODE_NORMAL: + video_screen_mode = CAv::VIDEO_WIDEOPTION_NORMAL; + break; + case VPP_DISPLAY_MODE_FULL: + video_screen_mode = CAv::VIDEO_WIDEOPTION_NONLINEAR; + mVpp.VPP_SetNonLinearFactor ( 20 ); + //mVpp.VPP_SetNonLinearFactor ( 20 ); + break; + case VPP_DISPLAY_MODE_CROP_FULL: + cutwin.vs = 0; + cutwin.hs = 0; + cutwin.ve = 0; + cutwin.he = 0; + break; + case VPP_DISPLAY_MODE_NOSCALEUP: + video_screen_mode = CAv::VIDEO_WIDEOPTION_NORMAL_NOSCALEUP; + break; + case VPP_DISPLAY_MODE_FULL_REAL: + video_screen_mode = CAv::VIDEO_WIDEOPTION_16_9; //added for N360 by haifeng.liu + break; + case VPP_DISPLAY_MODE_PERSON: + video_screen_mode = CAv::VIDEO_WIDEOPTION_FULL_STRETCH; + cutwin.vs = cutwin.vs + 20; + cutwin.ve = cutwin.ve + 20; + break; + case VPP_DISPLAY_MODE_MOVIE: + video_screen_mode = CAv::VIDEO_WIDEOPTION_FULL_STRETCH; + cutwin.vs = cutwin.vs + 40; + cutwin.ve = cutwin.ve + 40; + break; + case VPP_DISPLAY_MODE_CAPTION: + video_screen_mode = CAv::VIDEO_WIDEOPTION_FULL_STRETCH; + cutwin.vs = cutwin.vs + 55; + cutwin.ve = cutwin.ve + 55; + break; + case VPP_DISPLAY_MODE_ZOOM: + video_screen_mode = CAv::VIDEO_WIDEOPTION_FULL_STRETCH; + cutwin.vs = cutwin.vs + 70; + cutwin.ve = cutwin.ve + 70; + break; + default: + break; } if (source_type == SOURCE_TYPE_DTV || source_type == SOURCE_TYPE_MPEG) { cutwin.vs = cutwin.vs + 12; @@ -3483,23 +3689,28 @@ int CTv::SetDisplayMode ( vpp_display_mode_t display_mode, tv_source_input_type_ return 0; } -vpp_display_mode_t CTv::Tv_GetDisplayMode ( tv_source_input_type_t source_type ) { +vpp_display_mode_t CTv::Tv_GetDisplayMode ( tv_source_input_type_t source_type ) +{ return mVpp.GetDisplayMode((tv_source_input_type_t)source_type); } -int CTv::Tv_SaveDisplayMode ( vpp_display_mode_t mode, tv_source_input_type_t source_type ) { +int CTv::Tv_SaveDisplayMode ( vpp_display_mode_t mode, tv_source_input_type_t source_type ) +{ return SSMSaveDisplayMode ( source_type, (int)mode ); } -int CTv::Tv_SetNoiseReductionMode ( vpp_noise_reduction_mode_t mode, tv_source_input_type_t source_type, int is_save ) { +int CTv::Tv_SetNoiseReductionMode ( vpp_noise_reduction_mode_t mode, tv_source_input_type_t source_type, int is_save ) +{ return mVpp.SetNoiseReductionMode((vpp_noise_reduction_mode_t)mode, (tv_source_input_type_t)source_type, mSigDetectThread.getCurSigInfo().fmt, Check2Dor3D(m_mode_3d, mSigDetectThread.getCurSigInfo().trans_fmt ), mSigDetectThread.getCurSigInfo().trans_fmt, is_save); } -int CTv::Tv_SaveNoiseReductionMode ( vpp_noise_reduction_mode_t mode, tv_source_input_type_t source_type ) { +int CTv::Tv_SaveNoiseReductionMode ( vpp_noise_reduction_mode_t mode, tv_source_input_type_t source_type ) +{ return mVpp.SaveNoiseReductionMode ( mode, source_type ); } -int CTv::Tv_Set2k4k_ScalerUp_Mode ( int value ) { +int CTv::Tv_Set2k4k_ScalerUp_Mode ( int value ) +{ int ret = 0, fmt_hd_sd = 0; int nodeVal = 0; char s[8]; @@ -3507,8 +3718,8 @@ int CTv::Tv_Set2k4k_ScalerUp_Mode ( int value ) { LOGD("%s, value [%d]\n", __FUNCTION__ , value); if ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_HDMI && - CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_AV && - CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_TV) { + CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_AV && + CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_TV) { int fd = open("/sys/class/video/frame_height", O_RDONLY); if (fd <= 0) { LOGE("open /sys/class/video/frame_height ERROR!!error = -%s- \n", strerror ( errno )); @@ -3529,35 +3740,36 @@ int CTv::Tv_Set2k4k_ScalerUp_Mode ( int value ) { fmt_hd_sd = 1; } } else if ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) == SOURCE_TYPE_AV || - CTvin::Tvin_SourceInputToSourceInputType(m_source_input) == SOURCE_TYPE_TV) { + CTvin::Tvin_SourceInputToSourceInputType(m_source_input) == SOURCE_TYPE_TV) { fmt_hd_sd = 0; } switch (value) { - case 1: // on - if (fmt_hd_sd) { - ret = Tv_Utils_SetFileAttrStr("/sys/class/video/video_scaler_path_sel", (char *)"0"); - //LOGD("%s, enable, set 0.\n", __FUNCTION__); - } else { - ret = Tv_Utils_SetFileAttrStr("/sys/class/video/video_scaler_path_sel", (char *)"1"); - } - break; + case 1: // on + if (fmt_hd_sd) { + ret = Tv_Utils_SetFileAttrStr("/sys/class/video/video_scaler_path_sel", (char *)"0"); + //LOGD("%s, enable, set 0.\n", __FUNCTION__); + } else { + ret = Tv_Utils_SetFileAttrStr("/sys/class/video/video_scaler_path_sel", (char *)"1"); + } + break; - case 0: // off - default: - if (fmt_hd_sd) { - ret = Tv_Utils_SetFileAttrStr("/sys/class/video/video_scaler_path_sel", (char *)"1"); - //LOGD("%s, disable, set 1.\n", __FUNCTION__); - } else { - ret = Tv_Utils_SetFileAttrStr("/sys/class/video/video_scaler_path_sel", (char *)"0"); - //LOGD("%s, disable, set 0.\n", __FUNCTION__); - } - break; + case 0: // off + default: + if (fmt_hd_sd) { + ret = Tv_Utils_SetFileAttrStr("/sys/class/video/video_scaler_path_sel", (char *)"1"); + //LOGD("%s, disable, set 1.\n", __FUNCTION__); + } else { + ret = Tv_Utils_SetFileAttrStr("/sys/class/video/video_scaler_path_sel", (char *)"0"); + //LOGD("%s, disable, set 0.\n", __FUNCTION__); + } + break; } return ret; } -int CTv::Tv_Get2k4k_ScalerUp_Mode ( void ) { +int CTv::Tv_Get2k4k_ScalerUp_Mode ( void ) +{ char attrV[64]; int ret = 0, fmt_hd_sd = 0; int nodeVal = 0; @@ -3566,8 +3778,8 @@ int CTv::Tv_Get2k4k_ScalerUp_Mode ( void ) { memset (attrV, '\0', 64); if ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_HDMI && - CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_AV && - CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_TV) { + CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_AV && + CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_TV) { int fd = open("/sys/class/video/frame_height", O_RDONLY); if (fd <= 0) { LOGE("open /sys/class/video/frame_height ERROR!!error = -%s- \n", strerror ( errno )); @@ -3612,7 +3824,8 @@ int CTv::Tv_Get2k4k_ScalerUp_Mode ( void ) { return ret; } -int CTv::Tv_SetSplitScreenDemoStatus(tv_source_input_type_t source_type, int onoff_status) { +int CTv::Tv_SetSplitScreenDemoStatus(tv_source_input_type_t source_type, int onoff_status) +{ int ret = 0; LOGD("%s, split screen demo status source[%d],onoff_stauts[%d]\n", __FUNCTION__ , source_type, onoff_status); if (1 == onoff_status) { @@ -3630,12 +3843,14 @@ int CTv::Tv_SetSplitScreenDemoStatus(tv_source_input_type_t source_type, int ono return ret; } -int CTv::Tv_GetSplitScreenDemoStatus(tv_source_input_type_t source_type) { +int CTv::Tv_GetSplitScreenDemoStatus(tv_source_input_type_t source_type) +{ source_type = source_type; return 0; } -vpp_noise_reduction_mode_t CTv::Tv_GetNoiseReductionMode ( tv_source_input_type_t source_type ) { +vpp_noise_reduction_mode_t CTv::Tv_GetNoiseReductionMode ( tv_source_input_type_t source_type ) +{ return mVpp.GetNoiseReductionMode((tv_source_input_type_t)source_type); } @@ -3654,7 +3869,8 @@ vpp_noise_reduction_mode_t CTv::Tv_GetNoiseReductionMode ( tv_source_input_type_ å³åšæ•ˆæžœå¤„ç† echo w 0x70 v 0x174d > /sys /class/amlogic/debug 僿 echo w 0x77 v 0x174d > /sys/class/amlogic/debug */ -int CTv::Tv_SplitScreenEffect(int mode, int width, int reverse) { +int CTv::Tv_SplitScreenEffect(int mode, int width, int reverse) +{ int ret = -1; if (mode == 0) { @@ -3684,47 +3900,58 @@ int CTv::Tv_SplitScreenEffect(int mode, int width, int reverse) { return ret; } -int CTv::Tv_FactorySetPQMode_Brightness ( int source_type, int pq_mode, int brightness ) { +int CTv::Tv_FactorySetPQMode_Brightness ( int source_type, int pq_mode, int brightness ) +{ return mVpp.FactorySetPQMode_Brightness(source_type, pq_mode, brightness); } -int CTv::Tv_FactoryGetPQMode_Brightness ( int source_type, int pq_mode ) { +int CTv::Tv_FactoryGetPQMode_Brightness ( int source_type, int pq_mode ) +{ return mVpp.FactoryGetPQMode_Brightness(source_type, pq_mode); } -int CTv::Tv_FactorySetPQMode_Contrast ( int source_type, int pq_mode, int contrast ) { +int CTv::Tv_FactorySetPQMode_Contrast ( int source_type, int pq_mode, int contrast ) +{ return mVpp.FactorySetPQMode_Contrast(source_type, pq_mode, contrast); } -int CTv::Tv_FactoryGetPQMode_Contrast ( int source_type, int pq_mode ) { +int CTv::Tv_FactoryGetPQMode_Contrast ( int source_type, int pq_mode ) +{ return mVpp.FactoryGetPQMode_Contrast(source_type, pq_mode); } -int CTv::Tv_FactorySetPQMode_Saturation ( int source_type, int pq_mode, int saturation ) { +int CTv::Tv_FactorySetPQMode_Saturation ( int source_type, int pq_mode, int saturation ) +{ return mVpp.FactorySetPQMode_Saturation(source_type, pq_mode, saturation); } -int CTv::Tv_FactoryGetPQMode_Saturation ( int source_type, int pq_mode ) { +int CTv::Tv_FactoryGetPQMode_Saturation ( int source_type, int pq_mode ) +{ return mVpp.FactoryGetPQMode_Saturation(source_type, pq_mode); } -int CTv::Tv_FactorySetPQMode_Hue ( int source_type, int pq_mode, int hue ) { +int CTv::Tv_FactorySetPQMode_Hue ( int source_type, int pq_mode, int hue ) +{ return mVpp.FactorySetPQMode_Hue(source_type, pq_mode, hue); } -int CTv::Tv_FactoryGetPQMode_Hue ( int source_type, int pq_mode ) { +int CTv::Tv_FactoryGetPQMode_Hue ( int source_type, int pq_mode ) +{ return mVpp.FactoryGetPQMode_Hue(source_type, pq_mode); } -int CTv::Tv_FactorySetPQMode_Sharpness ( int source_type, int pq_mode, int sharpness ) { +int CTv::Tv_FactorySetPQMode_Sharpness ( int source_type, int pq_mode, int sharpness ) +{ return mVpp.FactorySetPQMode_Sharpness(source_type, pq_mode, sharpness); } -int CTv::Tv_FactoryGetPQMode_Sharpness ( int source_type, int pq_mode ) { +int CTv::Tv_FactoryGetPQMode_Sharpness ( int source_type, int pq_mode ) +{ return mVpp.FactoryGetPQMode_Sharpness(source_type, pq_mode); } -int CTv::GetColorTemperatureParams ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ) { +int CTv::GetColorTemperatureParams ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ) +{ if (mHdmiOutFbc) { int ret = Tv_FactoryGet_FBC_ColorTemp_Batch((vpp_color_temperature_mode_t)Tempmode, params); params->r_gain = Tv_FactoryWhiteBalanceFormatOutputFbcGainParams(params->r_gain); @@ -3739,89 +3966,103 @@ int CTv::GetColorTemperatureParams ( vpp_color_temperature_mode_t Tempmode, tcon } } -int CTv::Tv_FactorySetTestPattern ( int pattern ) { +int CTv::Tv_FactorySetTestPattern ( int pattern ) +{ switch ( pattern ) { - case VPP_TEST_PATTERN_NONE: - mAv.SetVideoScreenColor ( 3, 16, 128, 128 ); - break; + case VPP_TEST_PATTERN_NONE: + mAv.SetVideoScreenColor ( 3, 16, 128, 128 ); + break; - case VPP_TEST_PATTERN_RED: - mAv.SetVideoScreenColor ( 0, 81, 90, 240 ); - break; + case VPP_TEST_PATTERN_RED: + mAv.SetVideoScreenColor ( 0, 81, 90, 240 ); + break; - case VPP_TEST_PATTERN_GREEN: - mAv.SetVideoScreenColor ( 0, 145, 54, 34 ); - break; + case VPP_TEST_PATTERN_GREEN: + mAv.SetVideoScreenColor ( 0, 145, 54, 34 ); + break; - case VPP_TEST_PATTERN_BLUE: - mAv.SetVideoScreenColor ( 0, 41, 240, 110 ); - break; + case VPP_TEST_PATTERN_BLUE: + mAv.SetVideoScreenColor ( 0, 41, 240, 110 ); + break; - case VPP_TEST_PATTERN_WHITE: - mAv.SetVideoScreenColor ( 0, 235, 128, 128 ); - break; + case VPP_TEST_PATTERN_WHITE: + mAv.SetVideoScreenColor ( 0, 235, 128, 128 ); + break; - case VPP_TEST_PATTERN_BLACK: - mAv.SetVideoScreenColor ( 0, 16, 128, 128 ); - break; + case VPP_TEST_PATTERN_BLACK: + mAv.SetVideoScreenColor ( 0, 16, 128, 128 ); + break; - default: - return -1; + default: + return -1; } return SSMSaveTestPattern ( pattern ); } -int CTv::Tv_FactoryGetTestPattern ( void ) { +int CTv::Tv_FactoryGetTestPattern ( void ) +{ return mVpp.FactoryGetTestPattern(); } -int CTv::Tv_FactorySetScreenColor ( int vdin_blending_mask, int y, int u, int v ) { +int CTv::Tv_FactorySetScreenColor ( int vdin_blending_mask, int y, int u, int v ) +{ return mAv.SetVideoScreenColor ( vdin_blending_mask, y, u, v ); } -int CTv::Tv_FactoryResetPQMode ( void ) { +int CTv::Tv_FactoryResetPQMode ( void ) +{ return mVpp.FactoryResetPQMode(); } -int CTv::Tv_FactoryResetColorTemp ( void ) { +int CTv::Tv_FactoryResetColorTemp ( void ) +{ return mVpp.FactoryResetColorTemp(); } -int CTv::Tv_FactorySetParamsDefault ( void ) { +int CTv::Tv_FactorySetParamsDefault ( void ) +{ return mVpp.FactorySetParamsDefault(); } -int CTv::Tv_FactorySetDDRSSC ( int step ) { +int CTv::Tv_FactorySetDDRSSC ( int step ) +{ return mVpp.FactorySetDDRSSC(step); } -int CTv::Tv_FactoryGetDDRSSC ( void ) { +int CTv::Tv_FactoryGetDDRSSC ( void ) +{ return mVpp.FactoryGetDDRSSC(); } -int CTv::Tv_FactorySetLVDSSSC ( int step ) { +int CTv::Tv_FactorySetLVDSSSC ( int step ) +{ return mVpp.FactorySetLVDSSSC(step); } -int CTv::Tv_FactoryGetLVDSSSC ( void ) { +int CTv::Tv_FactoryGetLVDSSSC ( void ) +{ return mVpp.FactoryGetLVDSSSC(); } -void CTv::Tv_Spread_Spectrum() { - int value= 0; +void CTv::Tv_Spread_Spectrum() +{ + int value = 0; value = mVpp.FactoryGetLVDSSSC(); mVpp.FactorySetLVDSSSC(value); } -int CTv::Tv_FactorySetNolineParams ( int noline_params_type, int source_type, noline_params_t noline_params ) { +int CTv::Tv_FactorySetNolineParams ( int noline_params_type, int source_type, noline_params_t noline_params ) +{ return mVpp.FactorySetNolineParams(noline_params_type, source_type, noline_params); } -noline_params_t CTv::Tv_FactoryGetNolineParams ( int noline_params_type, int source_type ) { +noline_params_t CTv::Tv_FactoryGetNolineParams ( int noline_params_type, int source_type ) +{ return mVpp.FactoryGetNolineParams(noline_params_type, source_type); } -int CTv::Tv_FactorySetOverscan ( int source_type, int fmt, int status_3d, int trans_fmt, tvin_cutwin_t cutwin_t ) { +int CTv::Tv_FactorySetOverscan ( int source_type, int fmt, int status_3d, int trans_fmt, tvin_cutwin_t cutwin_t ) +{ //tvin_cutwin_t cutwin_t = mVpp.Tv_FactoryGetOverscan(source_type, fmt, status_3d, trans_fmt); mVpp.FactorySetOverscan(source_type, fmt, status_3d, trans_fmt, cutwin_t); //} else { @@ -3836,7 +4077,8 @@ int CTv::Tv_FactorySetOverscan ( int source_type, int fmt, int status_3d, int tr return mVpp.VPP_SetVideoCrop ( ( int ) cutwin_t.vs, ( int ) cutwin_t.hs, ( int ) cutwin_t.ve, ( int ) cutwin_t.he ); } -tvin_cutwin_t CTv::Tv_FactoryGetOverscan ( int source_type, int fmt, int status_3d, int trans_fmt ) { +tvin_cutwin_t CTv::Tv_FactoryGetOverscan ( int source_type, int fmt, int status_3d, int trans_fmt ) +{ status_3d = status_3d; return mVpp.FactoryGetOverscan(source_type, fmt, Check2Dor3D(m_mode_3d, (tvin_trans_fmt_t)trans_fmt), trans_fmt); #if 0 @@ -3864,11 +4106,13 @@ tvin_cutwin_t CTv::Tv_FactoryGetOverscan ( int source_type, int fmt, int status_ #endif } -int CTv::Tv_ReplacePqDb(const char *newFilePath) { +int CTv::Tv_ReplacePqDb(const char *newFilePath) +{ return mVpp.getPqData()->replacePqDb(newFilePath); } -int CTv::Tv_FactorySet_FBC_Brightness ( int value ) { +int CTv::Tv_FactorySet_FBC_Brightness ( int value ) +{ //int temp_value = (255*value)/100; int temp_value = value; @@ -3879,7 +4123,8 @@ int CTv::Tv_FactorySet_FBC_Brightness ( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_Brightness ( void ) { +int CTv::Tv_FactoryGet_FBC_Brightness ( void ) +{ int temp_value = 0; int data = 0; @@ -3893,7 +4138,8 @@ int CTv::Tv_FactoryGet_FBC_Brightness ( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_Contrast ( int value ) { +int CTv::Tv_FactorySet_FBC_Contrast ( int value ) +{ //int temp_value = (255*value)/100; int temp_value = value; @@ -3904,7 +4150,8 @@ int CTv::Tv_FactorySet_FBC_Contrast ( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_Contrast ( void ) { +int CTv::Tv_FactoryGet_FBC_Contrast ( void ) +{ int temp_value = 0; int data = 0; @@ -3917,7 +4164,8 @@ int CTv::Tv_FactoryGet_FBC_Contrast ( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_Saturation ( int value ) { +int CTv::Tv_FactorySet_FBC_Saturation ( int value ) +{ //int temp_value = (255*value)/100; int temp_value = value; @@ -3928,7 +4176,8 @@ int CTv::Tv_FactorySet_FBC_Saturation ( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_Saturation ( void ) { +int CTv::Tv_FactoryGet_FBC_Saturation ( void ) +{ int temp_value = 0; int data = 0; @@ -3941,7 +4190,8 @@ int CTv::Tv_FactoryGet_FBC_Saturation ( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_HueColorTint ( int value ) { +int CTv::Tv_FactorySet_FBC_HueColorTint ( int value ) +{ //int temp_value = (255*value)/100; int temp_value = value; @@ -3952,7 +4202,8 @@ int CTv::Tv_FactorySet_FBC_HueColorTint ( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_HueColorTint ( void ) { +int CTv::Tv_FactoryGet_FBC_HueColorTint ( void ) +{ int temp_value = 0; int data = 0; @@ -3965,7 +4216,8 @@ int CTv::Tv_FactoryGet_FBC_HueColorTint ( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_Backlight ( int value ) { +int CTv::Tv_FactorySet_FBC_Backlight ( int value ) +{ int temp_value = value; if (fbcIns != NULL) { temp_value = temp_value * 255 / 100; @@ -3975,7 +4227,8 @@ int CTv::Tv_FactorySet_FBC_Backlight ( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_Backlight ( void ) { +int CTv::Tv_FactoryGet_FBC_Backlight ( void ) +{ int temp_value = 0; int data = 0; @@ -3992,7 +4245,8 @@ int CTv::Tv_FactoryGet_FBC_Backlight ( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_Auto_Backlight_OnOff( unsigned char status) { +int CTv::Tv_FactorySet_FBC_Auto_Backlight_OnOff( unsigned char status) +{ if (fbcIns != NULL) { return fbcIns->cfbc_Set_Auto_Backlight_OnOff(COMM_DEV_SERIAL, status); } @@ -4000,7 +4254,8 @@ int CTv::Tv_FactorySet_FBC_Auto_Backlight_OnOff( unsigned char status) { return -1; } -int CTv::Tv_FactoryGet_FBC_Auto_Backlight_OnOff( void ) { +int CTv::Tv_FactoryGet_FBC_Auto_Backlight_OnOff( void ) +{ int temp_status = 0; if (fbcIns != NULL) { @@ -4010,7 +4265,8 @@ int CTv::Tv_FactoryGet_FBC_Auto_Backlight_OnOff( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_ELEC_MODE( int value ) { +int CTv::Tv_FactorySet_FBC_ELEC_MODE( int value ) +{ int val = 0; if (fbcIns != NULL) { @@ -4022,13 +4278,15 @@ int CTv::Tv_FactorySet_FBC_ELEC_MODE( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_ELEC_MODE( void ) { +int CTv::Tv_FactoryGet_FBC_ELEC_MODE( void ) +{ int val = 0; SSMReadFBCELECmodeVal(&val); return val; } -int CTv::Tv_FactorySet_FBC_BACKLIGHT_N360( int value ) { +int CTv::Tv_FactorySet_FBC_BACKLIGHT_N360( int value ) +{ int val = 0; val = value; @@ -4036,13 +4294,15 @@ int CTv::Tv_FactorySet_FBC_BACKLIGHT_N360( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_BACKLIGHT_N360( void ) { +int CTv::Tv_FactoryGet_FBC_BACKLIGHT_N360( void ) +{ int val = 0; SSMReadFBCELECmodeVal(&val); return val; } -int CTv::Tv_FactorySet_FBC_Thermal_State( int value ) { +int CTv::Tv_FactorySet_FBC_Thermal_State( int value ) +{ if (fbcIns != NULL) { fbcIns->cfbc_Set_Thermal_state(COMM_DEV_SERIAL, value); return 0; @@ -4051,7 +4311,8 @@ int CTv::Tv_FactorySet_FBC_Thermal_State( int value ) { return -1; } -int CTv::Tv_FactorySet_FBC_Picture_Mode ( int mode ) { +int CTv::Tv_FactorySet_FBC_Picture_Mode ( int mode ) +{ if (fbcIns != NULL) { fbcIns->cfbc_Set_Picture_Mode(COMM_DEV_SERIAL, mode); return 0; @@ -4060,7 +4321,8 @@ int CTv::Tv_FactorySet_FBC_Picture_Mode ( int mode ) { return -1; } -int CTv::Tv_FactoryGet_FBC_Picture_Mode ( void ) { +int CTv::Tv_FactoryGet_FBC_Picture_Mode ( void ) +{ int mode = 0; if (fbcIns != NULL) { @@ -4070,7 +4332,8 @@ int CTv::Tv_FactoryGet_FBC_Picture_Mode ( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_Set_Test_Pattern ( int mode ) { +int CTv::Tv_FactorySet_FBC_Set_Test_Pattern ( int mode ) +{ if (fbcIns != NULL) { fbcIns->cfbc_Set_Test_Pattern(COMM_DEV_SERIAL, mode); return 0; @@ -4079,7 +4342,8 @@ int CTv::Tv_FactorySet_FBC_Set_Test_Pattern ( int mode ) { return -1; } -int CTv::Tv_FactoryGet_FBC_Get_Test_Pattern ( void ) { +int CTv::Tv_FactoryGet_FBC_Get_Test_Pattern ( void ) +{ int mode = 0; if (fbcIns != NULL) { @@ -4090,7 +4354,8 @@ int CTv::Tv_FactoryGet_FBC_Get_Test_Pattern ( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_Gain_Red( int value ) { +int CTv::Tv_FactorySet_FBC_Gain_Red( int value ) +{ int temp_value = 0; //temp_value = (value*255)/2047; @@ -4105,7 +4370,8 @@ int CTv::Tv_FactorySet_FBC_Gain_Red( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_Gain_Red ( void ) { +int CTv::Tv_FactoryGet_FBC_Gain_Red ( void ) +{ int temp_value = 0, value = 0; if (fbcIns != NULL) { @@ -4120,7 +4386,8 @@ int CTv::Tv_FactoryGet_FBC_Gain_Red ( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_Gain_Green( int value ) { +int CTv::Tv_FactorySet_FBC_Gain_Green( int value ) +{ int temp_value = 0; //temp_value = (value*255)/2047; @@ -4135,7 +4402,8 @@ int CTv::Tv_FactorySet_FBC_Gain_Green( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_Gain_Green ( void ) { +int CTv::Tv_FactoryGet_FBC_Gain_Green ( void ) +{ int temp_value = 0, value = 0; if (fbcIns != NULL) { @@ -4150,7 +4418,8 @@ int CTv::Tv_FactoryGet_FBC_Gain_Green ( void ) { return 0; } -int CTv::Tv_FactoryGet_FBC_VIDEO_MUTE ( void ) { +int CTv::Tv_FactoryGet_FBC_VIDEO_MUTE ( void ) +{ if (fbcIns != NULL) { fbcIns->cfbc_Set_VMute(COMM_DEV_SERIAL, 1); } @@ -4158,7 +4427,8 @@ int CTv::Tv_FactoryGet_FBC_VIDEO_MUTE ( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_Gain_Blue( int value ) { +int CTv::Tv_FactorySet_FBC_Gain_Blue( int value ) +{ int temp_value = 0; //temp_value = (value*255)/2047; @@ -4173,7 +4443,8 @@ int CTv::Tv_FactorySet_FBC_Gain_Blue( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_Gain_Blue ( void ) { +int CTv::Tv_FactoryGet_FBC_Gain_Blue ( void ) +{ int temp_value = 0, value = 0; if (fbcIns != NULL) { @@ -4188,7 +4459,8 @@ int CTv::Tv_FactoryGet_FBC_Gain_Blue ( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_Offset_Red( int value ) { +int CTv::Tv_FactorySet_FBC_Offset_Red( int value ) +{ //value -1024~+1023 int temp_value = 0; @@ -4203,7 +4475,8 @@ int CTv::Tv_FactorySet_FBC_Offset_Red( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_Offset_Red ( void ) { +int CTv::Tv_FactoryGet_FBC_Offset_Red ( void ) +{ int temp_value = 0, value = 0; if (fbcIns != NULL) { @@ -4218,7 +4491,8 @@ int CTv::Tv_FactoryGet_FBC_Offset_Red ( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_Offset_Green( int value ) { +int CTv::Tv_FactorySet_FBC_Offset_Green( int value ) +{ //value -1024~+1023 int temp_value = 0; @@ -4233,7 +4507,8 @@ int CTv::Tv_FactorySet_FBC_Offset_Green( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_Offset_Green ( void ) { +int CTv::Tv_FactoryGet_FBC_Offset_Green ( void ) +{ int temp_value = 0, value = 0; if (fbcIns != NULL) { @@ -4248,7 +4523,8 @@ int CTv::Tv_FactoryGet_FBC_Offset_Green ( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_Offset_Blue( int value ) { +int CTv::Tv_FactorySet_FBC_Offset_Blue( int value ) +{ //value -1024~+1023 int temp_value = 0; @@ -4263,7 +4539,8 @@ int CTv::Tv_FactorySet_FBC_Offset_Blue( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_Offset_Blue ( void ) { +int CTv::Tv_FactoryGet_FBC_Offset_Blue ( void ) +{ int temp_value = 0, value = 0; if (fbcIns != NULL) { @@ -4278,7 +4555,8 @@ int CTv::Tv_FactoryGet_FBC_Offset_Blue ( void ) { return 0; } -int CTv::Tv_FactoryGetWhiteBalanceRedGain(int source_type, int colortemp_mode) { +int CTv::Tv_FactoryGetWhiteBalanceRedGain(int source_type, int colortemp_mode) +{ int ret = -1; if (!mHdmiOutFbc) { // not use fbc store the white balance params LOGD("--------- call none fbc method ---------"); @@ -4290,7 +4568,8 @@ int CTv::Tv_FactoryGetWhiteBalanceRedGain(int source_type, int colortemp_mode) { return ret; } -int CTv::Tv_FactoryGetWhiteBalanceGreenGain(int source_type, int colortemp_mode) { +int CTv::Tv_FactoryGetWhiteBalanceGreenGain(int source_type, int colortemp_mode) +{ int ret = -1; if (!mHdmiOutFbc) { // not use fbc store the white balance params ret = mVpp.FactoryGetColorTemp_Ggain(source_type, colortemp_mode); @@ -4300,7 +4579,8 @@ int CTv::Tv_FactoryGetWhiteBalanceGreenGain(int source_type, int colortemp_mode) return ret; } -int CTv::Tv_FactoryGetWhiteBalanceBlueGain(int source_type, int colortemp_mode) { +int CTv::Tv_FactoryGetWhiteBalanceBlueGain(int source_type, int colortemp_mode) +{ int ret = -1; if (!mHdmiOutFbc) { // not use fbc store the white balance params ret = mVpp.FactoryGetColorTemp_Bgain(source_type, colortemp_mode); @@ -4310,7 +4590,8 @@ int CTv::Tv_FactoryGetWhiteBalanceBlueGain(int source_type, int colortemp_mode) return ret; } -int CTv::Tv_FactoryGetWhiteBalanceRedOffset(int source_type, int colortemp_mode) { +int CTv::Tv_FactoryGetWhiteBalanceRedOffset(int source_type, int colortemp_mode) +{ int ret = -1; if (!mHdmiOutFbc) { // not use fbc store the white balance params ret = mVpp.FactoryGetColorTemp_Roffset(source_type, colortemp_mode); @@ -4320,7 +4601,8 @@ int CTv::Tv_FactoryGetWhiteBalanceRedOffset(int source_type, int colortemp_mode) return ret; } -int CTv::Tv_FactoryGetWhiteBalanceGreenOffset(int source_type, int colortemp_mode) { +int CTv::Tv_FactoryGetWhiteBalanceGreenOffset(int source_type, int colortemp_mode) +{ int ret = -1; if (!mHdmiOutFbc) { // not use fbc store the white balance params ret = mVpp.FactoryGetColorTemp_Goffset(source_type, colortemp_mode); @@ -4330,7 +4612,8 @@ int CTv::Tv_FactoryGetWhiteBalanceGreenOffset(int source_type, int colortemp_mod return ret; } -int CTv::Tv_FactoryGetWhiteBalanceBlueOffset(int source_type, int colortemp_mode) { +int CTv::Tv_FactoryGetWhiteBalanceBlueOffset(int source_type, int colortemp_mode) +{ int ret = -1; if (!mHdmiOutFbc) { // not use fbc store the white balance params ret = mVpp.FactoryGetColorTemp_Boffset(source_type, colortemp_mode); @@ -4340,7 +4623,8 @@ int CTv::Tv_FactoryGetWhiteBalanceBlueOffset(int source_type, int colortemp_mode return ret; } -int CTv::Tv_FactorySetWhiteBalanceRedGain(int source_type, int colortemp_mode, int value) { +int CTv::Tv_FactorySetWhiteBalanceRedGain(int source_type, int colortemp_mode, int value) +{ int ret = -1; if (value < 0) { value = 0; @@ -4360,7 +4644,8 @@ int CTv::Tv_FactorySetWhiteBalanceRedGain(int source_type, int colortemp_mode, i return ret; } -int CTv::Tv_FactorySetWhiteBalanceGreenGain(int source_type, int colortemp_mode, int value) { +int CTv::Tv_FactorySetWhiteBalanceGreenGain(int source_type, int colortemp_mode, int value) +{ int ret = -1; if (value < 0) { value = 0; @@ -4380,7 +4665,8 @@ int CTv::Tv_FactorySetWhiteBalanceGreenGain(int source_type, int colortemp_mode, return ret; } -int CTv::Tv_FactorySetWhiteBalanceBlueGain(int source_type, int colortemp_mode, int value) { +int CTv::Tv_FactorySetWhiteBalanceBlueGain(int source_type, int colortemp_mode, int value) +{ int ret = -1; if (value < 0) { value = 0; @@ -4400,7 +4686,8 @@ int CTv::Tv_FactorySetWhiteBalanceBlueGain(int source_type, int colortemp_mode, return ret; } -int CTv::Tv_FactorySetWhiteBalanceRedOffset(int source_type, int colortemp_mode, int value) { +int CTv::Tv_FactorySetWhiteBalanceRedOffset(int source_type, int colortemp_mode, int value) +{ int ret = -1; if (value < -1024) { value = -1024; @@ -4420,7 +4707,8 @@ int CTv::Tv_FactorySetWhiteBalanceRedOffset(int source_type, int colortemp_mode, return ret; } -int CTv::Tv_FactorySetWhiteBalanceGreenOffset(int source_type, int colortemp_mode, int value) { +int CTv::Tv_FactorySetWhiteBalanceGreenOffset(int source_type, int colortemp_mode, int value) +{ int ret = -1; if (value < -1024) { value = -1024; @@ -4440,7 +4728,8 @@ int CTv::Tv_FactorySetWhiteBalanceGreenOffset(int source_type, int colortemp_mod return ret; } -int CTv::Tv_FactorySetWhiteBalanceBlueOffset(int source_type, int colortemp_mode, int value) { +int CTv::Tv_FactorySetWhiteBalanceBlueOffset(int source_type, int colortemp_mode, int value) +{ int ret = -1; if (value < -1024) { value = -1024; @@ -4460,7 +4749,8 @@ int CTv::Tv_FactorySetWhiteBalanceBlueOffset(int source_type, int colortemp_mode return ret; } -int CTv::Tv_FactorySetWhiteBalanceColorTempMode(int source_type, int colortemp_mode, int is_save) { +int CTv::Tv_FactorySetWhiteBalanceColorTempMode(int source_type, int colortemp_mode, int is_save) +{ int ret = -1; if (!mHdmiOutFbc) { // not use fbc store the white balance params ret = mVpp.SetColorTemperature((vpp_color_temperature_mode_t)colortemp_mode, (tv_source_input_type_t)source_type, is_save); @@ -4470,7 +4760,8 @@ int CTv::Tv_FactorySetWhiteBalanceColorTempMode(int source_type, int colortemp_m return ret; } -int CTv::Tv_FactoryGetWhiteBalanceColorTempMode(int source_type ) { +int CTv::Tv_FactoryGetWhiteBalanceColorTempMode(int source_type ) +{ int ret = -1; if (!mHdmiOutFbc) { // not use fbc store the white balance params ret = mVpp.GetColorTemperature((tv_source_input_type_t)source_type); @@ -4480,7 +4771,8 @@ int CTv::Tv_FactoryGetWhiteBalanceColorTempMode(int source_type ) { return ret; } -int CTv::Tv_FactoryWhiteBalanceFormatInputFbcGainParams(int value) { +int CTv::Tv_FactoryWhiteBalanceFormatInputFbcGainParams(int value) +{ int ret = 1024; if (value < 0) { ret = 0; @@ -4493,7 +4785,8 @@ int CTv::Tv_FactoryWhiteBalanceFormatInputFbcGainParams(int value) { return ret; } -int CTv::Tv_FactoryWhiteBalanceFormatInputFbcOffsetParams(int value) { +int CTv::Tv_FactoryWhiteBalanceFormatInputFbcOffsetParams(int value) +{ int ret = 0; if (value < -1024) { ret = -1024; @@ -4507,7 +4800,8 @@ int CTv::Tv_FactoryWhiteBalanceFormatInputFbcOffsetParams(int value) { return ret; } -int CTv::Tv_FactoryWhiteBalanceFormatOutputFbcOffsetParams(int value) { +int CTv::Tv_FactoryWhiteBalanceFormatOutputFbcOffsetParams(int value) +{ if (value == 255) { value = 1023; } else { @@ -4517,7 +4811,8 @@ int CTv::Tv_FactoryWhiteBalanceFormatOutputFbcOffsetParams(int value) { return value; } -int CTv::Tv_FactoryWhiteBalanceFormatOutputFbcGainParams(int value) { +int CTv::Tv_FactoryWhiteBalanceFormatOutputFbcGainParams(int value) +{ value = value << 3; if (value < 0) { value = 0; @@ -4527,7 +4822,8 @@ int CTv::Tv_FactoryWhiteBalanceFormatOutputFbcGainParams(int value) { return value; } -int CTv::Tv_FactorySaveWhiteBalancePramas(int source_type, int tempmode, int r_gain, int g_gain, int b_gain, int r_offset, int g_offset, int b_offset) { +int CTv::Tv_FactorySaveWhiteBalancePramas(int source_type, int tempmode, int r_gain, int g_gain, int b_gain, int r_offset, int g_offset, int b_offset) +{ int ret = 0; if (!mHdmiOutFbc) { // not use fbc store the white balance params mVpp.SaveColorTemp((vpp_color_temperature_mode_t) tempmode, (tv_source_input_type_t) source_type); @@ -4554,20 +4850,21 @@ int CTv::Tv_FactorySaveWhiteBalancePramas(int source_type, int tempmode, int r_g /** * The color temperature enum order is diffrent bettewn G9 and Fbc, so we have to make a mapping **/ -int CTv::Tv_FactoryWhiteBalanceColorTempMappingG92Fbc(int Tempmode) { +int CTv::Tv_FactoryWhiteBalanceColorTempMappingG92Fbc(int Tempmode) +{ int ret = Tempmode; switch (Tempmode) { - case 0: //standard - ret = 1; - break; - case 1: //warm - ret = 2; - break; - case 2: //cold - ret = 0; - break; - default: - break; + case 0: //standard + ret = 1; + break; + case 1: //warm + ret = 2; + break; + case 2: //cold + ret = 0; + break; + default: + break; } return ret; } @@ -4575,7 +4872,8 @@ int CTv::Tv_FactoryWhiteBalanceColorTempMappingG92Fbc(int Tempmode) { /** * The color temperature enum order is diffrent bettewn G9 and Fbc, so we have to make a mapping **/ -int CTv::Tv_FactoryWhiteBalanceColorTempMappingFbc2G9(int Tempmode) { +int CTv::Tv_FactoryWhiteBalanceColorTempMappingFbc2G9(int Tempmode) +{ int ret = Tempmode; switch (Tempmode) { case 0: //cold @@ -4593,7 +4891,8 @@ int CTv::Tv_FactoryWhiteBalanceColorTempMappingFbc2G9(int Tempmode) { return ret; } -int CTv::Tv_SetTestPattern(int value) { +int CTv::Tv_SetTestPattern(int value) +{ int ret = -1; if (fbcIns != NULL) { LOGD("%s, value is %d\n", __FUNCTION__, value); @@ -4603,7 +4902,8 @@ int CTv::Tv_SetTestPattern(int value) { return ret; } -int CTv::Tv_FactoryCloseWhiteBalanceGrayPattern() { +int CTv::Tv_FactoryCloseWhiteBalanceGrayPattern() +{ int useFbc = 0; int ret = -1; if (!mHdmiOutFbc) { // not use fbc store the white balance params @@ -4614,7 +4914,8 @@ int CTv::Tv_FactoryCloseWhiteBalanceGrayPattern() { return ret; } -int CTv::Tv_FactoryOpenWhiteBalanceGrayPattern() { +int CTv::Tv_FactoryOpenWhiteBalanceGrayPattern() +{ int ret = 0; if (mHdmiOutFbc) { //use fbc store the white balance params ret = Tv_FactoryOpen_FBC_GrayPattern(); @@ -4622,7 +4923,8 @@ int CTv::Tv_FactoryOpenWhiteBalanceGrayPattern() { return ret; } -int CTv::Tv_FactorySetWhiteBalanceGrayPattern(int value) { +int CTv::Tv_FactorySetWhiteBalanceGrayPattern(int value) +{ int ret = -1; if (!mHdmiOutFbc) { ret = mVpp.VPP_SetGrayPattern(value); @@ -4632,7 +4934,8 @@ int CTv::Tv_FactorySetWhiteBalanceGrayPattern(int value) { return ret; } -int CTv:: Tv_FactoryGetWhiteBalanceGrayPattern() { +int CTv:: Tv_FactoryGetWhiteBalanceGrayPattern() +{ int ret = -1; if (!mHdmiOutFbc) { ret = mVpp.VPP_GetGrayPattern(); @@ -4640,7 +4943,8 @@ int CTv:: Tv_FactoryGetWhiteBalanceGrayPattern() { return ret; } -int CTv::Tv_FactorySet_FBC_GrayPattern(int value) { +int CTv::Tv_FactorySet_FBC_GrayPattern(int value) +{ int ret = -1; unsigned char grayValue = 0; if (value > 255) { @@ -4656,7 +4960,8 @@ int CTv::Tv_FactorySet_FBC_GrayPattern(int value) { return ret; } -int CTv::Tv_FactoryOpen_FBC_GrayPattern() { +int CTv::Tv_FactoryOpen_FBC_GrayPattern() +{ int ret = -1; if (fbcIns != NULL) { ret = fbcIns->cfbc_WhiteBalance_GrayPattern_OnOff(COMM_DEV_SERIAL, 0); @@ -4664,7 +4969,8 @@ int CTv::Tv_FactoryOpen_FBC_GrayPattern() { return ret; } -int CTv::Tv_FactoryClose_FBC_GrayPattern() { +int CTv::Tv_FactoryClose_FBC_GrayPattern() +{ int ret = -1; if (fbcIns != NULL) { ret = fbcIns->cfbc_WhiteBalance_GrayPattern_OnOff(COMM_DEV_SERIAL, 1); @@ -4672,7 +4978,8 @@ int CTv::Tv_FactoryClose_FBC_GrayPattern() { return ret; } -int CTv::Tv_FactorySet_FBC_ColorTemp_Mode( int mode ) { +int CTv::Tv_FactorySet_FBC_ColorTemp_Mode( int mode ) +{ if (fbcIns != NULL) { fbcIns->cfbc_Set_ColorTemp_Mode(COMM_DEV_SERIAL, mode); return 0; @@ -4681,7 +4988,8 @@ int CTv::Tv_FactorySet_FBC_ColorTemp_Mode( int mode ) { return -1; } -int CTv::Tv_FactoryGet_FBC_ColorTemp_Mode ( void ) { +int CTv::Tv_FactoryGet_FBC_ColorTemp_Mode ( void ) +{ int temp_mode = 0; if (fbcIns != NULL) { @@ -4692,7 +5000,8 @@ int CTv::Tv_FactoryGet_FBC_ColorTemp_Mode ( void ) { return -1; } -int CTv::Tv_FactorySet_FBC_ColorTemp_Mode_N360( int mode ) { +int CTv::Tv_FactorySet_FBC_ColorTemp_Mode_N360( int mode ) +{ if (fbcIns != NULL) { fbcIns->cfbc_Set_ColorTemp_Mode(COMM_DEV_SERIAL, mode); SSMSaveFBCN360ColorTempVal(mode); @@ -4702,13 +5011,15 @@ int CTv::Tv_FactorySet_FBC_ColorTemp_Mode_N360( int mode ) { return -1; } -int CTv::Tv_FactoryGet_FBC_ColorTemp_Mode_N360 ( void ) { +int CTv::Tv_FactoryGet_FBC_ColorTemp_Mode_N360 ( void ) +{ int temp_mode = 0; SSMReadFBCN360ColorTempVal(&temp_mode); return temp_mode; } -int CTv::Tv_FactorySet_FBC_LockN_state(int value) { +int CTv::Tv_FactorySet_FBC_LockN_state(int value) +{ LOGE ("Tv_FactorySet_FBC_LockN_state %d!!!\n", value); if (fbcIns != NULL) { fbcIns->cfbc_Set_LockN_state(COMM_DEV_SERIAL, value); @@ -4717,7 +5028,8 @@ int CTv::Tv_FactorySet_FBC_LockN_state(int value) { return -1; } -int CTv::Tv_FactorySet_FBC_WB_Initial( int status ) { +int CTv::Tv_FactorySet_FBC_WB_Initial( int status ) +{ if (fbcIns != NULL) { fbcIns->cfbc_Set_WB_Initial(COMM_DEV_SERIAL, status); return 0; @@ -4726,7 +5038,8 @@ int CTv::Tv_FactorySet_FBC_WB_Initial( int status ) { return -1; } -int CTv::Tv_FactoryGet_FBC_WB_Initial ( void ) { +int CTv::Tv_FactoryGet_FBC_WB_Initial ( void ) +{ int temp_status = 0; if (fbcIns != NULL) { @@ -4737,7 +5050,8 @@ int CTv::Tv_FactoryGet_FBC_WB_Initial ( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_ColorTemp_Batch(vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params) { +int CTv::Tv_FactorySet_FBC_ColorTemp_Batch(vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params) +{ unsigned char mode = 0, r_gain, g_gain, b_gain, r_offset, g_offset, b_offset; switch (Tempmode) { case VPP_COLOR_TEMPERATURE_MODE_STANDARD: @@ -4771,7 +5085,8 @@ int CTv::Tv_FactorySet_FBC_ColorTemp_Batch(vpp_color_temperature_mode_t Tempmode return -1; } -int CTv::Tv_FactoryGet_FBC_ColorTemp_Batch ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ) { +int CTv::Tv_FactoryGet_FBC_ColorTemp_Batch ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ) +{ unsigned char mode = 0, r_gain, g_gain, b_gain, r_offset, g_offset, b_offset; switch (Tempmode) { case VPP_COLOR_TEMPERATURE_MODE_STANDARD: @@ -4806,18 +5121,21 @@ int CTv::Tv_FactoryGet_FBC_ColorTemp_Batch ( vpp_color_temperature_mode_t Tempmo return -1; } -int CTv::Tv_FactorySet_WB_G9_To_FBC( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params ) { +int CTv::Tv_FactorySet_WB_G9_To_FBC( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params ) +{ Tv_FactorySet_FBC_ColorTemp_Batch(Tempmode, params); return 0; } -int CTv::Tv_FactoryGet_WB_G9_To_FBC ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ) { +int CTv::Tv_FactoryGet_WB_G9_To_FBC ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ) +{ int temp_status = 0; Tv_FactoryGet_FBC_ColorTemp_Batch(Tempmode, params); return temp_status; } -int CTv::Tv_FactoryGetItemFromBatch(vpp_color_temperature_mode_t colortemp_mode, int item) { +int CTv::Tv_FactoryGetItemFromBatch(vpp_color_temperature_mode_t colortemp_mode, int item) +{ tcon_rgb_ogo_t params; int ret = 0; @@ -4853,7 +5171,8 @@ int CTv::Tv_FactoryGetItemFromBatch(vpp_color_temperature_mode_t colortemp_mode, return ret; } -int CTv::Tv_FactorySet_FBC_CM_OnOff( unsigned char status ) { +int CTv::Tv_FactorySet_FBC_CM_OnOff( unsigned char status ) +{ if (fbcIns != NULL) { fbcIns->cfbc_Set_CM(COMM_DEV_SERIAL, status); return 0; @@ -4862,7 +5181,8 @@ int CTv::Tv_FactorySet_FBC_CM_OnOff( unsigned char status ) { return -1; } -int CTv::Tv_FactoryGet_FBC_CM_OnOff (void) { +int CTv::Tv_FactoryGet_FBC_CM_OnOff (void) +{ int temp_status = 0; if (fbcIns != NULL) { @@ -4873,7 +5193,8 @@ int CTv::Tv_FactoryGet_FBC_CM_OnOff (void) { return 0; } -int CTv::Tv_FactorySet_FBC_DNLP_OnOff( unsigned char status ) { +int CTv::Tv_FactorySet_FBC_DNLP_OnOff( unsigned char status ) +{ if (fbcIns != NULL) { fbcIns->cfbc_Set_DNLP(COMM_DEV_SERIAL, status); return 0; @@ -4882,7 +5203,8 @@ int CTv::Tv_FactorySet_FBC_DNLP_OnOff( unsigned char status ) { return -1; } -int CTv::Tv_FactoryGet_FBC_DNLP_OnOff (void) { +int CTv::Tv_FactoryGet_FBC_DNLP_OnOff (void) +{ int temp_status = 0; if (fbcIns != NULL) { @@ -4893,7 +5215,8 @@ int CTv::Tv_FactoryGet_FBC_DNLP_OnOff (void) { return 0; } -int CTv::Tv_FactorySet_FBC_Gamma_OnOff( unsigned char status ) { +int CTv::Tv_FactorySet_FBC_Gamma_OnOff( unsigned char status ) +{ if (fbcIns != NULL) { fbcIns->cfbc_Set_Gamma(COMM_DEV_SERIAL, status); return 0; @@ -4902,7 +5225,8 @@ int CTv::Tv_FactorySet_FBC_Gamma_OnOff( unsigned char status ) { return -1; } -int CTv::Tv_FactoryGet_FBC_Gamma_OnOff (void) { +int CTv::Tv_FactoryGet_FBC_Gamma_OnOff (void) +{ int temp_status = 0; if (fbcIns != NULL) { @@ -4913,7 +5237,8 @@ int CTv::Tv_FactoryGet_FBC_Gamma_OnOff (void) { return 0; } -int CTv::Tv_FactorySet_FBC_WhiteBalance_OnOff( unsigned char status ) { +int CTv::Tv_FactorySet_FBC_WhiteBalance_OnOff( unsigned char status ) +{ if (fbcIns != NULL) { fbcIns->cfbc_Set_WhiteBalance_OnOff(COMM_DEV_SERIAL, status); return 0; @@ -4922,7 +5247,8 @@ int CTv::Tv_FactorySet_FBC_WhiteBalance_OnOff( unsigned char status ) { return -1; } -int CTv::Tv_FactoryGet_FBC_WhiteBalance_OnOff (void) { +int CTv::Tv_FactoryGet_FBC_WhiteBalance_OnOff (void) +{ int temp_status = 0; if (fbcIns != NULL) { @@ -4933,7 +5259,8 @@ int CTv::Tv_FactoryGet_FBC_WhiteBalance_OnOff (void) { return 0; } -int CTv::Tv_FactorySet_FBC_backlight_onoff ( int value ) { +int CTv::Tv_FactorySet_FBC_backlight_onoff ( int value ) +{ if (fbcIns != NULL) { fbcIns->cfbc_Set_backlight_onoff(COMM_DEV_SERIAL, value); return 0; @@ -4942,7 +5269,8 @@ int CTv::Tv_FactorySet_FBC_backlight_onoff ( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_backlight_onoff ( void ) { +int CTv::Tv_FactoryGet_FBC_backlight_onoff ( void ) +{ int temp_value = 0; if (fbcIns != NULL) { @@ -4953,7 +5281,8 @@ int CTv::Tv_FactoryGet_FBC_backlight_onoff ( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_LVDS_SSG_Set( int value ) { +int CTv::Tv_FactorySet_FBC_LVDS_SSG_Set( int value ) +{ if (fbcIns != NULL) { fbcIns->cfbc_Set_LVDS_SSG_Set(COMM_DEV_SERIAL, value); return 0; @@ -4962,7 +5291,8 @@ int CTv::Tv_FactorySet_FBC_LVDS_SSG_Set( int value ) { return -1; } -int CTv::Tv_FactorySet_FBC_LightSensor_Status_N310 ( int value ) { +int CTv::Tv_FactorySet_FBC_LightSensor_Status_N310 ( int value ) +{ int temp_value = value; if (fbcIns != NULL) { @@ -4974,7 +5304,8 @@ int CTv::Tv_FactorySet_FBC_LightSensor_Status_N310 ( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_LightSensor_Status_N310 ( void ) { +int CTv::Tv_FactoryGet_FBC_LightSensor_Status_N310 ( void ) +{ int temp_value = 0; int data = 0; @@ -4987,7 +5318,8 @@ int CTv::Tv_FactoryGet_FBC_LightSensor_Status_N310 ( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_Dream_Panel_Status_N310 ( int value ) { +int CTv::Tv_FactorySet_FBC_Dream_Panel_Status_N310 ( int value ) +{ int temp_value = value; if (fbcIns != NULL) { @@ -4999,7 +5331,8 @@ int CTv::Tv_FactorySet_FBC_Dream_Panel_Status_N310 ( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_Dream_Panel_Status_N310 ( void ) { +int CTv::Tv_FactoryGet_FBC_Dream_Panel_Status_N310 ( void ) +{ int temp_value = 0; int data = 0; @@ -5012,7 +5345,8 @@ int CTv::Tv_FactoryGet_FBC_Dream_Panel_Status_N310 ( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_MULT_PQ_Status_N310 ( int value ) { +int CTv::Tv_FactorySet_FBC_MULT_PQ_Status_N310 ( int value ) +{ int temp_value = value; if (fbcIns != NULL) { @@ -5024,7 +5358,8 @@ int CTv::Tv_FactorySet_FBC_MULT_PQ_Status_N310 ( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_MULT_PQ_Status_N310 ( void ) { +int CTv::Tv_FactoryGet_FBC_MULT_PQ_Status_N310 ( void ) +{ int temp_value = 0; int data = 0; @@ -5037,7 +5372,8 @@ int CTv::Tv_FactoryGet_FBC_MULT_PQ_Status_N310 ( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_MEMC_Status_N310 ( int value ) { +int CTv::Tv_FactorySet_FBC_MEMC_Status_N310 ( int value ) +{ int temp_value = value; if (fbcIns != NULL) { @@ -5049,7 +5385,8 @@ int CTv::Tv_FactorySet_FBC_MEMC_Status_N310 ( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_MEMC_Status_N310 ( void ) { +int CTv::Tv_FactoryGet_FBC_MEMC_Status_N310 ( void ) +{ int temp_value = 0; int data = 0; @@ -5062,7 +5399,8 @@ int CTv::Tv_FactoryGet_FBC_MEMC_Status_N310 ( void ) { return -1; } -int CTv::Tv_FactorySet_FBC_ColorTemp_Mode_N310( int mode ) { +int CTv::Tv_FactorySet_FBC_ColorTemp_Mode_N310( int mode ) +{ //int colorTemp = 0; if (fbcIns != NULL) { //colorTemp = Tv_FactoryWhiteBalanceColorTempMappingG92Fbc(mode); @@ -5074,7 +5412,8 @@ int CTv::Tv_FactorySet_FBC_ColorTemp_Mode_N310( int mode ) { return -1; } -int CTv::Tv_FactoryGet_FBC_ColorTemp_Mode_N310 ( void ) { +int CTv::Tv_FactoryGet_FBC_ColorTemp_Mode_N310 ( void ) +{ int mode = 0; if (fbcIns != NULL) { @@ -5086,7 +5425,8 @@ int CTv::Tv_FactoryGet_FBC_ColorTemp_Mode_N310 ( void ) { return -1; } -int CTv::Tv_FactorySet_FBC_Backlight_N310 ( int value ) { +int CTv::Tv_FactorySet_FBC_Backlight_N310 ( int value ) +{ int val = 0; if (fbcIns != NULL) { @@ -5099,7 +5439,8 @@ int CTv::Tv_FactorySet_FBC_Backlight_N310 ( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_Backlight_N310 ( void ) { +int CTv::Tv_FactoryGet_FBC_Backlight_N310 ( void ) +{ int val = 0; if (fbcIns != NULL) { @@ -5110,7 +5451,8 @@ int CTv::Tv_FactoryGet_FBC_Backlight_N310 ( void ) { return -1; } -int CTv::Tv_FactorySet_FBC_Bluetooth_IIS_N310 ( int value ) { +int CTv::Tv_FactorySet_FBC_Bluetooth_IIS_N310 ( int value ) +{ if (fbcIns != NULL) { fbcIns->cfbc_Set_Bluetooth_IIS_onoff(COMM_DEV_SERIAL, value); return 0; @@ -5119,7 +5461,8 @@ int CTv::Tv_FactorySet_FBC_Bluetooth_IIS_N310 ( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_Bluetooth_IIS_N310 ( void ) { +int CTv::Tv_FactoryGet_FBC_Bluetooth_IIS_N310 ( void ) +{ int temp_value = 0; if (fbcIns != NULL) { @@ -5130,7 +5473,8 @@ int CTv::Tv_FactoryGet_FBC_Bluetooth_IIS_N310 ( void ) { return 0; } -int CTv::Tv_FactorySet_FBC_Led_N310 ( int val_1, int val_2, int val_3 ) { +int CTv::Tv_FactorySet_FBC_Led_N310 ( int val_1, int val_2, int val_3 ) +{ int val = 0; if (fbcIns != NULL) { @@ -5141,7 +5485,8 @@ int CTv::Tv_FactorySet_FBC_Led_N310 ( int val_1, int val_2, int val_3 ) { return -1; } -int CTv::Tv_FactorySet_VbyOne_Spread_Spectrum_N311 ( int value ) { +int CTv::Tv_FactorySet_VbyOne_Spread_Spectrum_N311 ( int value ) +{ if (fbcIns != NULL) { return -1; } else { @@ -5166,7 +5511,8 @@ int CTv::Tv_FactorySet_VbyOne_Spread_Spectrum_N311 ( int value ) { } } -int CTv::Tv_FactoryGet_VbyOne_Spread_Spectrum_N311 ( void ) { +int CTv::Tv_FactoryGet_VbyOne_Spread_Spectrum_N311 ( void ) +{ int val = 0; if (fbcIns != NULL) { return -1; @@ -5176,7 +5522,8 @@ int CTv::Tv_FactoryGet_VbyOne_Spread_Spectrum_N311 ( void ) { } } -int CTv::Tv_FactorySet_FBC_AP_STANDBY_N310 ( int value ) { +int CTv::Tv_FactorySet_FBC_AP_STANDBY_N310 ( int value ) +{ if (fbcIns != NULL) { fbcIns->cfbc_Set_AP_STANDBY_N310(COMM_DEV_SERIAL, value); return 0; @@ -5185,7 +5532,8 @@ int CTv::Tv_FactorySet_FBC_AP_STANDBY_N310 ( int value ) { return -1; } -int CTv::Tv_FactoryGet_FBC_AP_STANDBY_N310( void ) { +int CTv::Tv_FactoryGet_FBC_AP_STANDBY_N310( void ) +{ int temp_value = 0; if (fbcIns != NULL) { @@ -5196,7 +5544,8 @@ int CTv::Tv_FactoryGet_FBC_AP_STANDBY_N310( void ) { return 0; } -int CTv::Tv_FactorySet_Uboot_Stage(int value) { +int CTv::Tv_FactorySet_Uboot_Stage(int value) +{ if (fbcIns != NULL) { fbcIns->cfbc_Set_Fbc_Uboot_Stage(COMM_DEV_SERIAL, value); return 0; @@ -5206,7 +5555,8 @@ int CTv::Tv_FactorySet_Uboot_Stage(int value) { } //audio -void CTv::TvAudioOpen() { +void CTv::TvAudioOpen() +{ SetAudioAVOutMute(CC_AUDIO_UNMUTE); SetAudioSPDIFMute(CC_AUDIO_UNMUTE); project_info_t tmp_info; @@ -5216,7 +5566,8 @@ void CTv::TvAudioOpen() { openTvAudio(); } -void CTv::AudioCtlUninit() { +void CTv::AudioCtlUninit() +{ int oldMuteStatus; oldMuteStatus = GetAudioMuteForTv(); @@ -5234,12 +5585,14 @@ void CTv::AudioCtlUninit() { SetAudioMuteForTv(oldMuteStatus); } -char *CTv::GetMainVolLutTableExtraName() { +char *CTv::GetMainVolLutTableExtraName() +{ return mMainVolLutTableExtraName; } //audio -int CTv::SetAudioMuteForSystem(int muteOrUnmute) { +int CTv::SetAudioMuteForSystem(int muteOrUnmute) +{ int ret = 0; LOGD("SetAudioMuteForSystem sysMuteStats=%d, tvMuteStatus=%d, toMute=%d", mAudioMuteStatusForSystem, mAudioMuteStatusForTv, muteOrUnmute); mAudioMuteStatusForSystem = muteOrUnmute; @@ -5248,11 +5601,13 @@ int CTv::SetAudioMuteForSystem(int muteOrUnmute) { return ret; } -int CTv::GetAudioMuteForSystem() { +int CTv::GetAudioMuteForSystem() +{ return mAudioMuteStatusForSystem; } -int CTv::SetAudioMuteForTv(int muteOrUnmute) { +int CTv::SetAudioMuteForTv(int muteOrUnmute) +{ int ret = 0; mAudioMuteStatusForTv = muteOrUnmute; LOGD("SetAudioMuteForTv sysMuteStats=%d, tvMuteStatus=%d, toMute=%d", mAudioMuteStatusForSystem, mAudioMuteStatusForTv, muteOrUnmute); @@ -5261,16 +5616,19 @@ int CTv::SetAudioMuteForTv(int muteOrUnmute) { return ret; } -int CTv::GetAudioMuteForTv() { +int CTv::GetAudioMuteForTv() +{ return mAudioMuteStatusForTv; } -int CTv::GetDbxTvMode(int *mode, int *son_value, int *vol_value, int *sur_value) { +int CTv::GetDbxTvMode(int *mode, int *son_value, int *vol_value, int *sur_value) +{ *mode = 0; return SSMReadAudioDbxTvValue(son_value, vol_value, sur_value); } -int CTv::SetAudioSPDIFSwitch(int tmp_val) { +int CTv::SetAudioSPDIFSwitch(int tmp_val) +{ int muteStatus = CC_AUDIO_UNMUTE; SaveCurAudioSPDIFSwitch(tmp_val); @@ -5285,56 +5643,68 @@ int CTv::SetAudioSPDIFSwitch(int tmp_val) { return 0; } -int CTv::AudioHandleHeadsetPlugIn() { +int CTv::AudioHandleHeadsetPlugIn() +{ return 0; } -int CTv::AudioHandleHeadsetPullOut() { +int CTv::AudioHandleHeadsetPullOut() +{ return 0; } -int CTv::Tv_SetDRC_OnOff(int on_off) { +int CTv::Tv_SetDRC_OnOff(int on_off) +{ on_off = on_off; return 0; } -int CTv::Tv_GetDRC_OnOff(void) { +int CTv::Tv_GetDRC_OnOff(void) +{ return 0; } -void CTv::updateSubtitle(int pic_width, int pic_height) { +void CTv::updateSubtitle(int pic_width, int pic_height) +{ TvEvent::SubtitleEvent ev; ev.pic_width = pic_width; ev.pic_height = pic_height; sendTvEvent(ev); } -int CTv::setSubtitleBuffer(char *share_mem) { +int CTv::setSubtitleBuffer(char *share_mem) +{ mSubtitle.setBuffer(share_mem); return 0; } -int CTv::initSubtitle(int bitmapWidth, int bitmapHeight) { +int CTv::initSubtitle(int bitmapWidth, int bitmapHeight) +{ return mSubtitle.sub_init(bitmapWidth, bitmapHeight); } -int CTv::lockSubtitle() { +int CTv::lockSubtitle() +{ return mSubtitle.sub_lock(); } -int CTv::unlockSubtitle() { +int CTv::unlockSubtitle() +{ return mSubtitle.sub_unlock(); } -int CTv::getSubSwitchStatus() { +int CTv::getSubSwitchStatus() +{ return mSubtitle.sub_switch_status(); } -int CTv::startSubtitle(int dmx_id, int pid, int page_id, int anc_page_id) { +int CTv::startSubtitle(int dmx_id, int pid, int page_id, int anc_page_id) +{ return mSubtitle.sub_start_dvb_sub(dmx_id, pid, page_id, anc_page_id); } -int CTv::stopSubtitle() { +int CTv::stopSubtitle() +{ return mSubtitle.sub_stop_dvb_sub(); } @@ -5342,7 +5712,8 @@ int CTv::stopSubtitle() { //Audio Mute -int CTv::SetAudioI2sMute(int muteStatus) { +int CTv::SetAudioI2sMute(int muteStatus) +{ int vol = 256; if (muteStatus == CC_AUDIO_MUTE) { vol = 0; @@ -5354,7 +5725,8 @@ int CTv::SetAudioI2sMute(int muteStatus) { return 0; } -int CTv::SetDacMute(int muteStatus, int mute_type) { +int CTv::SetDacMute(int muteStatus, int mute_type) +{ int tmp_ret = 0; if (mute_type & CC_DAC_MUTE_TYPE_INTERNAL) { tmp_ret |= mAudioAlsa.SetInternalDacMute(muteStatus); @@ -5389,18 +5761,21 @@ int CTv::SetDacMute(int muteStatus, int mute_type) { return tmp_ret; } -int CTv::SetAudioAVOutMute(int muteStatus) { +int CTv::SetAudioAVOutMute(int muteStatus) +{ SSMSaveAudioAVOutMuteVal(muteStatus); return mAudioAlsa.SetInternalDacMute(muteStatus); } -int CTv::GetAudioAVOutMute() { +int CTv::GetAudioAVOutMute() +{ int8_t tmp_ch = 0; SSMReadAudioAVOutMuteVal(&tmp_ch); return tmp_ch; } -int CTv::SetAudioSPDIFMute(int muteStatus) { +int CTv::SetAudioSPDIFMute(int muteStatus) +{ if (GetCurAudioSPDIFSwitch() == CC_SWITCH_OFF) { muteStatus = CC_AUDIO_MUTE; } @@ -5409,17 +5784,20 @@ int CTv::SetAudioSPDIFMute(int muteStatus) { return mAudioAlsa.SetSPDIFMute(muteStatus); } -int CTv::GetAudioSPDIFMute() { +int CTv::GetAudioSPDIFMute() +{ int8_t tmp_ch = 0; SSMReadAudioSPIDFMuteVal(&tmp_ch); return tmp_ch; } -int CTv::GetCurAudioSPDIFSwitch() { +int CTv::GetCurAudioSPDIFSwitch() +{ return mCurAudioSPDIFSwitch; } -int CTv::SaveCurAudioSPDIFSwitch(int tmp_val) { +int CTv::SaveCurAudioSPDIFSwitch(int tmp_val) +{ int8_t tmp_ch = 0; mCurAudioSPDIFSwitch = tmp_val; @@ -5429,7 +5807,8 @@ int CTv::SaveCurAudioSPDIFSwitch(int tmp_val) { return mCurAudioSPDIFSwitch; } -int CTv::LoadCurAudioSPDIFSwitch() { +int CTv::LoadCurAudioSPDIFSwitch() +{ int8_t tmp_ch = 0; SSMReadAudioSPDIFSwitchVal(&tmp_ch); mCurAudioSPDIFSwitch = tmp_ch; @@ -5441,7 +5820,8 @@ int CTv::LoadCurAudioSPDIFSwitch() { } //Audio SPDIF Mode -int CTv::SetAudioSPDIFMode(int tmp_val) { +int CTv::SetAudioSPDIFMode(int tmp_val) +{ LOGD("%s : tmp_val = %d\n", __FUNCTION__, tmp_val); mCurAudioSPDIFMode = tmp_val; @@ -5449,11 +5829,13 @@ int CTv::SetAudioSPDIFMode(int tmp_val) { return 0; } -int CTv::GetCurAudioSPDIFMode() { +int CTv::GetCurAudioSPDIFMode() +{ return mCurAudioSPDIFMode; } -int CTv::SaveCurAudioSPDIFMode(int tmp_val) { +int CTv::SaveCurAudioSPDIFMode(int tmp_val) +{ int8_t tmp_ch = 0; mCurAudioSPDIFMode = tmp_val; @@ -5463,7 +5845,8 @@ int CTv::SaveCurAudioSPDIFMode(int tmp_val) { return mCurAudioSPDIFMode; } -int CTv::LoadCurAudioSPDIFMode() { +int CTv::LoadCurAudioSPDIFMode() +{ int8_t tmp_ch = 0; SSMReadAudioSPDIFModeVal(&tmp_ch); mCurAudioSPDIFMode = tmp_ch; @@ -5474,7 +5857,8 @@ int CTv::LoadCurAudioSPDIFMode() { return mCurAudioSPDIFMode; } -int CTv::SetAudioMasterVolume(int tmp_vol) { +int CTv::SetAudioMasterVolume(int tmp_vol) +{ mCustomAudioMasterVolume = tmp_vol; //Volume Compensation @@ -5525,21 +5909,25 @@ int CTv::SetAudioMasterVolume(int tmp_vol) { return 0; } -int CTv::GetAudioMasterVolume() { +int CTv::GetAudioMasterVolume() +{ return mCustomAudioMasterVolume; } -int CTv::GetCurAudioMasterVolume() { +int CTv::GetCurAudioMasterVolume() +{ return mCurAudioMasterVolume; } -int CTv::SaveCurAudioMasterVolume(int tmp_vol) { +int CTv::SaveCurAudioMasterVolume(int tmp_vol) +{ mCurAudioMasterVolume = tmp_vol; SSMSaveAudioMasterVolume(tmp_vol); return mCurAudioMasterVolume; } -int CTv::LoadCurAudioMasterVolume() { +int CTv::LoadCurAudioMasterVolume() +{ int8_t tmp_ch = 0; SSMReadAudioMasterVolume(&tmp_ch); mCurAudioMasterVolume = tmp_ch; @@ -5552,7 +5940,8 @@ int CTv::LoadCurAudioMasterVolume() { return mCurAudioMasterVolume; } -int CTv::SetAudioBalance(int tmp_val) { +int CTv::SetAudioBalance(int tmp_val) +{ mCustomAudioBalance = tmp_val; int aud_arch_type = GetAudioArchitectureTypeCFG(); @@ -5569,15 +5958,18 @@ int CTv::SetAudioBalance(int tmp_val) { return 0; } -int CTv::GetAudioBalance() { +int CTv::GetAudioBalance() +{ return mCustomAudioBalance; } -int CTv::GetCurAudioBalance() { +int CTv::GetCurAudioBalance() +{ return mCurAudioBalance; } -int CTv::SaveCurAudioBalance(int tmp_val) { +int CTv::SaveCurAudioBalance(int tmp_val) +{ int8_t tmp_ch = 0; mCurAudioBalance = tmp_val; @@ -5587,7 +5979,8 @@ int CTv::SaveCurAudioBalance(int tmp_val) { return mCurAudioBalance; } -int CTv::LoadCurAudioBalance() { +int CTv::LoadCurAudioBalance() +{ int8_t tmp_ch = 0; SSMReadAudioBalanceVal(&tmp_ch); mCurAudioBalance = tmp_ch; @@ -5601,13 +5994,15 @@ int CTv::LoadCurAudioBalance() { return mCurAudioBalance; } -int CTv::SetAudioVolumeCompensationVal(int tmp_vol_comp_val) { +int CTv::SetAudioVolumeCompensationVal(int tmp_vol_comp_val) +{ mVolumeCompensationVal = tmp_vol_comp_val; LOGD("%s, new vol comp value = %d.\n", __FUNCTION__, tmp_vol_comp_val); return mVolumeCompensationVal; } -int CTv::SetAudioSupperBassVolume(int tmp_vol) { +int CTv::SetAudioSupperBassVolume(int tmp_vol) +{ mCustomAudioSupperBassVolume = tmp_vol; int aud_arch_type = GetAudioArchitectureTypeCFG(); @@ -5637,15 +6032,18 @@ int CTv::SetAudioSupperBassVolume(int tmp_vol) { return tmp_ret; } -int CTv::GetAudioSupperBassVolume() { +int CTv::GetAudioSupperBassVolume() +{ return mCustomAudioSupperBassVolume; } -int CTv::GetCurAudioSupperBassVolume() { +int CTv::GetCurAudioSupperBassVolume() +{ return mCurAudioSupperBassVolume; } -int CTv::SaveCurAudioSupperBassVolume(int tmp_vol) { +int CTv::SaveCurAudioSupperBassVolume(int tmp_vol) +{ int8_t tmp_ch = 0; mCurAudioSupperBassVolume = tmp_vol; @@ -5655,7 +6053,8 @@ int CTv::SaveCurAudioSupperBassVolume(int tmp_vol) { return mCurAudioSupperBassVolume; } -int CTv::LoadCurAudioSupperBassVolume() { +int CTv::LoadCurAudioSupperBassVolume() +{ int8_t tmp_ch = 0; SSMReadAudioSupperBassVolume(&tmp_ch); mCurAudioSupperBassVolume = tmp_ch; @@ -5668,7 +6067,8 @@ int CTv::LoadCurAudioSupperBassVolume() { return mCurAudioSupperBassVolume; } -int CTv::SetAudioSupperBassSwitch(int tmp_val) { +int CTv::SetAudioSupperBassSwitch(int tmp_val) +{ mCustomAudioSupperBassSwitch = tmp_val; if (GetAudioSupperBassSwitch() == CC_SWITCH_OFF) { @@ -5678,7 +6078,8 @@ int CTv::SetAudioSupperBassSwitch(int tmp_val) { return SetAudioSupperBassVolume(GetAudioSupperBassVolume()); } -int CTv::GetAudioSupperBassSwitch() { +int CTv::GetAudioSupperBassSwitch() +{ if (GetAudioSupperBassSwitchDisableCFG() != 0) { return CC_SWITCH_ON; } @@ -5686,7 +6087,8 @@ int CTv::GetAudioSupperBassSwitch() { return mCustomAudioSupperBassSwitch; } -int CTv::GetCurAudioSupperBassSwitch() { +int CTv::GetCurAudioSupperBassSwitch() +{ if (GetAudioSupperBassSwitchDisableCFG() != 0) { return CC_SWITCH_ON; } @@ -5694,7 +6096,8 @@ int CTv::GetCurAudioSupperBassSwitch() { return mCurAudioSupperBassSwitch; } -int CTv::SaveCurAudioSupperBassSwitch(int tmp_val) { +int CTv::SaveCurAudioSupperBassSwitch(int tmp_val) +{ int8_t tmp_ch = 0; mCurAudioSupperBassSwitch = tmp_val; @@ -5706,7 +6109,8 @@ int CTv::SaveCurAudioSupperBassSwitch(int tmp_val) { return mCurAudioSupperBassSwitch; } -int CTv::LoadCurAudioSupperBassSwitch() { +int CTv::LoadCurAudioSupperBassSwitch() +{ int8_t tmp_ch = 0; SSMReadAudioSupperBassSwitch(&tmp_ch); mCurAudioSupperBassSwitch = tmp_ch; @@ -5719,7 +6123,8 @@ int CTv::LoadCurAudioSupperBassSwitch() { return mCurAudioSupperBassSwitch; } -void CTv::SetSupperBassSRSSpeakerSize() { +void CTv::SetSupperBassSRSSpeakerSize() +{ int tmp_speakersize = -1; if (GetAudioSrsTruBass() == CC_SWITCH_ON) { @@ -5730,22 +6135,26 @@ void CTv::SetSupperBassSRSSpeakerSize() { } } -int CTv::SetAudioSRSSurround(int tmp_val) { +int CTv::SetAudioSRSSurround(int tmp_val) +{ mCustomAudioSRSSurround = tmp_val; RefreshSrsEffectAndDacGain(); return 0; } -int CTv::GetAudioSRSSurround() { +int CTv::GetAudioSRSSurround() +{ return mCustomAudioSRSSurround; } -int CTv::GetCurAudioSRSSurround() { +int CTv::GetCurAudioSRSSurround() +{ return mCurAudioSRSSurround; } -int CTv::SaveCurAudioSrsSurround(int tmp_val) { +int CTv::SaveCurAudioSrsSurround(int tmp_val) +{ int8_t tmp_ch = 0; mCurAudioSRSSurround = tmp_val; @@ -5755,7 +6164,8 @@ int CTv::SaveCurAudioSrsSurround(int tmp_val) { return mCurAudioSRSSurround; } -int CTv::LoadCurAudioSrsSurround() { +int CTv::LoadCurAudioSrsSurround() +{ int8_t tmp_ch = 0; SSMReadAudioSRSSurroundSwitch(&tmp_ch); @@ -5769,21 +6179,25 @@ int CTv::LoadCurAudioSrsSurround() { return mCurAudioSRSSurround; } -int CTv::SetAudioSrsDialogClarity(int tmp_val) { +int CTv::SetAudioSrsDialogClarity(int tmp_val) +{ mCustomAudioSrsDialogClarity = tmp_val; RefreshSrsEffectAndDacGain(); return 0; } -int CTv::GetAudioSrsDialogClarity() { +int CTv::GetAudioSrsDialogClarity() +{ return mCustomAudioSrsDialogClarity; } -int CTv::GetCurAudioSrsDialogClarity() { +int CTv::GetCurAudioSrsDialogClarity() +{ return mCurAudioSrsDialogClarity; } -int CTv::SaveCurAudioSrsDialogClarity(int tmp_val) { +int CTv::SaveCurAudioSrsDialogClarity(int tmp_val) +{ int8_t tmp_ch = 0; mCurAudioSrsDialogClarity = tmp_val; @@ -5793,7 +6207,8 @@ int CTv::SaveCurAudioSrsDialogClarity(int tmp_val) { return mCurAudioSrsDialogClarity; } -int CTv::LoadCurAudioSrsDialogClarity() { +int CTv::LoadCurAudioSrsDialogClarity() +{ int8_t tmp_ch = 0; SSMReadAudioSRSDialogClaritySwitch(&tmp_ch); @@ -5807,21 +6222,25 @@ int CTv::LoadCurAudioSrsDialogClarity() { return mCurAudioSrsDialogClarity; } -int CTv::SetAudioSrsTruBass(int tmp_val) { +int CTv::SetAudioSrsTruBass(int tmp_val) +{ mCustomAudioSrsTruBass = tmp_val; RefreshSrsEffectAndDacGain(); return 0; } -int CTv::GetAudioSrsTruBass() { +int CTv::GetAudioSrsTruBass() +{ return mCustomAudioSrsTruBass; } -int CTv::GetCurAudioSrsTruBass() { +int CTv::GetCurAudioSrsTruBass() +{ return mCurAudioSrsTruBass; } -int CTv::SaveCurAudioSrsTruBass(int tmp_val) { +int CTv::SaveCurAudioSrsTruBass(int tmp_val) +{ int8_t tmp_ch = 0; mCurAudioSrsTruBass = tmp_val; @@ -5831,7 +6250,8 @@ int CTv::SaveCurAudioSrsTruBass(int tmp_val) { return mCurAudioSrsTruBass; } -int CTv::LoadCurAudioSrsTruBass() { +int CTv::LoadCurAudioSrsTruBass() +{ int8_t tmp_ch = 0; SSMReadAudioSRSTruBassSwitch(&tmp_ch); @@ -5845,7 +6265,8 @@ int CTv::LoadCurAudioSrsTruBass() { return mCurAudioSrsTruBass; } -void CTv::RefreshSrsEffectAndDacGain() { +void CTv::RefreshSrsEffectAndDacGain() +{ int tmp_gain_val = 0; int surround_switch = CC_SWITCH_OFF; int trubass_switch = CC_SWITCH_OFF; @@ -5868,7 +6289,7 @@ void CTv::RefreshSrsEffectAndDacGain() { mAudioEffect.SetSrsInputOutputGain(input_gain_val, out_gain_val); if (trubass_switch == CC_SWITCH_ON - && dialogclarity_switch == CC_SWITCH_OFF) { + && dialogclarity_switch == CC_SWITCH_OFF) { mAudioEffect.SetSrsTruBassSwitch (CC_SWITCH_ON); tmp_gain_val = GetAudioSRSGainCfg("audio.srs.trubass.gain", 50); @@ -5879,7 +6300,7 @@ void CTv::RefreshSrsEffectAndDacGain() { mAudioEffect.SetSrsDialogClaritySwitch (CC_SWITCH_OFF); } else if (trubass_switch == CC_SWITCH_OFF - && dialogclarity_switch == CC_SWITCH_ON) { + && dialogclarity_switch == CC_SWITCH_ON) { mAudioEffect.SetSrsDialogClaritySwitch (CC_SWITCH_ON); tmp_gain_val = GetAudioSRSGainCfg("audio.srs.dialogclarity.gain", 30); @@ -5890,7 +6311,7 @@ void CTv::RefreshSrsEffectAndDacGain() { mAudioEffect.SetSrsTruBassSwitch (CC_SWITCH_OFF); } else if (trubass_switch == CC_SWITCH_ON - && dialogclarity_switch == CC_SWITCH_ON) { + && dialogclarity_switch == CC_SWITCH_ON) { mAudioEffect.SetSrsTruBassSwitch (CC_SWITCH_ON); tmp_gain_val = GetAudioSRSGainCfg("audio.srs.trubass.gain", 50); @@ -5905,7 +6326,7 @@ void CTv::RefreshSrsEffectAndDacGain() { mAudioEffect.SetSrsDefinitionGain(tmp_gain_val); } else if (trubass_switch == CC_SWITCH_OFF - && dialogclarity_switch == CC_SWITCH_OFF) { + && dialogclarity_switch == CC_SWITCH_OFF) { mAudioEffect.SetSrsTruBassSwitch (CC_SWITCH_OFF); mAudioEffect.SetSrsDialogClaritySwitch(CC_SWITCH_OFF); } @@ -5920,20 +6341,21 @@ void CTv::RefreshSrsEffectAndDacGain() { if (surround_switch == CC_SWITCH_ON) { main_gain_val = GetAudioEffectAmplifierGainCfg("audio.srs.sourround.ampmaster.gain", 6, 24); if (dialogclarity_switch == CC_SWITCH_ON - && trubass_switch == CC_SWITCH_OFF) { + && trubass_switch == CC_SWITCH_OFF) { main_gain_val = GetAudioEffectAmplifierGainCfg("audio.srs.dialogclarity.ampmaster.gain", 6, 24); } else if (dialogclarity_switch == CC_SWITCH_OFF - && trubass_switch == CC_SWITCH_ON) { + && trubass_switch == CC_SWITCH_ON) { main_gain_val = GetAudioEffectAmplifierGainCfg("audio.srs.trubass.ampmaster.gain", 6, 24); } else if (dialogclarity_switch == CC_SWITCH_ON - && trubass_switch == CC_SWITCH_ON) { + && trubass_switch == CC_SWITCH_ON) { main_gain_val = GetAudioEffectAmplifierGainCfg("audio.srs.trubass.dialogclarity.ampmaster.gain", 6, 24); } } mAudioAlsa.SetMainVolumeGain(main_gain_val); } -int CTv::SetAudioBassVolume(int tmp_vol) { +int CTv::SetAudioBassVolume(int tmp_vol) +{ int nMinBassVol = 0, nMaxBassVol = 0; nMinBassVol = GetBassUIMinGainVal(); @@ -5949,15 +6371,18 @@ int CTv::SetAudioBassVolume(int tmp_vol) { return SetSpecialIndexEQGain(CC_EQ_BASS_IND, tmp_vol); } -int CTv::GetAudioBassVolume() { +int CTv::GetAudioBassVolume() +{ return mCustomAudioBassVolume; } -int CTv::GetCurAudioBassVolume() { +int CTv::GetCurAudioBassVolume() +{ return mCurAudioBassVolume; } -int CTv::SaveCurAudioBassVolume(int tmp_vol) { +int CTv::SaveCurAudioBassVolume(int tmp_vol) +{ int nMinBassVol = 0, nMaxBassVol = 0; nMinBassVol = GetBassUIMinGainVal(); @@ -5974,7 +6399,8 @@ int CTv::SaveCurAudioBassVolume(int tmp_vol) { return SaveSpecialIndexEQGain(CC_EQ_BASS_IND, tmp_vol); } -int CTv::RealSaveCurAudioBassVolume(int tmp_vol, int sound_mode_judge) { +int CTv::RealSaveCurAudioBassVolume(int tmp_vol, int sound_mode_judge) +{ int8_t tmp_ch = 0; mCurAudioBassVolume = tmp_vol; tmp_ch = tmp_vol; @@ -5989,7 +6415,8 @@ int CTv::RealSaveCurAudioBassVolume(int tmp_vol, int sound_mode_judge) { return mCurAudioBassVolume; } -int CTv::LoadCurAudioBassVolume() { +int CTv::LoadCurAudioBassVolume() +{ int nMinBassVol = 0, nMaxBassVol = 0; int8_t tmp_ch = 0; @@ -6007,7 +6434,8 @@ int CTv::LoadCurAudioBassVolume() { return mCurAudioBassVolume; } -int CTv::SetAudioTrebleVolume(int tmp_vol) { +int CTv::SetAudioTrebleVolume(int tmp_vol) +{ int nMinTrebleVol = 0, nMaxTrebleVol = 0; nMinTrebleVol = GetTrebleUIMinGainVal(); @@ -6024,15 +6452,18 @@ int CTv::SetAudioTrebleVolume(int tmp_vol) { return SetSpecialIndexEQGain(CC_EQ_TREBLE_IND, tmp_vol); } -int CTv::GetAudioTrebleVolume() { +int CTv::GetAudioTrebleVolume() +{ return mCustomAudioTrebleVolume; } -int CTv::GetCurAudioTrebleVolume() { +int CTv::GetCurAudioTrebleVolume() +{ return mCurAudioTrebleVolume; } -int CTv::SaveCurAudioTrebleVolume(int tmp_vol) { +int CTv::SaveCurAudioTrebleVolume(int tmp_vol) +{ int nMinTrebleVol = 0, nMaxTrebleVol = 0; nMinTrebleVol = GetTrebleUIMinGainVal(); @@ -6049,7 +6480,8 @@ int CTv::SaveCurAudioTrebleVolume(int tmp_vol) { return SaveSpecialIndexEQGain(CC_EQ_TREBLE_IND, tmp_vol); } -int CTv::RealSaveCurAudioTrebleVolume(int tmp_vol, int sound_mode_judge) { +int CTv::RealSaveCurAudioTrebleVolume(int tmp_vol, int sound_mode_judge) +{ int8_t tmp_ch = 0; mCurAudioTrebleVolume = tmp_vol; tmp_ch = tmp_vol; @@ -6065,7 +6497,8 @@ int CTv::RealSaveCurAudioTrebleVolume(int tmp_vol, int sound_mode_judge) { return mCurAudioTrebleVolume; } -int CTv::LoadCurAudioTrebleVolume() { +int CTv::LoadCurAudioTrebleVolume() +{ int nMinTrebleVol = 0, nMaxTrebleVol = 0; int8_t tmp_ch = 0; @@ -6083,7 +6516,8 @@ int CTv::LoadCurAudioTrebleVolume() { return mCurAudioTrebleVolume; } -int CTv::SetAudioSoundMode(int tmp_val) { +int CTv::SetAudioSoundMode(int tmp_val) +{ mCustomAudioSoundMode = tmp_val; SetSpecialModeEQGain(mCustomAudioSoundMode); @@ -6091,21 +6525,25 @@ int CTv::SetAudioSoundMode(int tmp_val) { return 0; } -int CTv::GetAudioSoundMode() { +int CTv::GetAudioSoundMode() +{ return mCustomAudioSoundMode; } -int CTv::GetCurAudioSoundMode() { +int CTv::GetCurAudioSoundMode() +{ return mCurAudioSoundMode; } -int CTv::SaveCurAudioSoundMode(int tmp_val) { +int CTv::SaveCurAudioSoundMode(int tmp_val) +{ mCurAudioSoundMode = tmp_val; SSMSaveAudioSoundModeVal(tmp_val); return tmp_val; } -int CTv::LoadCurAudioSoundMode() { +int CTv::LoadCurAudioSoundMode() +{ int8_t tmp_ch = 0; SSMReadAudioSoundModeVal(&tmp_ch); mCurAudioSoundMode = tmp_ch; @@ -6117,7 +6555,8 @@ int CTv::LoadCurAudioSoundMode() { return mCurAudioSoundMode; } -int CTv::HandleTrebleBassVolume() { +int CTv::HandleTrebleBassVolume() +{ int tmp_vol = 0; int tmpEQGainBuf[128] = { 0 }; int8_t tmp_ch = 0; @@ -6140,7 +6579,8 @@ int CTv::HandleTrebleBassVolume() { return 0; } -int CTv::SetAudioWallEffect(int tmp_val) { +int CTv::SetAudioWallEffect(int tmp_val) +{ int tmp_treble_val; int tmp_type = 0; @@ -6162,15 +6602,18 @@ int CTv::SetAudioWallEffect(int tmp_val) { return 0; } -int CTv::GetAudioWallEffect() { +int CTv::GetAudioWallEffect() +{ return mCustomAudioWallEffect; } -int CTv::GetCurAudioWallEffect() { +int CTv::GetCurAudioWallEffect() +{ return mCurAudioWallEffect; } -int CTv::SaveCurAudioWallEffect(int tmp_val) { +int CTv::SaveCurAudioWallEffect(int tmp_val) +{ int8_t tmp_ch = 0; mCurAudioWallEffect = tmp_val; @@ -6180,7 +6623,8 @@ int CTv::SaveCurAudioWallEffect(int tmp_val) { return mCurAudioWallEffect; } -int CTv::LoadCurAudioWallEffect() { +int CTv::LoadCurAudioWallEffect() +{ int8_t tmp_ch = 0; SSMReadAudioWallEffectSwitch(&tmp_ch); mCurAudioWallEffect = tmp_ch; @@ -6193,20 +6637,24 @@ int CTv::LoadCurAudioWallEffect() { return mCurAudioWallEffect; } -int CTv::SetAudioEQMode(int tmp_val) { +int CTv::SetAudioEQMode(int tmp_val) +{ mCustomAudioEQMode = tmp_val; return 0; } -int CTv::GetAudioEQMode() { +int CTv::GetAudioEQMode() +{ return mCustomAudioEQMode; } -int CTv::GetCurAudioEQMode() { +int CTv::GetCurAudioEQMode() +{ return mCurAudioEQMode; } -int CTv::SaveCurAudioEQMode(int tmp_val) { +int CTv::SaveCurAudioEQMode(int tmp_val) +{ int8_t tmp_ch = 0; mCurAudioEQMode = tmp_val; @@ -6216,7 +6664,8 @@ int CTv::SaveCurAudioEQMode(int tmp_val) { return tmp_val; } -int CTv::LoadCurAudioEQMode() { +int CTv::LoadCurAudioEQMode() +{ int8_t tmp_ch = 0; SSMReadAudioEQModeVal(&tmp_ch); mCurAudioEQMode = tmp_ch; @@ -6229,39 +6678,47 @@ int CTv::LoadCurAudioEQMode() { return mCurAudioEQMode; } -int CTv::GetAudioEQRange(int range_buf[]) { +int CTv::GetAudioEQRange(int range_buf[]) +{ range_buf[0] = CC_MIN_EQ_GAIN_VAL; range_buf[1] = CC_MAX_EQ_GAIN_VAL; return 0; } -int CTv::GetAudioEQBandCount() { +int CTv::GetAudioEQBandCount() +{ return mAudioEffect.GetEQBandCount(); } -int CTv::SetAudioEQGain(int gain_buf[]) { +int CTv::SetAudioEQGain(int gain_buf[]) +{ return AudioSetEQGain(gain_buf); } -int CTv::GetAudioEQGain(int gain_buf[]) { +int CTv::GetAudioEQGain(int gain_buf[]) +{ return GetCustomEQGain(gain_buf); } -int CTv::GetCurAudioEQGain(int gain_buf[]) { +int CTv::GetCurAudioEQGain(int gain_buf[]) +{ RealReadCurAudioEQGain(gain_buf); return 0; } -int CTv::SaveCurAudioEQGain(int gain_buf[]) { +int CTv::SaveCurAudioEQGain(int gain_buf[]) +{ return RealSaveCurAudioEQGain(gain_buf, 1); } -int CTv::RealReadCurAudioEQGain(int gain_buf[]) { +int CTv::RealReadCurAudioEQGain(int gain_buf[]) +{ ArrayCopy(gain_buf, mCurEQGainBuf, GetAudioEQBandCount()); return 0; } -int CTv::RealSaveCurAudioEQGain(int gain_buf[], int sound_mode_judge) { +int CTv::RealSaveCurAudioEQGain(int gain_buf[], int sound_mode_judge) +{ ArrayCopy(mCurEQGainBuf, gain_buf, GetAudioEQBandCount()); ArrayCopy(mCurEQGainChBuf, gain_buf, GetAudioEQBandCount()); SSMSaveAudioEQGain(0, GetAudioEQBandCount(), mCurEQGainChBuf); @@ -6275,7 +6732,8 @@ int CTv::RealSaveCurAudioEQGain(int gain_buf[], int sound_mode_judge) { return 0; } -int CTv::LoadCurAudioEQGain() { +int CTv::LoadCurAudioEQGain() +{ int i = 0; SSMReadAudioEQGain(0, GetAudioEQBandCount(), mCurEQGainChBuf); @@ -6289,40 +6747,48 @@ int CTv::LoadCurAudioEQGain() { return 0; } -int CTv::SetAudioEQSwitch(int switch_val) { +int CTv::SetAudioEQSwitch(int switch_val) +{ return mAudioEffect.SetEQSwitch(switch_val); } -int CTv::SetDbxTvMode(int mode, int son_value, int vol_value, int sur_value) { +int CTv::SetDbxTvMode(int mode, int son_value, int vol_value, int sur_value) +{ return mAudioEffect.DbxTv_SetMode(mode, son_value, vol_value, sur_value); } -int CTv::GetBassUIMinGainVal() { +int CTv::GetBassUIMinGainVal() +{ return 0; } -int CTv::GetBassUIMaxGainVal() { +int CTv::GetBassUIMaxGainVal() +{ return 100; } -int CTv::GetTrebleUIMinGainVal() { +int CTv::GetTrebleUIMinGainVal() +{ return 0; } -int CTv::GetTrebleUIMaxGainVal() { +int CTv::GetTrebleUIMaxGainVal() +{ return 100; } -int CTv::MappingLine(int map_val, int src_min, int src_max, int dst_min, int dst_max) { +int CTv::MappingLine(int map_val, int src_min, int src_max, int dst_min, int dst_max) +{ if (dst_min < 0) { return (map_val - (src_max + src_min) / 2) * (dst_max - dst_min) - / (src_max - src_min); + / (src_max - src_min); } else { return (map_val - src_min) * (dst_max - dst_min) / (src_max - src_min); } } -int CTv::MappingTrebleBassAndEqualizer(int tmp_vol, int direct, int tb_min, int tb_max) { +int CTv::MappingTrebleBassAndEqualizer(int tmp_vol, int direct, int tb_min, int tb_max) +{ int tmp_ret = 0; if (direct == 0) { @@ -6332,12 +6798,13 @@ int CTv::MappingTrebleBassAndEqualizer(int tmp_vol, int direct, int tb_min, int } LOGD("%s, tmp_vol = %d, direct = %d, tmp_ret = %d\n", __FUNCTION__, tmp_vol, - direct, tmp_ret); + direct, tmp_ret); return tmp_ret; } -int CTv::MappingEQGain(int src_gain_buf[], int dst_gain_buf[], int direct) { +int CTv::MappingEQGain(int src_gain_buf[], int dst_gain_buf[], int direct) +{ int i = 0; int nMinUIVal = 0, nMaxUIVal = 0, nMinVal = 0, nMaxVal = 0; @@ -6354,17 +6821,18 @@ int CTv::MappingEQGain(int src_gain_buf[], int dst_gain_buf[], int direct) { for (i = 0; i < GetAudioEQBandCount(); i++) { if (direct == 0) { dst_gain_buf[i] = MappingLine(src_gain_buf[i], nMinUIVal, - nMaxUIVal, nMinVal, nMaxVal); + nMaxUIVal, nMinVal, nMaxVal); } else { dst_gain_buf[i] = MappingLine(src_gain_buf[i], nMinVal, nMaxVal, - nMinUIVal, nMaxUIVal); + nMinUIVal, nMaxUIVal); } } } return 0; } -int CTv::RestoreToAudioDefEQGain(int gain_buf[]) { +int CTv::RestoreToAudioDefEQGain(int gain_buf[]) +{ int i = 0; for (i = 0; i < GetAudioEQBandCount(); i++) { @@ -6381,12 +6849,14 @@ int CTv::RestoreToAudioDefEQGain(int gain_buf[]) { return 0; } -int CTv::GetCustomEQGain(int gain_buf[]) { +int CTv::GetCustomEQGain(int gain_buf[]) +{ ArrayCopy(gain_buf, mCustomEQGainBuf, GetAudioEQBandCount()); return 0; } -int CTv::SetCustomEQGain() { +int CTv::SetCustomEQGain() +{ int tmpEQGainBuf[128] = { 0 }; if (MappingEQGain(mCustomEQGainBuf, tmpEQGainBuf, 0) < 0) { @@ -6396,7 +6866,8 @@ int CTv::SetCustomEQGain() { return RealSetEQGain(tmpEQGainBuf); } -int CTv::AudioSetEQGain(int gain_buf[]) { +int CTv::AudioSetEQGain(int gain_buf[]) +{ int tmpEQGainBuf[128] = { 0 }; ArrayCopy(mCustomEQGainBuf, gain_buf, GetAudioEQBandCount()); @@ -6408,7 +6879,8 @@ int CTv::AudioSetEQGain(int gain_buf[]) { return RealSetEQGain(tmpEQGainBuf); } -int CTv::handleEQGainBeforeSet(int src_buf[], int dst_buf[]) { +int CTv::handleEQGainBeforeSet(int src_buf[], int dst_buf[]) +{ int i = 0, nMinGain, nMaxGain; nMinGain = CC_MIN_EQ_GAIN_VAL; @@ -6435,7 +6907,8 @@ int CTv::handleEQGainBeforeSet(int src_buf[], int dst_buf[]) { return 0; } -int CTv::RealSetEQGain(int gain_buf[]) { +int CTv::RealSetEQGain(int gain_buf[]) +{ if (GetAudioWallEffect() == CC_SWITCH_ON && GetAudioWallEffectTypeCfg() == 0) { for (int i = 0; i < GetAudioEQBandCount(); i++) { gain_buf[i] = mWallEffectValueBuf[i] + gain_buf[i]; @@ -6454,14 +6927,16 @@ int CTv::RealSetEQGain(int gain_buf[]) { return 0; } -int CTv::SetAtvInGain(int gain_val) { +int CTv::SetAtvInGain(int gain_val) +{ char set_str[32] = {0}; sprintf ( set_str, "audio_gain_set %x", gain_val ); return SetFileAttrValue ( "/sys/class/amlatvdemod/atvdemod_debug", set_str ); } -int CTv::SetSpecialModeEQGain(int tmp_val) { +int CTv::SetSpecialModeEQGain(int tmp_val) +{ int i = 0; int tmpEQPresetBufPtr[24]; if (GetAudioEQPresetBufferPtr(tmpEQPresetBufPtr) != 0) { @@ -6473,15 +6948,16 @@ int CTv::SetSpecialModeEQGain(int tmp_val) { RealReadCurAudioEQGain(tmpEQGainBuf); } else { ArrayCopy(tmpEQGainBuf, - tmpEQPresetBufPtr + tmp_val * GetAudioEQBandCount(), - GetAudioEQBandCount()); + tmpEQPresetBufPtr + tmp_val * GetAudioEQBandCount(), + GetAudioEQBandCount()); } AudioSetEQGain(tmpEQGainBuf); return tmp_val; } -int CTv::SetSpecialIndexEQGain(int buf_index, int w_val) { +int CTv::SetSpecialIndexEQGain(int buf_index, int w_val) +{ int tmpEQGainBuf[128] = { 0 }; if (buf_index >= 0 && buf_index < GetAudioEQBandCount()) { @@ -6493,7 +6969,8 @@ int CTv::SetSpecialIndexEQGain(int buf_index, int w_val) { return -1; } -int CTv::SaveSpecialIndexEQGain(int buf_index, int w_val) { +int CTv::SaveSpecialIndexEQGain(int buf_index, int w_val) +{ int tmpEQGainBuf[128] = { 0 }; if (buf_index >= 0 && buf_index < GetAudioEQBandCount()) { @@ -6507,21 +6984,25 @@ int CTv::SaveSpecialIndexEQGain(int buf_index, int w_val) { } // amAudio -int CTv::OpenAmAudio(unsigned int sr, int input_device, int output_device) { +int CTv::OpenAmAudio(unsigned int sr, int input_device, int output_device) +{ LOGD("OpenAmAudio input_device = %d", input_device); return amAudioOpen(sr, input_device, output_device); } -int CTv::CloseAmAudio(void) { +int CTv::CloseAmAudio(void) +{ return amAudioClose(); } -int CTv::SetAmAudioInputSr(unsigned int sr, int output_device) { +int CTv::SetAmAudioInputSr(unsigned int sr, int output_device) +{ LOGD("SetAmAudioInputSr "); return amAudioSetInputSr(sr, CC_IN_USE_SPDIF_DEVICE, output_device); } -int CTv::SetAmAudioOutputMode(int mode) { +int CTv::SetAmAudioOutputMode(int mode) +{ if (mode != CC_AMAUDIO_OUT_MODE_DIRECT && mode != CC_AMAUDIO_OUT_MODE_INTER_MIX && mode != CC_AMAUDIO_OUT_MODE_DIRECT_MIX) { LOGE("%s, mode error, it should be mix or direct!\n", __FUNCTION__); @@ -6531,28 +7012,34 @@ int CTv::SetAmAudioOutputMode(int mode) { return amAudioSetOutputMode(mode); } -int CTv::SetAmAudioMusicGain(int gain) { +int CTv::SetAmAudioMusicGain(int gain) +{ return amAudioSetMusicGain(gain); } -int CTv::SetAmAudioLeftGain(int gain) { +int CTv::SetAmAudioLeftGain(int gain) +{ return amAudioSetLeftGain(gain); } -int CTv::SetAmAudioRightGain(int gain) { +int CTv::SetAmAudioRightGain(int gain) +{ return amAudioSetRightGain(gain); } -int CTv::SetAudioDumpDataFlag(int tmp_flag) { +int CTv::SetAudioDumpDataFlag(int tmp_flag) +{ return amAudioSetDumpDataFlag(tmp_flag); } -int GetAudioDumpDataFlag() { +int GetAudioDumpDataFlag() +{ return amAudioGetDumpDataFlag(); } static int RealCalVolDigitLUTBuf(int start_ind, int end_ind, int start_val, - int end_val, int lut_buf[]) { + int end_val, int lut_buf[]) +{ int i = 0; float tmp_step = 0; @@ -6570,7 +7057,8 @@ static int RealCalVolDigitLUTBuf(int start_ind, int end_ind, int start_val, return 1; } -void CTv::AudioSetVolumeDigitLUTBuf(int lut_table_index, int *MainVolLutBuf) { +void CTv::AudioSetVolumeDigitLUTBuf(int lut_table_index, int *MainVolLutBuf) +{ int tmpDefDigitLutBuf[CC_LUT_BUF_SIZE] = { 0 }; mAudioAlsa.SetMainVolDigitLutBuf(MainVolLutBuf); @@ -6578,7 +7066,8 @@ void CTv::AudioSetVolumeDigitLUTBuf(int lut_table_index, int *MainVolLutBuf) { mAudioAlsa.SetSupperBassVolDigitLutBuf(tmpDefDigitLutBuf); } -int CTv::InitTvAudio(int sr, int input_device) { +int CTv::InitTvAudio(int sr, int input_device) +{ OpenAmAudio(sr, input_device, CC_OUT_USE_AMAUDIO); RefreshSrsEffectAndDacGain(); @@ -6586,11 +7075,13 @@ int CTv::InitTvAudio(int sr, int input_device) { return 0; } -int CTv::UnInitTvAudio() { +int CTv::UnInitTvAudio() +{ return CloseAmAudio(); } -int CTv::AudioChangeSampleRate(int sr) { +int CTv::AudioChangeSampleRate(int sr) +{ sr = HanldeAudioInputSr(sr); if (SetAmAudioInputSr(sr, CC_OUT_USE_AMAUDIO) != 0) { @@ -6602,11 +7093,13 @@ int CTv::AudioChangeSampleRate(int sr) { return 0; } -int CTv::AudioSetAudioInSource(int audio_src_in_type) { +int CTv::AudioSetAudioInSource(int audio_src_in_type) +{ return mAudioAlsa.SetAudioInSource(audio_src_in_type); } -int CTv::AudioSetAudioSourceType(int source_type) { +int CTv::AudioSetAudioSourceType(int source_type) +{ int aud_arch_type = GetAudioArchitectureTypeCFG(); if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_ON_BOARD) { @@ -6619,13 +7112,15 @@ int CTv::AudioSetAudioSourceType(int source_type) { return 0; } -int CTv::AudioLineInSelectChannel(int audio_channel) { +int CTv::AudioLineInSelectChannel(int audio_channel) +{ LOGD ("%s, audio_channel = %d", __FUNCTION__, audio_channel); mAudioAlsa.SetInternalDacLineInSelectChannel(audio_channel); return 0; } -int CTv::SetKalaokIO(int level) { +int CTv::SetKalaokIO(int level) +{ LOGD ("%s, SetKalaokIO = %d", __FUNCTION__, level); if (GetKaraokAvEnable() == 1) { mAudioAlsa.SetAudioSwitchIO(level); @@ -6633,12 +7128,14 @@ int CTv::SetKalaokIO(int level) { return 0; } -int CTv::AudioSetLineInCaptureVolume(int l_vol, int r_vol) { +int CTv::AudioSetLineInCaptureVolume(int l_vol, int r_vol) +{ mAudioAlsa.SetInternalDacLineInCaptureVolume(l_vol, r_vol); return 0; } -int CTv::openTvAudio() { +int CTv::openTvAudio() +{ int tmp_val = 0; LOGD("%s, entering...\n", __FUNCTION__); @@ -6660,11 +7157,13 @@ int CTv::openTvAudio() { return 0; } -int CTv::closeTvAudio() { +int CTv::closeTvAudio() +{ return 0; } -void CTv::LoadAudioCtl() { +void CTv::LoadAudioCtl() +{ // Get Current Audio Volume LoadCurAudioMasterVolume(); @@ -6709,7 +7208,8 @@ void CTv::LoadAudioCtl() { LoadCurAudioEQGain(); } -void CTv::InitSetAudioCtl() { +void CTv::InitSetAudioCtl() +{ // Set Current Audio balance value SetAudioBalance(GetAudioBalance()); @@ -6729,19 +7229,23 @@ void CTv::InitSetAudioCtl() { SetAudioSPDIFMode(GetCurAudioSPDIFMode()); } -int CTv::SetADC_Digital_Capture_Volume(int value) { +int CTv::SetADC_Digital_Capture_Volume(int value) +{ return mAudioAlsa.SetAudioInternalDacADCDigitalCaptureVolume( value, value); } -int CTv::SetPGA_IN_Value(int value) { +int CTv::SetPGA_IN_Value(int value) +{ return mAudioAlsa.SetAudioInternalDacPGAInGain( value, value); } -int CTv::SetDAC_Digital_PlayBack_Volume(int value) { +int CTv::SetDAC_Digital_PlayBack_Volume(int value) +{ return mAudioAlsa.SetAudioInternalDacDACDigitalPlayBackVolume( value, value); } -int CTv::setAudioPcmPlaybackVolume(int val) { +int CTv::setAudioPcmPlaybackVolume(int val) +{ int pcm_volume = 0; pcm_volume = val / 2; if (pcm_volume > 24) pcm_volume = 24; @@ -6749,7 +7253,8 @@ int CTv::setAudioPcmPlaybackVolume(int val) { return 0; } -int CTv::HanldeAudioInputSr(unsigned int sr) { +int CTv::HanldeAudioInputSr(unsigned int sr) +{ int tmp_cfg = 0; tmp_cfg = GetAudioResampleTypeCFG(); @@ -6766,7 +7271,8 @@ int CTv::HanldeAudioInputSr(unsigned int sr) { return sr; } -int CTv::AudioSSMRestoreDefaultSetting() { +int CTv::AudioSSMRestoreDefaultSetting() +{ int i = 0, tmp_val = 0; int nMinUIVol = 0, nMaxUIVol = 0; int *tmp_ptr = NULL; @@ -6829,7 +7335,8 @@ int CTv::AudioSSMRestoreDefaultSetting() { static const char *gDefCapturePropName = "snd.card.default.card.capture"; -int CTv::InitSetTvAudioCard() { +int CTv::InitSetTvAudioCard() +{ int i = 0, totle_num = 0, capture_ind = 0; char tmp_buf[32] = { 0 }; char tv_card_name[64] = { 0 }; @@ -6877,7 +7384,8 @@ int CTv::InitSetTvAudioCard() { return 0; } -int CTv::UnInitSetTvAudioCard() { +int CTv::UnInitSetTvAudioCard() +{ char tmp_buf[32] = { 0 }; #ifndef BOARD_ALSA_AUDIO_TINY @@ -6891,7 +7399,8 @@ int CTv::UnInitSetTvAudioCard() { #define CS_SPDIF_MODE_DEV_PATH "/sys/class/audiodsp/digital_raw" -int CTv::SetSPDIFMode(int mode_val) { +int CTv::SetSPDIFMode(int mode_val) +{ FILE *spdif_mode_fp = NULL; spdif_mode_fp = fopen(CS_SPDIF_MODE_DEV_PATH, "w"); @@ -6912,7 +7421,8 @@ int CTv::SetSPDIFMode(int mode_val) { return 0; } -int CTv::SwitchAVOutBypass(int sw) { +int CTv::SwitchAVOutBypass(int sw) +{ if (sw == 0 ) { mAudioAlsa.SetMixerBypassSwitch ( CC_SWITCH_OFF ); mAudioAlsa.SetMixerDacSwitch ( CC_SWITCH_ON ); @@ -6923,15 +7433,18 @@ int CTv::SwitchAVOutBypass(int sw) { return 0; } -int CTv::SetAudioSwitchIO(int value) { +int CTv::SetAudioSwitchIO(int value) +{ return mAudioAlsa.SetAudioSwitchIO( value); } -int CTv::SetOutput_Swap(int value) { +int CTv::SetOutput_Swap(int value) +{ return mAudioAlsa.SetOutput_Swap( value); } -int CTv::SendCmdToOffBoardFBCExternalDac(int cmd, int para) { +int CTv::SendCmdToOffBoardFBCExternalDac(int cmd, int para) +{ int set_val = 0; CFbcCommunication *pFBC = GetSingletonFBC(); if (pFBC != NULL) { @@ -6959,7 +7472,8 @@ int CTv::SendCmdToOffBoardFBCExternalDac(int cmd, int para) { return 0; } -int CTv::GetHdmiAvHotplugDetectOnoff() { +int CTv::GetHdmiAvHotplugDetectOnoff() +{ return m_hdmiav_hotplugdetect_en; } diff --git a/tvapi/libtv/tv/CTv.h b/tvapi/libtv/tv/CTv.h index 2520962..d4c65f0 100644 --- a/tvapi/libtv/tv/CTv.h +++ b/tvapi/libtv/tv/CTv.h @@ -55,765 +55,765 @@ static const char *TV_SSM_DATA_PARAM_PATH = "/param/ssm_data"; typedef enum tv_fmt_ratio_e { - RATIO_43, - RATIO_169, - RATIO_MAX, + RATIO_43, + RATIO_169, + RATIO_MAX, } tv_fmt_ratio_t; typedef enum tv_color_fmt_e { - COLOR_RGB444, - COLOR_YUV422, - COLOR_YUV444, - COLOR_MAX, + COLOR_RGB444, + COLOR_YUV422, + COLOR_YUV444, + COLOR_MAX, } tv_color_fmt_t; typedef enum tv_window_mode_e { - NORMAL_WONDOW, - PREVIEW_WONDOW, + NORMAL_WONDOW, + PREVIEW_WONDOW, } tv_window_mode_t; typedef enum tv_dtv_scan_running_status_e { - DTV_SCAN_RUNNING_NORMAL, - DTV_SCAN_RUNNING_ANALYZE_CHANNEL, + DTV_SCAN_RUNNING_NORMAL, + DTV_SCAN_RUNNING_ANALYZE_CHANNEL, } tv_dtv_scan_running_status_t; typedef struct tv_config_s { - bool kernelpet_disable; - unsigned int kernelpet_timeout; - bool userpet; - unsigned int userpet_timeout; - unsigned int userpet_reset; - bool memory512m; + bool kernelpet_disable; + unsigned int kernelpet_timeout; + bool userpet; + unsigned int userpet_timeout; + unsigned int userpet_reset; + bool memory512m; } tv_config_t; typedef enum TvRunStatus_s { - TV_INIT_ED = -1, - TV_OPEN_ED = 0, - TV_START_ED , - TV_RESUME_ED, - TV_PAUSE_ED, - TV_STOP_ED, - TV_CLOSE_ED, + TV_INIT_ED = -1, + TV_OPEN_ED = 0, + TV_START_ED , + TV_RESUME_ED, + TV_PAUSE_ED, + TV_STOP_ED, + TV_CLOSE_ED, } TvRunStatus_t; -class CTv : public CTvin::CTvinSigDetect::ISigDetectObserver, public CSourceConnectDetect::ISourceConnectObserver, public CTvin::CHDMIRxCEC::IHDMIRxCECObserver, public CUpgradeFBC::IUpgradeFBCObserver, public CSerialCommunication::ISerialCommunicationObserver, public CTvSubtitle::IObserver,public CTv2d4GHeadSetDetect::IHeadSetObserver{ +class CTv : public CTvin::CTvinSigDetect::ISigDetectObserver, public CSourceConnectDetect::ISourceConnectObserver, public CTvin::CHDMIRxCEC::IHDMIRxCECObserver, public CUpgradeFBC::IUpgradeFBCObserver, public CSerialCommunication::ISerialCommunicationObserver, public CTvSubtitle::IObserver, public CTv2d4GHeadSetDetect::IHeadSetObserver { public: - static const int TV_ACTION_NULL = 0x0000; - static const int TV_ACTION_STARTING = 0x0001; - static const int TV_ACTION_STOPING = 0x0002; - static const int TV_ACTION_SCANNING = 0x0004; - static const int TV_ACTION_PLAYING = 0x0008; - static const int TV_ACTION_RECORDING = 0x0010; - static const int TV_ACTION_SOURCE_SWITCHING = 0x0020; + static const int TV_ACTION_NULL = 0x0000; + static const int TV_ACTION_STARTING = 0x0001; + static const int TV_ACTION_STOPING = 0x0002; + static const int TV_ACTION_SCANNING = 0x0004; + static const int TV_ACTION_PLAYING = 0x0008; + static const int TV_ACTION_RECORDING = 0x0010; + static const int TV_ACTION_SOURCE_SWITCHING = 0x0020; public: - class TvIObserver { - public: - TvIObserver() {}; - virtual ~TvIObserver() {}; - virtual void onTvEvent ( const CTvEv &ev ) = 0; - }; - //main - CTv(); - virtual ~CTv(); - virtual int OpenTv ( void ); - virtual int CloseTv ( void ); - virtual int StartTvLock (); - virtual int StopTvLock ( void ); - virtual int DoSuspend(int type); - virtual int DoResume(int type); - virtual int DoInstabootSuspend(); - virtual int DoInstabootResume(); - virtual TvRunStatus_t GetTvStatus(); - virtual int ClearAnalogFrontEnd(); - virtual tv_source_input_t GetLastSourceInput (void); - virtual int SetSourceSwitchInput (tv_source_input_t source_input ); - virtual tv_source_input_t GetCurrentSourceInputLock ( void ); - virtual tvin_info_t GetCurrentSignalInfo ( void ); - virtual int SetPreviewWindow ( tvin_window_pos_t pos ); - virtual int dtvAutoScan(); - virtual int dtvManualScan (int beginFreq, int endFreq, int modulation = -1); - virtual int atvAutoScan(int videoStd, int audioStd, int searchType); - virtual int clearAllProgram(int arg0); - virtual int clearDbAllProgramInfoTable(); - virtual void setSourceSwitchAndPlay(); - virtual int GetDisplayResolutionConfig(); - virtual int GetDisplayResolutionInfo(); - virtual int atvMunualScan ( int startFreq, int endFreq, int videoStd, int audioStd, int store_Type = 0, int channel_num = 0 ); - virtual int stopScanLock(); - virtual int dtvAutoScanAtscLock(int attenna, int videoStd, int audioStd); - virtual void SetRecordFileName ( char *name ); - virtual void StartToRecord(); - virtual void StopRecording(); - virtual void SetRecCurTsOrCurProgram ( int sel ); - virtual int startCC(int country, int src, int channel, int service); - virtual int stopCC(); - virtual void printDebugInfo(); - virtual int playProgramLock ( int progId ); - virtual int playDvbcProgram ( int progId ); - virtual int playDtmbProgram ( int progId ); - virtual int playAtvProgram ( int, int, int, int, int); - virtual int playDtvProgram ( int, int, int, int, int, int, int, int, int, int); - virtual int stopPlayingLock(); - virtual int resetFrontEndPara ( frontend_para_set_t feParms ); - virtual int SetDisplayMode ( vpp_display_mode_t display_mode, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt ); - virtual void startAutoBackLight(); - virtual void stopAutoBackLight(); - virtual const char *getPqDbPath(); - virtual void onHdmiSrChanged(int sr, bool bInit); - virtual void onHMDIAudioStatusChanged(int status); - virtual int GetATVAFCType(); - virtual int GetATVSourceTimerSwitch(); - int SetCurProgramAudioVolumeCompensationVal ( int tmpVal ); - int GetAudioVolumeCompensationVal(int progDbId); - //dtv audio track info - int getAudioTrackNum ( int progId ); - int getAudioInfoByIndex ( int progId, int idx, int *pAFmt, String8 &lang ); - int switchAudioTrack ( int progId, int idx ); - int switchAudioTrack ( int aPid, int aFmt, int aParam ); - int getVideoFormatInfo ( int *pWidth, int *pHeight, int *pFPS, int *pInterlace ); - int ResetAudioDecoderForPCMOutput(); - int setAudioChannel ( int channelIdx ); - int getAudioChannel(); - int setTvObserver (TvIObserver *ob); - int getAtscAttenna(); - long getTvTime() - { - return mTvTime.getTime(); - }; - void getFrontendStatus(); - int getFrontendSignalStrength(); - int getFrontendSNR(); - int getFrontendBER(); - int getChannelInfoBydbID ( int dbID, channel_info_t &chan_info ); - int setBlackoutEnable(int enable); - int getSaveBlackoutEnable(); - int getAutoBackLight_on_off(); - int saveATVProgramID ( int dbID ); - int getATVProgramID ( void ); - int saveDTVProgramID ( int dbID ); - int getDTVProgramID ( void ); - int getCurPlayProgId(); - int getATVMinMaxFreq ( int *scanMinFreq, int *scanMaxFreq ); - int getAverageLuma(); - int setAutobacklightData(const char* value); - int getAutoBacklightData(int* data); - - virtual int Tv_SSMRestoreDefaultSetting(); - - // - int GetSourceConnectStatus(tv_source_input_t source_input); - int IsDVISignal(); - int isVgaFmtInHdmi(); - int isSDFmtInHdmi ( void ); - // - int getHDMIFrameRate ( void ); - void RefreshAudioMasterVolume ( tv_source_input_t source_input ); - - int Tv_Set3DMode ( VIDEO_3D_MODE_T mode ); - VIDEO_3D_MODE_T Tv_Get3DMode ( void ); - int Tv_Set3DLRSwith ( int on_off); - int Tv_Get3DLRSwith ( void ); - int Tv_Set3DTo2DMode ( int mode); - int Tv_Get3DTo2DMode ( void ); - int Tv_Set3DDepth ( int value ); - int GetSave3DDepth ( void ); - is_3d_type_t Check2Dor3D ( VIDEO_3D_MODE_T mode3d, tvin_trans_fmt_t trans_fmt ); - int Tvin_SetPLLValues (); - int SetCVD2Values (); - unsigned int Vpp_GetDisplayResolutionInfo(tvin_window_pos_t *win_pos); - int get_hdmi_sampling_rate(); - //SSM - virtual int Tv_SSMFacRestoreDefaultSetting(); - int Tv_GetHistgram(int *histgram_buf); - int StartHeadSetDetect(); - virtual void onHeadSetDetect(int state,int para); - - CTvin::CTvinSigDetect mSigDetectThread; - CSourceConnectDetect mSourceConnectDetectThread; - CTvin::CHDMIRxCEC mHDMIRxCEC; - CUpgradeFBC *mpUpgradeFBC; - CSerialCommunication mSerialA; - CSerialCommunication mSerialB; - CSerialCommunication mSerialC; - CTvSubtitle mSubtitle; - CTv2d4GHeadSetDetect mHeadSet; - - int SendHDMIRxCECCustomMessage(unsigned char data_buf[]); - int SendHDMIRxCECCustomMessageAndWaitReply(unsigned char data_buf[], unsigned char reply_buf[], int WaitCmd, int timeout); - int SendHDMIRxCECBoradcastStandbyMessage(); - int SendHDMIRxCECGiveCECVersionMessage(tv_source_input_t source_input, unsigned char data_buf[]); - int SendHDMIRxCECGiveDeviceVendorIDMessage(tv_source_input_t source_input, unsigned char data_buf[]); - int SendHDMIRxCECGiveOSDNameMessage(tv_source_input_t source_input, unsigned char data_buf[]); - - int GetHdmiHdcpKeyKsvInfo(int data_buf[]); - virtual bool hdmiOutWithFbc(); - int StartUpgradeFBC(char *file_name, int mode, int upgrade_blk_size); - int SetSerialSwitch(int dev_id, int switch_val); - int SendSerialData(int dev_id, int data_len, unsigned char data_buf[]); - int SetDebugSerialOnOff(int on_off); - int GetDebugSerialOnOff(); - int ChannelExport(const char *destPath); - int ChannelImport(const char *srcPath); - int Tv_GetProjectInfo(project_info_t *ptrInfo); - int Tv_GetPlatformType(); - int Tv_HandeHDMIEDIDFilePathConfig(); - int Tv_SetDDDRCMode(tv_source_input_t source_input); - int Tv_SetAudioSourceType (tv_source_input_t source_input); - - //PQ - virtual int Tv_SetBrightness ( int brightness, tv_source_input_type_t source_type, int is_save ); - virtual int Tv_GetBrightness ( tv_source_input_type_t source_type ); - virtual int Tv_SaveBrightness ( int brightness, tv_source_input_type_t source_type ); - virtual int Tv_SetContrast ( int contrast, tv_source_input_type_t source_type, int is_save ); - virtual int Tv_GetContrast ( tv_source_input_type_t source_type ); - virtual int Tv_SaveContrast ( int contrast, tv_source_input_type_t source_type ); - virtual int Tv_SetSaturation ( int satuation, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, int is_save ); - virtual int Tv_GetSaturation ( tv_source_input_type_t source_type ); - virtual int Tv_SaveSaturation ( int satuation, tv_source_input_type_t source_type ); - virtual int Tv_SetHue ( int hue, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, int is_save ); - virtual int Tv_GetHue ( tv_source_input_type_t source_type ); - virtual int Tv_SaveHue ( int hue, tv_source_input_type_t source_type ); - virtual int Tv_SetPQMode ( vpp_picture_mode_t mode, tv_source_input_type_t source_type, int is_save ); - virtual vpp_picture_mode_t Tv_GetPQMode ( tv_source_input_type_t source_type ); - virtual int Tv_SavePQMode ( vpp_picture_mode_t mode, tv_source_input_type_t source_type ); - virtual int Tv_SetSharpness ( int value, tv_source_input_type_t source_type, int en, int is_save ); - virtual int Tv_GetSharpness ( tv_source_input_type_t source_type ); - virtual int Tv_SaveSharpness ( int value, tv_source_input_type_t source_type ); - virtual int Tv_SetBacklight ( int value, tv_source_input_type_t source_type, int is_save ); - virtual int Tv_GetBacklight ( tv_source_input_type_t source_type ); - virtual int Tv_SaveBacklight ( int value, tv_source_input_type_t source_type ); - int Tv_SetBacklight_Switch ( int value ); - int Tv_GetBacklight_Switch ( void ); - int Tv_SetColorTemperature ( vpp_color_temperature_mode_t mode, tv_source_input_type_t source_type, int is_save ); - vpp_color_temperature_mode_t Tv_GetColorTemperature ( tv_source_input_type_t source_type ); - virtual int Tv_SetDisplayMode ( vpp_display_mode_t mode, tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, int is_save ); - virtual int Tv_SaveDisplayMode ( vpp_display_mode_t mode, tv_source_input_type_t source_type ); - virtual int Tv_SaveColorTemperature ( vpp_color_temperature_mode_t mode, tv_source_input_type_t source_type ); - virtual vpp_display_mode_t Tv_GetDisplayMode ( tv_source_input_type_t source_type ); - virtual int Tv_SetNoiseReductionMode ( vpp_noise_reduction_mode_t mode, tv_source_input_type_t source_type, int is_save ); - virtual vpp_noise_reduction_mode_t Tv_GetNoiseReductionMode ( tv_source_input_type_t source_type ); - virtual int Tv_SaveNoiseReductionMode ( vpp_noise_reduction_mode_t mode, tv_source_input_type_t source_type ); - int Tv_SetSplitScreenDemoStatus(tv_source_input_type_t source_type, int onoff_status); - int Tv_GetSplitScreenDemoStatus(tv_source_input_type_t source_type); - int Tv_SplitScreenEffect(int mode, int width, int reverse = 0); - // - int Tv_FactorySetPQMode_Brightness ( int source_type, int pq_mode, int brightness ); - int Tv_FactoryGetPQMode_Brightness ( int source_type, int pq_mode ); - int Tv_FactorySetPQMode_Contrast ( int source_type, int pq_mode, int contrast ); - int Tv_FactoryGetPQMode_Contrast ( int source_type, int pq_mode ); - int Tv_FactorySetPQMode_Saturation ( int source_type, int pq_mode, int saturation ); - int Tv_FactoryGetPQMode_Saturation ( int source_type, int pq_mode ); - int Tv_FactorySetPQMode_Hue ( int source_type, int pq_mode, int hue ); - int Tv_FactoryGetPQMode_Hue ( int source_type, int pq_mode ); - int Tv_FactorySetPQMode_Sharpness ( int source_type, int pq_mode, int sharpness ); - int Tv_FactoryGetPQMode_Sharpness ( int source_type, int pq_mode ); - - int GetColorTemperatureParams ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ); - int Tv_FactorySetTestPattern ( int pattern ); - int Tv_FactoryGetTestPattern ( void ); - int Tv_FactorySetScreenColor ( int vdin_blending_mask, int y, int u, int v ); - int Tv_FactoryResetPQMode ( void ); - int Tv_FactoryResetColorTemp ( void ); - int Tv_FactorySetParamsDefault ( void ); - int Tv_FactorySetDDRSSC ( int step ); - int Tv_FactoryGetDDRSSC ( void ); - int Tv_FactorySetLVDSSSC ( int step ); - int Tv_FactoryGetLVDSSSC ( void ); - void Tv_Spread_Spectrum(void); - int Tv_FactorySetNolineParams ( int noline_params_type, int source_type, noline_params_t noline_params ); - noline_params_t Tv_FactoryGetNolineParams ( int noline_params_type, int source_type ); - int Tv_FactorySetOverscan ( int source_type, int fmt, int status_3d, int trans_fmt, tvin_cutwin_t cutwin_t ); - tvin_cutwin_t Tv_FactoryGetOverscan ( int source_type, int fmt, int status_3d, int trans_fmt ); - int Tv_ReplacePqDb(const char *newFilePath = NULL); - //end PQ - - //TV TO FBC - int Tv_FactorySet_FBC_Brightness ( int value ); - int Tv_FactoryGet_FBC_Brightness ( void ); - int Tv_FactorySet_FBC_Contrast( int value ); - int Tv_FactoryGet_FBC_Contrast ( void ); - int Tv_FactorySet_FBC_Saturation( int value ); - int Tv_FactoryGet_FBC_Saturation ( void ); - int Tv_FactorySet_FBC_HueColorTint( int value ); - int Tv_FactoryGet_FBC_HueColorTint ( void ); - virtual int Tv_FactorySet_FBC_Backlight ( int value ); - virtual int Tv_FactoryGet_FBC_Backlight ( void ); - int Tv_FactorySet_FBC_Backlight_N360 ( int value ); - int Tv_FactoryGet_FBC_Backlight_N360 ( void ); - int Tv_FactorySet_FBC_ELEC_MODE( int value ); - int Tv_FactoryGet_FBC_ELEC_MODE( void ); - int Tv_FactorySet_FBC_BACKLIGHT_N360( int value ); - int Tv_FactoryGet_FBC_BACKLIGHT_N360( void ); - int Tv_FactorySet_FBC_Picture_Mode ( int mode ); - int Tv_FactoryGet_FBC_Picture_Mode ( void ); - int Tv_FactorySet_FBC_Set_Test_Pattern ( int mode ); - int Tv_FactoryGet_FBC_Get_Test_Pattern ( void ); - int Tv_FactorySet_FBC_Gain_Red( int value ); - int Tv_FactoryGet_FBC_Gain_Red ( void ); - int Tv_FactorySet_FBC_Gain_Green( int value ); - int Tv_FactoryGet_FBC_Gain_Green( void ); - int Tv_FactorySet_FBC_Gain_Blue( int value ); - int Tv_FactoryGet_FBC_Gain_Blue ( void ); - int Tv_FactorySet_FBC_Offset_Red( int value ); - int Tv_FactoryGet_FBC_Offset_Red ( void ); - int Tv_FactorySet_FBC_Offset_Green( int value ); - int Tv_FactoryGet_FBC_Offset_Green( void ); - int Tv_FactorySet_FBC_Offset_Blue( int value ); - int Tv_FactoryGet_FBC_Offset_Blue ( void ); - int Tv_FactoryGetWhiteBalanceRedGain(int source_type, int colortemp_mode); - int Tv_FactoryGetWhiteBalanceGreenGain(int source_type, int colortemp_mode); - int Tv_FactoryGetWhiteBalanceBlueGain(int source_type, int colortemp_mode); - int Tv_FactoryGetWhiteBalanceRedOffset(int source_type, int colortemp_mode); - int Tv_FactoryGetWhiteBalanceGreenOffset(int source_type, int colortemp_mode); - int Tv_FactoryGetWhiteBalanceBlueOffset(int source_type, int colortemp_mode); - int Tv_FactorySetWhiteBalanceRedGain(int source_type, int colortemp_mode, int value); - int Tv_FactorySetWhiteBalanceGreenGain(int source_type, int colortemp_mode, int value); - int Tv_FactorySetWhiteBalanceBlueGain(int source_type, int colortemp_mode, int value); - int Tv_FactorySetWhiteBalanceRedOffset(int source_type, int colortemp_mode, int value); - int Tv_FactorySetWhiteBalanceGreenOffset(int source_type, int colortemp_mode, int value); - int Tv_FactorySetWhiteBalanceBlueOffset(int source_type, int colortemp_mode, int value); - int Tv_FactorySetWhiteBalanceColorTempMode(int source_type, int colortemp_mode, int is_save); - int Tv_FactoryGetWhiteBalanceColorTempMode(int source_type ); - int Tv_FactoryWhiteBalanceFormatInputFbcGainParams(int value); - int Tv_FactoryWhiteBalanceFormatInputFbcOffsetParams(int value); - int Tv_FactoryWhiteBalanceFormatOutputFbcOffsetParams(int value); - int Tv_FactoryWhiteBalanceFormatOutputFbcGainParams(int value); - int Tv_FactorySaveWhiteBalancePramas(int source_type, int tempmode, int r_gain, int g_gain, int b_gain, int r_offset, int g_offset, int b_offset); - int Tv_FactoryCloseWhiteBalanceGrayPattern(); - int Tv_FactoryOpenWhiteBalanceGrayPattern(); - int Tv_FactorySetWhiteBalanceGrayPattern(int value); - int Tv_FactoryGetWhiteBalanceGrayPattern(); - int Tv_FactoryWhiteBalanceColorTempMappingG92Fbc(int Tempmode); - int Tv_FactoryWhiteBalanceColorTempMappingFbc2G9(int Tempmode); - int Tv_FactorySet_FBC_GrayPattern(int value); - int Tv_FactoryOpen_FBC_GrayPattern(); - int Tv_FactoryClose_FBC_GrayPattern(); - int Tv_FactorySet_FBC_ColorTemp_Mode( int mode ); - int Tv_FactoryGet_FBC_ColorTemp_Mode ( void ); - int Tv_FactorySet_FBC_ColorTemp_Mode_N360( int mode ); - int Tv_FactoryGet_FBC_ColorTemp_Mode_N360 ( void ); - int Tv_FactorySet_FBC_LockN_state(int value); - int Tv_FactorySet_FBC_WB_Initial( int status ); - int Tv_FactoryGet_FBC_WB_Initial ( void ); - virtual int Tv_FactorySet_FBC_ColorTemp_Batch(vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params); - virtual int Tv_FactoryGet_FBC_ColorTemp_Batch ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ); - int Tv_FactorySet_WB_G9_To_FBC( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params ); - int Tv_FactoryGet_WB_G9_To_FBC ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ); - int Tv_FactoryGetItemFromBatch(vpp_color_temperature_mode_t colortemp_mode, int item); - int Tv_FactorySet_FBC_CM_OnOff( unsigned char status ); - int Tv_FactoryGet_FBC_CM_OnOff (void); - int Tv_FactorySet_FBC_DNLP_OnOff( unsigned char status ); - int Tv_FactoryGet_FBC_DNLP_OnOff (void); - int Tv_FactorySet_FBC_Gamma_OnOff( unsigned char status ); - int Tv_FactoryGet_FBC_Gamma_OnOff (void); - int Tv_FactorySet_FBC_WhiteBalance_OnOff( unsigned char status ); - int Tv_FactoryGet_FBC_WhiteBalance_OnOff (void); - int Tv_FactorySet_FBC_Thermal_State( int value ); - int Tv_FactorySet_FBC_backlight_onoff(int value); - int Tv_FactoryGet_FBC_backlight_onoff ( void ); - int Tv_FactorySet_FBC_Auto_Backlight_OnOff(unsigned char status); - int Tv_FactoryGet_FBC_Auto_Backlight_OnOff ( void ); - int Tv_FactoryGet_FBC_VIDEO_MUTE ( void ); - int Tv_FactorySet_FBC_LVDS_SSG_Set( int value ); - int Tv_FactorySet_FBC_LightSensor_Status_N310 ( int value ); - int Tv_FactoryGet_FBC_LightSensor_Status_N310 ( void ); - int Tv_FactorySet_FBC_Dream_Panel_Status_N310 ( int value ); - int Tv_FactoryGet_FBC_Dream_Panel_Status_N310 ( void ); - int Tv_FactorySet_FBC_MULT_PQ_Status_N310 ( int value ); - int Tv_FactoryGet_FBC_MULT_PQ_Status_N310 ( void ); - int Tv_FactorySet_FBC_MEMC_Status_N310 ( int value ); - int Tv_FactoryGet_FBC_MEMC_Status_N310 ( void ); - int Tv_FactorySet_FBC_ColorTemp_Mode_N310( int mode ); - int Tv_FactoryGet_FBC_ColorTemp_Mode_N310 ( void ); - virtual int Tv_FactorySet_FBC_Backlight_N310 ( int value ); - virtual int Tv_FactoryGet_FBC_Backlight_N310 ( void ); - int Tv_FactorySet_FBC_Bluetooth_IIS_N310 ( int value ); - int Tv_FactoryGet_FBC_Bluetooth_IIS_N310 ( void ); - int Tv_FactorySet_FBC_Led_N310 ( int val_1, int val_2, int val_3 ); - int Tv_FactorySet_VbyOne_Spread_Spectrum_N311 ( int value ); - int Tv_FactoryGet_VbyOne_Spread_Spectrum_N311 ( void ); - int Tv_FactorySet_FBC_AP_STANDBY_N310 ( int value ); - int Tv_FactoryGet_FBC_AP_STANDBY_N310( void ); - int Tv_FactorySet_Uboot_Stage(int value); - //end TV TO FBC - - int Tv_SetTestPattern(int value); - int Tv_Set2k4k_ScalerUp_Mode ( int value ); - int Tv_Get2k4k_ScalerUp_Mode ( void ); - //audio - virtual int Tv_SetDRC_OnOff(int on_off); - virtual int Tv_GetDRC_OnOff(void); - virtual void updateSubtitle(int, int); - int setSubtitleBuffer(char *); - int initSubtitle(int, int) ; - int lockSubtitle(); - int unlockSubtitle(); - int getSubSwitchStatus(); - int startSubtitle(int dmx_id, int pid, int page_id, int anc_page_id) ; - int stopSubtitle() ; - - //audio - virtual void TvAudioOpen(); - virtual void AudioCtlUninit(); - virtual int SetAudioMuteForSystem(int muteOrUnmute); - virtual int GetAudioMuteForSystem(); - virtual int SetAudioMuteForTv(int muteOrUnmute); - virtual int GetAudioMuteForTv(); - virtual char *GetMainVolLutTableExtraName(); - virtual int SetDbxTvMode(int mode, int son_value, int vol_value, int sur_value); - virtual int GetDbxTvMode(int *mode, int *son_value, int *vol_value, int *sur_value); - int AudioHandleHeadsetPlugIn(); - int AudioHandleHeadsetPullOut(); - int SetAudioAVOutMute(int muteStatus); - int GetAudioAVOutMute(); - int SetAudioSPDIFMute(int muteStatus); - int GetAudioSPDIFMute(); - int SetDacMute(int muteStatus, int mute_type); - int SetAudioI2sMute(int); - int SetAudioMasterVolume(int tmp_vol); - int GetAudioMasterVolume(); - int SaveCurAudioMasterVolume(int tmp_vol); - int GetCurAudioMasterVolume(); - int SetAudioBalance(int tmp_val); - int GetAudioBalance(); - int SaveCurAudioBalance(int tmp_val); - int GetCurAudioBalance(); - int SetAudioSupperBassVolume(int tmp_vol); - int GetAudioSupperBassVolume(); - int SaveCurAudioSupperBassVolume(int tmp_vol); - int GetCurAudioSupperBassVolume(); - int SetAudioSupperBassSwitch(int tmp_val); - int GetAudioSupperBassSwitch(); - int SaveCurAudioSupperBassSwitch(int tmp_val); - int GetCurAudioSupperBassSwitch(); - int SetAudioSRSSurround(int tmp_val); - int GetAudioSRSSurround(); - int SaveCurAudioSrsSurround(int tmp_val); - int GetCurAudioSRSSurround(); - int SetAudioSrsDialogClarity(int tmp_val); - int GetAudioSrsDialogClarity(); - int SaveCurAudioSrsDialogClarity(int tmp_val); - int GetCurAudioSrsDialogClarity(); - int SetAudioSrsTruBass(int tmp_val); - int GetAudioSrsTruBass(); - int SaveCurAudioSrsTruBass(int tmp_val); - int GetCurAudioSrsTruBass(); - int SetAudioSPDIFSwitch(int tmp_val); - int GetCurAudioSPDIFSwitch(); - int SaveCurAudioSPDIFSwitch(int tmp_val); - - //Audio SPDIF Mode - int SetAudioSPDIFMode(int tmp_val); - int GetCurAudioSPDIFMode(); - int SaveCurAudioSPDIFMode(int tmp_val); - int SetAudioBassVolume(int tmp_vol); - int GetAudioBassVolume(); - int SaveCurAudioBassVolume(int tmp_vol); - int GetCurAudioBassVolume(); - int SetAudioTrebleVolume(int tmp_vol); - int GetAudioTrebleVolume(); - int SaveCurAudioTrebleVolume(int tmp_vol); - int GetCurAudioTrebleVolume(); - int SetAudioSoundMode(int tmp_val); - int GetAudioSoundMode(); - int SaveCurAudioSoundMode(int tmp_val); - int GetCurAudioSoundMode(); - int SetAudioWallEffect(int tmp_val); - int GetAudioWallEffect(); - int SaveCurAudioWallEffect(int tmp_val); - int GetCurAudioWallEffect(); - int SetAudioEQMode(int tmp_val); - int GetAudioEQMode(); - int SaveCurAudioEQMode(int tmp_val); - int GetCurAudioEQMode(); - int GetAudioEQRange(int range_buf[]); - int GetAudioEQBandCount(); - int SetAudioEQGain(int gain_buf[]); - int GetAudioEQGain(int gain_buf[]); - int GetCurAudioEQGain(int gain_buf[]); - int SaveCurAudioEQGain(int gain_buf[]); - int SetAudioEQSwitch(int switch_val); - int OpenAmAudio(unsigned int sr, int input_device, int output_device); - int CloseAmAudio(void); - int SetAmAudioInputSr(unsigned int sr, int output_device); - int SetAmAudioOutputMode(int mode); - int SetAmAudioMusicGain(int gain); - int SetAmAudioLeftGain(int gain); - int SetAmAudioRightGain(int gain); - int SetAudioVolumeCompensationVal(int tmp_vol_comp_val); - int AudioLineInSelectChannel(int audio_channel); - int AudioSetLineInCaptureVolume(int l_vol, int r_vol); - int SetKalaokIO(int level); - int setAudioPcmPlaybackVolume(int val); - - int openTvAudio(); - int closeTvAudio(); - - int InitTvAudio(int sr, int input_device); - int UnInitTvAudio(); - int AudioChangeSampleRate(int sr); - int AudioSetAudioInSource(int audio_src_in_type); - int AudioSetAudioSourceType(int source_type); - int AudioSSMRestoreDefaultSetting(); - int SetAudioDumpDataFlag(int tmp_flag); - int GetAudioDumpDataFlag(); - int SetAudioLeftRightMode(unsigned int mode); - unsigned int GetAudioLeftRightMode(); - int SwitchAVOutBypass (int); - int SetAudioSwitchIO(int value); - int SetOutput_Swap(int value); - int HanldeAudioInputSr(unsigned int); - void AudioSetVolumeDigitLUTBuf(int lut_sel_flag, int *MainVolLutBuf); - int SetADC_Digital_Capture_Volume(int value); - int SetPGA_IN_Value(int value); - int SetDAC_Digital_PlayBack_Volume(int value); - int InitSetTvAudioCard(); - int UnInitSetTvAudioCard(); - void RefreshSrsEffectAndDacGain(); - int SetCustomEQGain(); - int SetAtvInGain(int gain_val); - int GetHdmiAvHotplugDetectOnoff(); + class TvIObserver { + public: + TvIObserver() {}; + virtual ~TvIObserver() {}; + virtual void onTvEvent ( const CTvEv &ev ) = 0; + }; + //main + CTv(); + virtual ~CTv(); + virtual int OpenTv ( void ); + virtual int CloseTv ( void ); + virtual int StartTvLock (); + virtual int StopTvLock ( void ); + virtual int DoSuspend(int type); + virtual int DoResume(int type); + virtual int DoInstabootSuspend(); + virtual int DoInstabootResume(); + virtual TvRunStatus_t GetTvStatus(); + virtual int ClearAnalogFrontEnd(); + virtual tv_source_input_t GetLastSourceInput (void); + virtual int SetSourceSwitchInput (tv_source_input_t source_input ); + virtual tv_source_input_t GetCurrentSourceInputLock ( void ); + virtual tvin_info_t GetCurrentSignalInfo ( void ); + virtual int SetPreviewWindow ( tvin_window_pos_t pos ); + virtual int dtvAutoScan(); + virtual int dtvManualScan (int beginFreq, int endFreq, int modulation = -1); + virtual int atvAutoScan(int videoStd, int audioStd, int searchType); + virtual int clearAllProgram(int arg0); + virtual int clearDbAllProgramInfoTable(); + virtual void setSourceSwitchAndPlay(); + virtual int GetDisplayResolutionConfig(); + virtual int GetDisplayResolutionInfo(); + virtual int atvMunualScan ( int startFreq, int endFreq, int videoStd, int audioStd, int store_Type = 0, int channel_num = 0 ); + virtual int stopScanLock(); + virtual int dtvAutoScanAtscLock(int attenna, int videoStd, int audioStd); + virtual void SetRecordFileName ( char *name ); + virtual void StartToRecord(); + virtual void StopRecording(); + virtual void SetRecCurTsOrCurProgram ( int sel ); + virtual int startCC(int country, int src, int channel, int service); + virtual int stopCC(); + virtual void printDebugInfo(); + virtual int playProgramLock ( int progId ); + virtual int playDvbcProgram ( int progId ); + virtual int playDtmbProgram ( int progId ); + virtual int playAtvProgram ( int, int, int, int, int); + virtual int playDtvProgram ( int, int, int, int, int, int, int, int, int, int); + virtual int stopPlayingLock(); + virtual int resetFrontEndPara ( frontend_para_set_t feParms ); + virtual int SetDisplayMode ( vpp_display_mode_t display_mode, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt ); + virtual void startAutoBackLight(); + virtual void stopAutoBackLight(); + virtual const char *getPqDbPath(); + virtual void onHdmiSrChanged(int sr, bool bInit); + virtual void onHMDIAudioStatusChanged(int status); + virtual int GetATVAFCType(); + virtual int GetATVSourceTimerSwitch(); + int SetCurProgramAudioVolumeCompensationVal ( int tmpVal ); + int GetAudioVolumeCompensationVal(int progDbId); + //dtv audio track info + int getAudioTrackNum ( int progId ); + int getAudioInfoByIndex ( int progId, int idx, int *pAFmt, String8 &lang ); + int switchAudioTrack ( int progId, int idx ); + int switchAudioTrack ( int aPid, int aFmt, int aParam ); + int getVideoFormatInfo ( int *pWidth, int *pHeight, int *pFPS, int *pInterlace ); + int ResetAudioDecoderForPCMOutput(); + int setAudioChannel ( int channelIdx ); + int getAudioChannel(); + int setTvObserver (TvIObserver *ob); + int getAtscAttenna(); + long getTvTime() + { + return mTvTime.getTime(); + }; + void getFrontendStatus(); + int getFrontendSignalStrength(); + int getFrontendSNR(); + int getFrontendBER(); + int getChannelInfoBydbID ( int dbID, channel_info_t &chan_info ); + int setBlackoutEnable(int enable); + int getSaveBlackoutEnable(); + int getAutoBackLight_on_off(); + int saveATVProgramID ( int dbID ); + int getATVProgramID ( void ); + int saveDTVProgramID ( int dbID ); + int getDTVProgramID ( void ); + int getCurPlayProgId(); + int getATVMinMaxFreq ( int *scanMinFreq, int *scanMaxFreq ); + int getAverageLuma(); + int setAutobacklightData(const char *value); + int getAutoBacklightData(int *data); + + virtual int Tv_SSMRestoreDefaultSetting(); + + // + int GetSourceConnectStatus(tv_source_input_t source_input); + int IsDVISignal(); + int isVgaFmtInHdmi(); + int isSDFmtInHdmi ( void ); + // + int getHDMIFrameRate ( void ); + void RefreshAudioMasterVolume ( tv_source_input_t source_input ); + + int Tv_Set3DMode ( VIDEO_3D_MODE_T mode ); + VIDEO_3D_MODE_T Tv_Get3DMode ( void ); + int Tv_Set3DLRSwith ( int on_off); + int Tv_Get3DLRSwith ( void ); + int Tv_Set3DTo2DMode ( int mode); + int Tv_Get3DTo2DMode ( void ); + int Tv_Set3DDepth ( int value ); + int GetSave3DDepth ( void ); + is_3d_type_t Check2Dor3D ( VIDEO_3D_MODE_T mode3d, tvin_trans_fmt_t trans_fmt ); + int Tvin_SetPLLValues (); + int SetCVD2Values (); + unsigned int Vpp_GetDisplayResolutionInfo(tvin_window_pos_t *win_pos); + int get_hdmi_sampling_rate(); + //SSM + virtual int Tv_SSMFacRestoreDefaultSetting(); + int Tv_GetHistgram(int *histgram_buf); + int StartHeadSetDetect(); + virtual void onHeadSetDetect(int state, int para); + + CTvin::CTvinSigDetect mSigDetectThread; + CSourceConnectDetect mSourceConnectDetectThread; + CTvin::CHDMIRxCEC mHDMIRxCEC; + CUpgradeFBC *mpUpgradeFBC; + CSerialCommunication mSerialA; + CSerialCommunication mSerialB; + CSerialCommunication mSerialC; + CTvSubtitle mSubtitle; + CTv2d4GHeadSetDetect mHeadSet; + + int SendHDMIRxCECCustomMessage(unsigned char data_buf[]); + int SendHDMIRxCECCustomMessageAndWaitReply(unsigned char data_buf[], unsigned char reply_buf[], int WaitCmd, int timeout); + int SendHDMIRxCECBoradcastStandbyMessage(); + int SendHDMIRxCECGiveCECVersionMessage(tv_source_input_t source_input, unsigned char data_buf[]); + int SendHDMIRxCECGiveDeviceVendorIDMessage(tv_source_input_t source_input, unsigned char data_buf[]); + int SendHDMIRxCECGiveOSDNameMessage(tv_source_input_t source_input, unsigned char data_buf[]); + + int GetHdmiHdcpKeyKsvInfo(int data_buf[]); + virtual bool hdmiOutWithFbc(); + int StartUpgradeFBC(char *file_name, int mode, int upgrade_blk_size); + int SetSerialSwitch(int dev_id, int switch_val); + int SendSerialData(int dev_id, int data_len, unsigned char data_buf[]); + int SetDebugSerialOnOff(int on_off); + int GetDebugSerialOnOff(); + int ChannelExport(const char *destPath); + int ChannelImport(const char *srcPath); + int Tv_GetProjectInfo(project_info_t *ptrInfo); + int Tv_GetPlatformType(); + int Tv_HandeHDMIEDIDFilePathConfig(); + int Tv_SetDDDRCMode(tv_source_input_t source_input); + int Tv_SetAudioSourceType (tv_source_input_t source_input); + + //PQ + virtual int Tv_SetBrightness ( int brightness, tv_source_input_type_t source_type, int is_save ); + virtual int Tv_GetBrightness ( tv_source_input_type_t source_type ); + virtual int Tv_SaveBrightness ( int brightness, tv_source_input_type_t source_type ); + virtual int Tv_SetContrast ( int contrast, tv_source_input_type_t source_type, int is_save ); + virtual int Tv_GetContrast ( tv_source_input_type_t source_type ); + virtual int Tv_SaveContrast ( int contrast, tv_source_input_type_t source_type ); + virtual int Tv_SetSaturation ( int satuation, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, int is_save ); + virtual int Tv_GetSaturation ( tv_source_input_type_t source_type ); + virtual int Tv_SaveSaturation ( int satuation, tv_source_input_type_t source_type ); + virtual int Tv_SetHue ( int hue, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, int is_save ); + virtual int Tv_GetHue ( tv_source_input_type_t source_type ); + virtual int Tv_SaveHue ( int hue, tv_source_input_type_t source_type ); + virtual int Tv_SetPQMode ( vpp_picture_mode_t mode, tv_source_input_type_t source_type, int is_save ); + virtual vpp_picture_mode_t Tv_GetPQMode ( tv_source_input_type_t source_type ); + virtual int Tv_SavePQMode ( vpp_picture_mode_t mode, tv_source_input_type_t source_type ); + virtual int Tv_SetSharpness ( int value, tv_source_input_type_t source_type, int en, int is_save ); + virtual int Tv_GetSharpness ( tv_source_input_type_t source_type ); + virtual int Tv_SaveSharpness ( int value, tv_source_input_type_t source_type ); + virtual int Tv_SetBacklight ( int value, tv_source_input_type_t source_type, int is_save ); + virtual int Tv_GetBacklight ( tv_source_input_type_t source_type ); + virtual int Tv_SaveBacklight ( int value, tv_source_input_type_t source_type ); + int Tv_SetBacklight_Switch ( int value ); + int Tv_GetBacklight_Switch ( void ); + int Tv_SetColorTemperature ( vpp_color_temperature_mode_t mode, tv_source_input_type_t source_type, int is_save ); + vpp_color_temperature_mode_t Tv_GetColorTemperature ( tv_source_input_type_t source_type ); + virtual int Tv_SetDisplayMode ( vpp_display_mode_t mode, tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, int is_save ); + virtual int Tv_SaveDisplayMode ( vpp_display_mode_t mode, tv_source_input_type_t source_type ); + virtual int Tv_SaveColorTemperature ( vpp_color_temperature_mode_t mode, tv_source_input_type_t source_type ); + virtual vpp_display_mode_t Tv_GetDisplayMode ( tv_source_input_type_t source_type ); + virtual int Tv_SetNoiseReductionMode ( vpp_noise_reduction_mode_t mode, tv_source_input_type_t source_type, int is_save ); + virtual vpp_noise_reduction_mode_t Tv_GetNoiseReductionMode ( tv_source_input_type_t source_type ); + virtual int Tv_SaveNoiseReductionMode ( vpp_noise_reduction_mode_t mode, tv_source_input_type_t source_type ); + int Tv_SetSplitScreenDemoStatus(tv_source_input_type_t source_type, int onoff_status); + int Tv_GetSplitScreenDemoStatus(tv_source_input_type_t source_type); + int Tv_SplitScreenEffect(int mode, int width, int reverse = 0); + // + int Tv_FactorySetPQMode_Brightness ( int source_type, int pq_mode, int brightness ); + int Tv_FactoryGetPQMode_Brightness ( int source_type, int pq_mode ); + int Tv_FactorySetPQMode_Contrast ( int source_type, int pq_mode, int contrast ); + int Tv_FactoryGetPQMode_Contrast ( int source_type, int pq_mode ); + int Tv_FactorySetPQMode_Saturation ( int source_type, int pq_mode, int saturation ); + int Tv_FactoryGetPQMode_Saturation ( int source_type, int pq_mode ); + int Tv_FactorySetPQMode_Hue ( int source_type, int pq_mode, int hue ); + int Tv_FactoryGetPQMode_Hue ( int source_type, int pq_mode ); + int Tv_FactorySetPQMode_Sharpness ( int source_type, int pq_mode, int sharpness ); + int Tv_FactoryGetPQMode_Sharpness ( int source_type, int pq_mode ); + + int GetColorTemperatureParams ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ); + int Tv_FactorySetTestPattern ( int pattern ); + int Tv_FactoryGetTestPattern ( void ); + int Tv_FactorySetScreenColor ( int vdin_blending_mask, int y, int u, int v ); + int Tv_FactoryResetPQMode ( void ); + int Tv_FactoryResetColorTemp ( void ); + int Tv_FactorySetParamsDefault ( void ); + int Tv_FactorySetDDRSSC ( int step ); + int Tv_FactoryGetDDRSSC ( void ); + int Tv_FactorySetLVDSSSC ( int step ); + int Tv_FactoryGetLVDSSSC ( void ); + void Tv_Spread_Spectrum(void); + int Tv_FactorySetNolineParams ( int noline_params_type, int source_type, noline_params_t noline_params ); + noline_params_t Tv_FactoryGetNolineParams ( int noline_params_type, int source_type ); + int Tv_FactorySetOverscan ( int source_type, int fmt, int status_3d, int trans_fmt, tvin_cutwin_t cutwin_t ); + tvin_cutwin_t Tv_FactoryGetOverscan ( int source_type, int fmt, int status_3d, int trans_fmt ); + int Tv_ReplacePqDb(const char *newFilePath = NULL); + //end PQ + + //TV TO FBC + int Tv_FactorySet_FBC_Brightness ( int value ); + int Tv_FactoryGet_FBC_Brightness ( void ); + int Tv_FactorySet_FBC_Contrast( int value ); + int Tv_FactoryGet_FBC_Contrast ( void ); + int Tv_FactorySet_FBC_Saturation( int value ); + int Tv_FactoryGet_FBC_Saturation ( void ); + int Tv_FactorySet_FBC_HueColorTint( int value ); + int Tv_FactoryGet_FBC_HueColorTint ( void ); + virtual int Tv_FactorySet_FBC_Backlight ( int value ); + virtual int Tv_FactoryGet_FBC_Backlight ( void ); + int Tv_FactorySet_FBC_Backlight_N360 ( int value ); + int Tv_FactoryGet_FBC_Backlight_N360 ( void ); + int Tv_FactorySet_FBC_ELEC_MODE( int value ); + int Tv_FactoryGet_FBC_ELEC_MODE( void ); + int Tv_FactorySet_FBC_BACKLIGHT_N360( int value ); + int Tv_FactoryGet_FBC_BACKLIGHT_N360( void ); + int Tv_FactorySet_FBC_Picture_Mode ( int mode ); + int Tv_FactoryGet_FBC_Picture_Mode ( void ); + int Tv_FactorySet_FBC_Set_Test_Pattern ( int mode ); + int Tv_FactoryGet_FBC_Get_Test_Pattern ( void ); + int Tv_FactorySet_FBC_Gain_Red( int value ); + int Tv_FactoryGet_FBC_Gain_Red ( void ); + int Tv_FactorySet_FBC_Gain_Green( int value ); + int Tv_FactoryGet_FBC_Gain_Green( void ); + int Tv_FactorySet_FBC_Gain_Blue( int value ); + int Tv_FactoryGet_FBC_Gain_Blue ( void ); + int Tv_FactorySet_FBC_Offset_Red( int value ); + int Tv_FactoryGet_FBC_Offset_Red ( void ); + int Tv_FactorySet_FBC_Offset_Green( int value ); + int Tv_FactoryGet_FBC_Offset_Green( void ); + int Tv_FactorySet_FBC_Offset_Blue( int value ); + int Tv_FactoryGet_FBC_Offset_Blue ( void ); + int Tv_FactoryGetWhiteBalanceRedGain(int source_type, int colortemp_mode); + int Tv_FactoryGetWhiteBalanceGreenGain(int source_type, int colortemp_mode); + int Tv_FactoryGetWhiteBalanceBlueGain(int source_type, int colortemp_mode); + int Tv_FactoryGetWhiteBalanceRedOffset(int source_type, int colortemp_mode); + int Tv_FactoryGetWhiteBalanceGreenOffset(int source_type, int colortemp_mode); + int Tv_FactoryGetWhiteBalanceBlueOffset(int source_type, int colortemp_mode); + int Tv_FactorySetWhiteBalanceRedGain(int source_type, int colortemp_mode, int value); + int Tv_FactorySetWhiteBalanceGreenGain(int source_type, int colortemp_mode, int value); + int Tv_FactorySetWhiteBalanceBlueGain(int source_type, int colortemp_mode, int value); + int Tv_FactorySetWhiteBalanceRedOffset(int source_type, int colortemp_mode, int value); + int Tv_FactorySetWhiteBalanceGreenOffset(int source_type, int colortemp_mode, int value); + int Tv_FactorySetWhiteBalanceBlueOffset(int source_type, int colortemp_mode, int value); + int Tv_FactorySetWhiteBalanceColorTempMode(int source_type, int colortemp_mode, int is_save); + int Tv_FactoryGetWhiteBalanceColorTempMode(int source_type ); + int Tv_FactoryWhiteBalanceFormatInputFbcGainParams(int value); + int Tv_FactoryWhiteBalanceFormatInputFbcOffsetParams(int value); + int Tv_FactoryWhiteBalanceFormatOutputFbcOffsetParams(int value); + int Tv_FactoryWhiteBalanceFormatOutputFbcGainParams(int value); + int Tv_FactorySaveWhiteBalancePramas(int source_type, int tempmode, int r_gain, int g_gain, int b_gain, int r_offset, int g_offset, int b_offset); + int Tv_FactoryCloseWhiteBalanceGrayPattern(); + int Tv_FactoryOpenWhiteBalanceGrayPattern(); + int Tv_FactorySetWhiteBalanceGrayPattern(int value); + int Tv_FactoryGetWhiteBalanceGrayPattern(); + int Tv_FactoryWhiteBalanceColorTempMappingG92Fbc(int Tempmode); + int Tv_FactoryWhiteBalanceColorTempMappingFbc2G9(int Tempmode); + int Tv_FactorySet_FBC_GrayPattern(int value); + int Tv_FactoryOpen_FBC_GrayPattern(); + int Tv_FactoryClose_FBC_GrayPattern(); + int Tv_FactorySet_FBC_ColorTemp_Mode( int mode ); + int Tv_FactoryGet_FBC_ColorTemp_Mode ( void ); + int Tv_FactorySet_FBC_ColorTemp_Mode_N360( int mode ); + int Tv_FactoryGet_FBC_ColorTemp_Mode_N360 ( void ); + int Tv_FactorySet_FBC_LockN_state(int value); + int Tv_FactorySet_FBC_WB_Initial( int status ); + int Tv_FactoryGet_FBC_WB_Initial ( void ); + virtual int Tv_FactorySet_FBC_ColorTemp_Batch(vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params); + virtual int Tv_FactoryGet_FBC_ColorTemp_Batch ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ); + int Tv_FactorySet_WB_G9_To_FBC( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params ); + int Tv_FactoryGet_WB_G9_To_FBC ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ); + int Tv_FactoryGetItemFromBatch(vpp_color_temperature_mode_t colortemp_mode, int item); + int Tv_FactorySet_FBC_CM_OnOff( unsigned char status ); + int Tv_FactoryGet_FBC_CM_OnOff (void); + int Tv_FactorySet_FBC_DNLP_OnOff( unsigned char status ); + int Tv_FactoryGet_FBC_DNLP_OnOff (void); + int Tv_FactorySet_FBC_Gamma_OnOff( unsigned char status ); + int Tv_FactoryGet_FBC_Gamma_OnOff (void); + int Tv_FactorySet_FBC_WhiteBalance_OnOff( unsigned char status ); + int Tv_FactoryGet_FBC_WhiteBalance_OnOff (void); + int Tv_FactorySet_FBC_Thermal_State( int value ); + int Tv_FactorySet_FBC_backlight_onoff(int value); + int Tv_FactoryGet_FBC_backlight_onoff ( void ); + int Tv_FactorySet_FBC_Auto_Backlight_OnOff(unsigned char status); + int Tv_FactoryGet_FBC_Auto_Backlight_OnOff ( void ); + int Tv_FactoryGet_FBC_VIDEO_MUTE ( void ); + int Tv_FactorySet_FBC_LVDS_SSG_Set( int value ); + int Tv_FactorySet_FBC_LightSensor_Status_N310 ( int value ); + int Tv_FactoryGet_FBC_LightSensor_Status_N310 ( void ); + int Tv_FactorySet_FBC_Dream_Panel_Status_N310 ( int value ); + int Tv_FactoryGet_FBC_Dream_Panel_Status_N310 ( void ); + int Tv_FactorySet_FBC_MULT_PQ_Status_N310 ( int value ); + int Tv_FactoryGet_FBC_MULT_PQ_Status_N310 ( void ); + int Tv_FactorySet_FBC_MEMC_Status_N310 ( int value ); + int Tv_FactoryGet_FBC_MEMC_Status_N310 ( void ); + int Tv_FactorySet_FBC_ColorTemp_Mode_N310( int mode ); + int Tv_FactoryGet_FBC_ColorTemp_Mode_N310 ( void ); + virtual int Tv_FactorySet_FBC_Backlight_N310 ( int value ); + virtual int Tv_FactoryGet_FBC_Backlight_N310 ( void ); + int Tv_FactorySet_FBC_Bluetooth_IIS_N310 ( int value ); + int Tv_FactoryGet_FBC_Bluetooth_IIS_N310 ( void ); + int Tv_FactorySet_FBC_Led_N310 ( int val_1, int val_2, int val_3 ); + int Tv_FactorySet_VbyOne_Spread_Spectrum_N311 ( int value ); + int Tv_FactoryGet_VbyOne_Spread_Spectrum_N311 ( void ); + int Tv_FactorySet_FBC_AP_STANDBY_N310 ( int value ); + int Tv_FactoryGet_FBC_AP_STANDBY_N310( void ); + int Tv_FactorySet_Uboot_Stage(int value); + //end TV TO FBC + + int Tv_SetTestPattern(int value); + int Tv_Set2k4k_ScalerUp_Mode ( int value ); + int Tv_Get2k4k_ScalerUp_Mode ( void ); + //audio + virtual int Tv_SetDRC_OnOff(int on_off); + virtual int Tv_GetDRC_OnOff(void); + virtual void updateSubtitle(int, int); + int setSubtitleBuffer(char *); + int initSubtitle(int, int) ; + int lockSubtitle(); + int unlockSubtitle(); + int getSubSwitchStatus(); + int startSubtitle(int dmx_id, int pid, int page_id, int anc_page_id) ; + int stopSubtitle() ; + + //audio + virtual void TvAudioOpen(); + virtual void AudioCtlUninit(); + virtual int SetAudioMuteForSystem(int muteOrUnmute); + virtual int GetAudioMuteForSystem(); + virtual int SetAudioMuteForTv(int muteOrUnmute); + virtual int GetAudioMuteForTv(); + virtual char *GetMainVolLutTableExtraName(); + virtual int SetDbxTvMode(int mode, int son_value, int vol_value, int sur_value); + virtual int GetDbxTvMode(int *mode, int *son_value, int *vol_value, int *sur_value); + int AudioHandleHeadsetPlugIn(); + int AudioHandleHeadsetPullOut(); + int SetAudioAVOutMute(int muteStatus); + int GetAudioAVOutMute(); + int SetAudioSPDIFMute(int muteStatus); + int GetAudioSPDIFMute(); + int SetDacMute(int muteStatus, int mute_type); + int SetAudioI2sMute(int); + int SetAudioMasterVolume(int tmp_vol); + int GetAudioMasterVolume(); + int SaveCurAudioMasterVolume(int tmp_vol); + int GetCurAudioMasterVolume(); + int SetAudioBalance(int tmp_val); + int GetAudioBalance(); + int SaveCurAudioBalance(int tmp_val); + int GetCurAudioBalance(); + int SetAudioSupperBassVolume(int tmp_vol); + int GetAudioSupperBassVolume(); + int SaveCurAudioSupperBassVolume(int tmp_vol); + int GetCurAudioSupperBassVolume(); + int SetAudioSupperBassSwitch(int tmp_val); + int GetAudioSupperBassSwitch(); + int SaveCurAudioSupperBassSwitch(int tmp_val); + int GetCurAudioSupperBassSwitch(); + int SetAudioSRSSurround(int tmp_val); + int GetAudioSRSSurround(); + int SaveCurAudioSrsSurround(int tmp_val); + int GetCurAudioSRSSurround(); + int SetAudioSrsDialogClarity(int tmp_val); + int GetAudioSrsDialogClarity(); + int SaveCurAudioSrsDialogClarity(int tmp_val); + int GetCurAudioSrsDialogClarity(); + int SetAudioSrsTruBass(int tmp_val); + int GetAudioSrsTruBass(); + int SaveCurAudioSrsTruBass(int tmp_val); + int GetCurAudioSrsTruBass(); + int SetAudioSPDIFSwitch(int tmp_val); + int GetCurAudioSPDIFSwitch(); + int SaveCurAudioSPDIFSwitch(int tmp_val); + + //Audio SPDIF Mode + int SetAudioSPDIFMode(int tmp_val); + int GetCurAudioSPDIFMode(); + int SaveCurAudioSPDIFMode(int tmp_val); + int SetAudioBassVolume(int tmp_vol); + int GetAudioBassVolume(); + int SaveCurAudioBassVolume(int tmp_vol); + int GetCurAudioBassVolume(); + int SetAudioTrebleVolume(int tmp_vol); + int GetAudioTrebleVolume(); + int SaveCurAudioTrebleVolume(int tmp_vol); + int GetCurAudioTrebleVolume(); + int SetAudioSoundMode(int tmp_val); + int GetAudioSoundMode(); + int SaveCurAudioSoundMode(int tmp_val); + int GetCurAudioSoundMode(); + int SetAudioWallEffect(int tmp_val); + int GetAudioWallEffect(); + int SaveCurAudioWallEffect(int tmp_val); + int GetCurAudioWallEffect(); + int SetAudioEQMode(int tmp_val); + int GetAudioEQMode(); + int SaveCurAudioEQMode(int tmp_val); + int GetCurAudioEQMode(); + int GetAudioEQRange(int range_buf[]); + int GetAudioEQBandCount(); + int SetAudioEQGain(int gain_buf[]); + int GetAudioEQGain(int gain_buf[]); + int GetCurAudioEQGain(int gain_buf[]); + int SaveCurAudioEQGain(int gain_buf[]); + int SetAudioEQSwitch(int switch_val); + int OpenAmAudio(unsigned int sr, int input_device, int output_device); + int CloseAmAudio(void); + int SetAmAudioInputSr(unsigned int sr, int output_device); + int SetAmAudioOutputMode(int mode); + int SetAmAudioMusicGain(int gain); + int SetAmAudioLeftGain(int gain); + int SetAmAudioRightGain(int gain); + int SetAudioVolumeCompensationVal(int tmp_vol_comp_val); + int AudioLineInSelectChannel(int audio_channel); + int AudioSetLineInCaptureVolume(int l_vol, int r_vol); + int SetKalaokIO(int level); + int setAudioPcmPlaybackVolume(int val); + + int openTvAudio(); + int closeTvAudio(); + + int InitTvAudio(int sr, int input_device); + int UnInitTvAudio(); + int AudioChangeSampleRate(int sr); + int AudioSetAudioInSource(int audio_src_in_type); + int AudioSetAudioSourceType(int source_type); + int AudioSSMRestoreDefaultSetting(); + int SetAudioDumpDataFlag(int tmp_flag); + int GetAudioDumpDataFlag(); + int SetAudioLeftRightMode(unsigned int mode); + unsigned int GetAudioLeftRightMode(); + int SwitchAVOutBypass (int); + int SetAudioSwitchIO(int value); + int SetOutput_Swap(int value); + int HanldeAudioInputSr(unsigned int); + void AudioSetVolumeDigitLUTBuf(int lut_sel_flag, int *MainVolLutBuf); + int SetADC_Digital_Capture_Volume(int value); + int SetPGA_IN_Value(int value); + int SetDAC_Digital_PlayBack_Volume(int value); + int InitSetTvAudioCard(); + int UnInitSetTvAudioCard(); + void RefreshSrsEffectAndDacGain(); + int SetCustomEQGain(); + int SetAtvInGain(int gain_val); + int GetHdmiAvHotplugDetectOnoff(); private: - int SendCmdToOffBoardFBCExternalDac(int, int); - int LoadCurAudioSPDIFMode(); - int LoadCurAudioMasterVolume(); - int LoadCurAudioBalance(); - int LoadCurAudioSupperBassVolume(); - int LoadCurAudioSupperBassSwitch(); - int LoadCurAudioSrsSurround(); - int LoadCurAudioSrsDialogClarity(); - int LoadCurAudioSPDIFSwitch(); - void SetSupperBassSRSSpeakerSize(); - int LoadCurAudioSoundMode(); - int LoadCurAudioEQMode(); - int LoadCurAudioSrsTruBass(); - int RealSaveCurAudioBassVolume(int, int); - int LoadCurAudioBassVolume(); - int RealSaveCurAudioTrebleVolume(int, int); - int LoadCurAudioTrebleVolume(); - int HandleTrebleBassVolume(); - int LoadCurAudioWallEffect(); - int RealReadCurAudioEQGain(int *); - int RealSaveCurAudioEQGain(int *, int); - int LoadCurAudioEQGain(); - int MappingEQGain(int *, int *, int); - int RestoreToAudioDefEQGain(int *); - int GetCustomEQGain(int *); - int AudioSetEQGain(int *); - int handleEQGainBeforeSet(int *, int *); - int RealSetEQGain(int *); - int SetSpecialModeEQGain(int); - int SetSpecialIndexEQGain(int, int); - int SaveSpecialIndexEQGain(int, int); - void LoadAudioCtl(); - void InitSetAudioCtl(); - int GetBassUIMinGainVal(); - int GetBassUIMaxGainVal(); - int GetTrebleUIMinGainVal(); - int GetTrebleUIMaxGainVal(); - int MappingLine(int, int, int, int, int); - int MappingTrebleBassAndEqualizer(int, int, int, int); - int SetSPDIFMode(int mode_val); - - CAudioAlsa mAudioAlsa; - CAudioEffect mAudioEffect; - - CAudioCustomerCtrl mCustomerCtrl; - int mCurAudioMasterVolume; - int mCurAudioBalance; - int mCurAudioSupperBassVolume; - int mCurAudioSupperBassSwitch; - int mCurAudioSRSSurround; - int mCurAudioSrsDialogClarity; - int mCurAudioSrsTruBass; - int mCurAudioSPDIFSwitch; - int mCurAudioSPDIFMode; - int mCurAudioBassVolume; - int mCurAudioTrebleVolume; - int mCurAudioSoundMode; - int mCurAudioWallEffect; - int mCurAudioEQMode; - int mCustomAudioMasterVolume; - int mCustomAudioBalance; - int mCustomAudioSupperBassVolume; - int mCustomAudioSupperBassSwitch; - int mCustomAudioSRSSurround; - int mCustomAudioSrsDialogClarity; - int mCustomAudioSrsTruBass; - int mCustomAudioBassVolume; - int mCustomAudioTrebleVolume; - int mCustomAudioSoundMode; - int mCustomAudioWallEffect; - int mCustomAudioEQMode; - int mCustomAudioSoundEnhancementSwitch; - int mCustomEQGainBuf[CC_BAND_ITEM_CNT]; - int mCurEQGainBuf[CC_BAND_ITEM_CNT] ; - int8_t mCurEQGainChBuf[CC_BAND_ITEM_CNT]; - int mWallEffectValueBuf[CC_BAND_ITEM_CNT]; - int mVolumeCompensationVal; - int mMainVolumeBalanceVal; - //end audio + int SendCmdToOffBoardFBCExternalDac(int, int); + int LoadCurAudioSPDIFMode(); + int LoadCurAudioMasterVolume(); + int LoadCurAudioBalance(); + int LoadCurAudioSupperBassVolume(); + int LoadCurAudioSupperBassSwitch(); + int LoadCurAudioSrsSurround(); + int LoadCurAudioSrsDialogClarity(); + int LoadCurAudioSPDIFSwitch(); + void SetSupperBassSRSSpeakerSize(); + int LoadCurAudioSoundMode(); + int LoadCurAudioEQMode(); + int LoadCurAudioSrsTruBass(); + int RealSaveCurAudioBassVolume(int, int); + int LoadCurAudioBassVolume(); + int RealSaveCurAudioTrebleVolume(int, int); + int LoadCurAudioTrebleVolume(); + int HandleTrebleBassVolume(); + int LoadCurAudioWallEffect(); + int RealReadCurAudioEQGain(int *); + int RealSaveCurAudioEQGain(int *, int); + int LoadCurAudioEQGain(); + int MappingEQGain(int *, int *, int); + int RestoreToAudioDefEQGain(int *); + int GetCustomEQGain(int *); + int AudioSetEQGain(int *); + int handleEQGainBeforeSet(int *, int *); + int RealSetEQGain(int *); + int SetSpecialModeEQGain(int); + int SetSpecialIndexEQGain(int, int); + int SaveSpecialIndexEQGain(int, int); + void LoadAudioCtl(); + void InitSetAudioCtl(); + int GetBassUIMinGainVal(); + int GetBassUIMaxGainVal(); + int GetTrebleUIMinGainVal(); + int GetTrebleUIMaxGainVal(); + int MappingLine(int, int, int, int, int); + int MappingTrebleBassAndEqualizer(int, int, int, int); + int SetSPDIFMode(int mode_val); + + CAudioAlsa mAudioAlsa; + CAudioEffect mAudioEffect; + + CAudioCustomerCtrl mCustomerCtrl; + int mCurAudioMasterVolume; + int mCurAudioBalance; + int mCurAudioSupperBassVolume; + int mCurAudioSupperBassSwitch; + int mCurAudioSRSSurround; + int mCurAudioSrsDialogClarity; + int mCurAudioSrsTruBass; + int mCurAudioSPDIFSwitch; + int mCurAudioSPDIFMode; + int mCurAudioBassVolume; + int mCurAudioTrebleVolume; + int mCurAudioSoundMode; + int mCurAudioWallEffect; + int mCurAudioEQMode; + int mCustomAudioMasterVolume; + int mCustomAudioBalance; + int mCustomAudioSupperBassVolume; + int mCustomAudioSupperBassSwitch; + int mCustomAudioSRSSurround; + int mCustomAudioSrsDialogClarity; + int mCustomAudioSrsTruBass; + int mCustomAudioBassVolume; + int mCustomAudioTrebleVolume; + int mCustomAudioSoundMode; + int mCustomAudioWallEffect; + int mCustomAudioEQMode; + int mCustomAudioSoundEnhancementSwitch; + int mCustomEQGainBuf[CC_BAND_ITEM_CNT]; + int mCurEQGainBuf[CC_BAND_ITEM_CNT] ; + int8_t mCurEQGainChBuf[CC_BAND_ITEM_CNT]; + int mWallEffectValueBuf[CC_BAND_ITEM_CNT]; + int mVolumeCompensationVal; + int mMainVolumeBalanceVal; + //end audio protected: - class CTvMsgQueue: public CMsgQueueThread, public CAv::IObserver, public CTvScanner::IObserver , public CTvEpg::IObserver, public CFrontEnd::IObserver { - public: - static const int TV_MSG_COMMON = 0; - static const int TV_MSG_STOP_ANALYZE_TS = 1; - static const int TV_MSG_START_ANALYZE_TS = 2; - static const int TV_MSG_CHECK_FE_DELAY = 3; - static const int TV_MSG_AV_EVENT = 4; - static const int TV_MSG_FE_EVENT = 5; - static const int TV_MSG_SCAN_EVENT = 6; - static const int TV_MSG_EPG_EVENT = 7; - static const int TV_MSG_HDMI_SR_CHANGED = 8; - static const int TV_MSG_ENABLE_VIDEO_LATER = 9; - CTvMsgQueue(CTv *tv); - ~CTvMsgQueue(); - //scan observer - void onEvent ( const CTvScanner::ScannerEvent &ev ); - //epg observer - void onEvent ( const CTvEpg::EpgEvent &ev ); - //FE observer - void onEvent ( const CFrontEnd::FEEvent &ev ); - //AV - void onEvent(const CAv::AVEvent &ev); - private: - virtual void handleMessage ( CMessage &msg ); - CTv *mpTv; - }; - - class CTvDetectObserverForScanner: public CTvin::CTvinSigDetect::ISigDetectObserver { - public: - CTvDetectObserverForScanner(CTv *); - ~CTvDetectObserverForScanner() {}; - virtual void onSigToStable(); - virtual void onSigStableToUnstable(); - virtual void onSigStableToNoSig(); - virtual void onSigUnStableToNoSig(); - virtual void onSigStillStable(); - private: - CTv *mpTv; - int m_sig_stable_nums; - }; - void onEnableVideoLater(int framecount); - int resetDmxAndAvSource(); - int stopScan(); - int stopPlaying(); - void sendTvEvent ( const CTvEv &ev ); - int startPlayTv ( int source, int vid, int aid, int vfat, int afat ); - //scan observer - void onEvent ( const CTvScanner::ScannerEvent &ev ); - //epg observer - void onEvent ( const CTvEpg::EpgEvent &ev ); - //FE observer - void onEvent ( const CFrontEnd::FEEvent &ev ); - //AV - void onEvent(const CAv::AVEvent &ev); - bool Tv_Start_Analyze_Ts ( int channelID ); - bool Tv_Stop_Analyze_Ts(); - int Tvin_Stop ( void ); - int Tvin_GetTvinConfig(); - int Tv_init_audio(); - int Tv_MiscSetBySource ( tv_source_input_t ); - void print_version_info ( void ); - int dtvCleanProgramByFreq ( int freq ); - /*********************** Audio start **********************/ - int SetAudioVolDigitLUTTable ( tv_source_input_t source_input ); - virtual int Tv_SetAudioInSource (tv_source_input_t source_input); - void Tv_SetAudioOutputSwap_Type (tv_source_input_t source_input); - void Tv_ADCDigitalCapture_Volume (void); - void Tv_SetPGAIn_Gain (void); - void Tv_SetDACDigitalPlayBack_Volume (int audio_src_in_type); - void Tv_SetAVOutPut_Input_gain(tv_source_input_t source_input); - /*********************** Audio end **********************/ - - // - virtual void onSigToStable(); - virtual void onSigStableToUnstable(); - virtual void onSigStableToUnSupport(); - virtual void onSigStableToNoSig(); - virtual void onSigUnStableToUnSupport(); - virtual void onSigUnStableToNoSig(); - virtual void onSigNullToNoSig(); - virtual void onSigNoSigToUnstable(); - virtual void onSigStillStable(); - virtual void onSigStillUnstable(); - virtual void onSigStillNosig(); - virtual void onSigStillNoSupport(); - virtual void onSigStillNull(); - virtual void onStableSigFmtChange(); - virtual void onStableTransFmtChange(); - virtual void onSigDetectEnter(); - virtual void onSigDetectLoop(); - - virtual void onSourceConnect(int source_type, int connect_status); - virtual void onHDMIRxCECMessage(int msg_len, unsigned char msg_buf[]); - virtual void onUpgradeStatus(int status, int progress); - virtual void onSerialCommunication(int dev_id, int rd_len, unsigned char data_buf[]); - virtual void onThermalDetect(int state); - virtual void onVframeSizeChange(); - - CTvEpg mTvEpg; - CTvScanner mTvScanner; - mutable Mutex mLock; - CTvTime mTvTime; - CVpp mVpp; - CTvin mTvin; - CTvRecord mTvRec; - CFrontEnd mFrontDev; - CTvDimension mTvVchip; - CTvSubtitle mTvSub; - CAv mAv; - CTvDmx mTvDmx; - CTvMsgQueue mTvMsgQueue; - AutoBackLight mAutoBackLight; - CAutoPQparam mAutoPQparam; - CTvDetectObserverForScanner mTvScannerDetectObserver; - // - volatile int mTvAction; - volatile TvRunStatus_t mTvStatus; - volatile tv_source_input_t m_source_input; - volatile tv_source_input_t m_last_source_input; - /* for tvin window mode and pos*/ - tvin_window_pos_t m_win_pos; - tv_window_mode_t m_win_mode; - int m_blackout_enable;//1 enable 0 disable - int m_cur_playing_prog_id; - bool mHdmiOutFbc; - CFbcCommunication *fbcIns; - - - bool mlastlockstatus; - String8 mlastdm; - String8 mlastabbrev; - String8 mlastabbtext; - pthread_t vchipthread; - int mvchip_running; - friend class CTvMsgQueue; - int mCurAnalyzeTsChannelID; - TvIObserver *mpObserver; - tv_dtv_scan_running_status_t mDtvScanRunningStatus; - volatile tv_config_t gTvinConfig; - int dtv_auto_3d_flag; - int m_hdmiav_hotplugdetect_en; - bool m_autoset_displayfreq; - int m_sig_stable_nums; - bool m_is_set_hdmi_edid; - /** for L/R or B/T 3d mode overscan **/ - /** for 3D **/ - VIDEO_3D_MODE_T m_mode_3d; - /** for HDMI-in sampling detection. **/ - int m_hdmi_sampling_rate; - int m_hdmi_audio_data; - /** for display mode to bottom **/ - int screen_mode; - - //audio mute - int mAudioMuteStatusForTv; - int mAudioMuteStatusForSystem; - char mMainVolLutTableExtraName[16]; + class CTvMsgQueue: public CMsgQueueThread, public CAv::IObserver, public CTvScanner::IObserver , public CTvEpg::IObserver, public CFrontEnd::IObserver { + public: + static const int TV_MSG_COMMON = 0; + static const int TV_MSG_STOP_ANALYZE_TS = 1; + static const int TV_MSG_START_ANALYZE_TS = 2; + static const int TV_MSG_CHECK_FE_DELAY = 3; + static const int TV_MSG_AV_EVENT = 4; + static const int TV_MSG_FE_EVENT = 5; + static const int TV_MSG_SCAN_EVENT = 6; + static const int TV_MSG_EPG_EVENT = 7; + static const int TV_MSG_HDMI_SR_CHANGED = 8; + static const int TV_MSG_ENABLE_VIDEO_LATER = 9; + CTvMsgQueue(CTv *tv); + ~CTvMsgQueue(); + //scan observer + void onEvent ( const CTvScanner::ScannerEvent &ev ); + //epg observer + void onEvent ( const CTvEpg::EpgEvent &ev ); + //FE observer + void onEvent ( const CFrontEnd::FEEvent &ev ); + //AV + void onEvent(const CAv::AVEvent &ev); + private: + virtual void handleMessage ( CMessage &msg ); + CTv *mpTv; + }; + + class CTvDetectObserverForScanner: public CTvin::CTvinSigDetect::ISigDetectObserver { + public: + CTvDetectObserverForScanner(CTv *); + ~CTvDetectObserverForScanner() {}; + virtual void onSigToStable(); + virtual void onSigStableToUnstable(); + virtual void onSigStableToNoSig(); + virtual void onSigUnStableToNoSig(); + virtual void onSigStillStable(); + private: + CTv *mpTv; + int m_sig_stable_nums; + }; + void onEnableVideoLater(int framecount); + int resetDmxAndAvSource(); + int stopScan(); + int stopPlaying(); + void sendTvEvent ( const CTvEv &ev ); + int startPlayTv ( int source, int vid, int aid, int vfat, int afat ); + //scan observer + void onEvent ( const CTvScanner::ScannerEvent &ev ); + //epg observer + void onEvent ( const CTvEpg::EpgEvent &ev ); + //FE observer + void onEvent ( const CFrontEnd::FEEvent &ev ); + //AV + void onEvent(const CAv::AVEvent &ev); + bool Tv_Start_Analyze_Ts ( int channelID ); + bool Tv_Stop_Analyze_Ts(); + int Tvin_Stop ( void ); + int Tvin_GetTvinConfig(); + int Tv_init_audio(); + int Tv_MiscSetBySource ( tv_source_input_t ); + void print_version_info ( void ); + int dtvCleanProgramByFreq ( int freq ); + /*********************** Audio start **********************/ + int SetAudioVolDigitLUTTable ( tv_source_input_t source_input ); + virtual int Tv_SetAudioInSource (tv_source_input_t source_input); + void Tv_SetAudioOutputSwap_Type (tv_source_input_t source_input); + void Tv_ADCDigitalCapture_Volume (void); + void Tv_SetPGAIn_Gain (void); + void Tv_SetDACDigitalPlayBack_Volume (int audio_src_in_type); + void Tv_SetAVOutPut_Input_gain(tv_source_input_t source_input); + /*********************** Audio end **********************/ + + // + virtual void onSigToStable(); + virtual void onSigStableToUnstable(); + virtual void onSigStableToUnSupport(); + virtual void onSigStableToNoSig(); + virtual void onSigUnStableToUnSupport(); + virtual void onSigUnStableToNoSig(); + virtual void onSigNullToNoSig(); + virtual void onSigNoSigToUnstable(); + virtual void onSigStillStable(); + virtual void onSigStillUnstable(); + virtual void onSigStillNosig(); + virtual void onSigStillNoSupport(); + virtual void onSigStillNull(); + virtual void onStableSigFmtChange(); + virtual void onStableTransFmtChange(); + virtual void onSigDetectEnter(); + virtual void onSigDetectLoop(); + + virtual void onSourceConnect(int source_type, int connect_status); + virtual void onHDMIRxCECMessage(int msg_len, unsigned char msg_buf[]); + virtual void onUpgradeStatus(int status, int progress); + virtual void onSerialCommunication(int dev_id, int rd_len, unsigned char data_buf[]); + virtual void onThermalDetect(int state); + virtual void onVframeSizeChange(); + + CTvEpg mTvEpg; + CTvScanner mTvScanner; + mutable Mutex mLock; + CTvTime mTvTime; + CVpp mVpp; + CTvin mTvin; + CTvRecord mTvRec; + CFrontEnd mFrontDev; + CTvDimension mTvVchip; + CTvSubtitle mTvSub; + CAv mAv; + CTvDmx mTvDmx; + CTvMsgQueue mTvMsgQueue; + AutoBackLight mAutoBackLight; + CAutoPQparam mAutoPQparam; + CTvDetectObserverForScanner mTvScannerDetectObserver; + // + volatile int mTvAction; + volatile TvRunStatus_t mTvStatus; + volatile tv_source_input_t m_source_input; + volatile tv_source_input_t m_last_source_input; + /* for tvin window mode and pos*/ + tvin_window_pos_t m_win_pos; + tv_window_mode_t m_win_mode; + int m_blackout_enable;//1 enable 0 disable + int m_cur_playing_prog_id; + bool mHdmiOutFbc; + CFbcCommunication *fbcIns; + + + bool mlastlockstatus; + String8 mlastdm; + String8 mlastabbrev; + String8 mlastabbtext; + pthread_t vchipthread; + int mvchip_running; + friend class CTvMsgQueue; + int mCurAnalyzeTsChannelID; + TvIObserver *mpObserver; + tv_dtv_scan_running_status_t mDtvScanRunningStatus; + volatile tv_config_t gTvinConfig; + int dtv_auto_3d_flag; + int m_hdmiav_hotplugdetect_en; + bool m_autoset_displayfreq; + int m_sig_stable_nums; + bool m_is_set_hdmi_edid; + /** for L/R or B/T 3d mode overscan **/ + /** for 3D **/ + VIDEO_3D_MODE_T m_mode_3d; + /** for HDMI-in sampling detection. **/ + int m_hdmi_sampling_rate; + int m_hdmi_audio_data; + /** for display mode to bottom **/ + int screen_mode; + + //audio mute + int mAudioMuteStatusForTv; + int mAudioMuteStatusForSystem; + char mMainVolLutTableExtraName[16]; }; #endif //_CDTV_H diff --git a/tvapi/libtv/tv/CTvBooking.cpp b/tvapi/libtv/tv/CTvBooking.cpp index e821809..1ad45db 100644 --- a/tvapi/libtv/tv/CTvBooking.cpp +++ b/tvapi/libtv/tv/CTvBooking.cpp @@ -8,147 +8,147 @@ #endif int CTvBooking::InitFromCursor(CTvDatabase::Cursor &c) { - int col; + int col; - col = c.getColumnIndex("db_id"); - this->id = c.getInt(col); + col = c.getColumnIndex("db_id"); + this->id = c.getInt(col); - col = c.getColumnIndex("db_srv_id"); - this->programId = c.getInt(col); + col = c.getColumnIndex("db_srv_id"); + this->programId = c.getInt(col); - col = c.getColumnIndex("db_evt_id"); - this->eventId = c.getInt(col); + col = c.getColumnIndex("db_evt_id"); + this->eventId = c.getInt(col); - col = c.getColumnIndex("flag"); - this->flag = c.getInt(col); + col = c.getColumnIndex("flag"); + this->flag = c.getInt(col); - col = c.getColumnIndex("status"); - this->status = c.getInt(col); + col = c.getColumnIndex("status"); + this->status = c.getInt(col); - col = c.getColumnIndex("repeat"); - this->repeat = c.getInt(col); + col = c.getColumnIndex("repeat"); + this->repeat = c.getInt(col); - col = c.getColumnIndex("start"); - this->start = (long)c.getInt(col); + col = c.getColumnIndex("start"); + this->start = (long)c.getInt(col); - col = c.getColumnIndex("duration"); - this->duration = (long)c.getInt(col) ; + col = c.getColumnIndex("duration"); + this->duration = (long)c.getInt(col) ; - col = c.getColumnIndex("srv_name"); - this->progName = c.getString(col); + col = c.getColumnIndex("srv_name"); + this->progName = c.getString(col); - col = c.getColumnIndex("evt_name"); - this->evtName = c.getString(col); + col = c.getColumnIndex("evt_name"); + this->evtName = c.getString(col); - return 0; + return 0; } int CTvBooking::selectByID(int id, CTvBooking &CtvBook) { - CTvDatabase::Cursor c; - String8 sql; - - sql = String8("select * from booking_table where booking_table.db_evt_id = ") + String8::format("%d", id); - CTvDatabase::GetTvDb()->select(sql.string(), c); - if (c.moveToFirst()) { - CtvBook.InitFromCursor(c); - } else { - c.close(); - return -1; - } - - c.close(); - return 0; + CTvDatabase::Cursor c; + String8 sql; + + sql = String8("select * from booking_table where booking_table.db_evt_id = ") + String8::format("%d", id); + CTvDatabase::GetTvDb()->select(sql.string(), c); + if (c.moveToFirst()) { + CtvBook.InitFromCursor(c); + } else { + c.close(); + return -1; + } + + c.close(); + return 0; } int CTvBooking::getBookedEventList(Vector > &vBv) { - String8 cmd; + String8 cmd; - cmd = String8("select * from booking_table order by start"); + cmd = String8("select * from booking_table order by start"); - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); + CTvDatabase::Cursor c; + int ret = CTvDatabase::GetTvDb()->select(cmd, c); - if (c.moveToFirst()) { - do { - vBv.add(new CTvBooking(c)); - } while (c.moveToNext()); + if (c.moveToFirst()) { + do { + vBv.add(new CTvBooking(c)); + } while (c.moveToNext()); - } else { - c.close(); - return -1; - } + } else { + c.close(); + return -1; + } - c.close(); - return 0; + c.close(); + return 0; } int CTvBooking::bookProgram(CTvProgram &prog, CTvEvent &evt) { - String8 cmd; - String8 progName = String8(prog.getName()); - String8 evtName = String8(evt.getName()); + String8 cmd; + String8 progName = String8(prog.getName()); + String8 evtName = String8(evt.getName()); - /*book this program*/ - cmd = String8("insert into booking_table(db_srv_id, db_evt_id, srv_name, evt_name,") - + String8("start,duration,flag,status,file_name,vid_pid,vid_fmt,aud_pids,aud_fmts,aud_languages,") - + String8("sub_pids,sub_types,sub_composition_page_ids,sub_ancillary_page_ids,sub_languages,") - + String8("ttx_pids,ttx_types,ttx_magazine_numbers,ttx_page_numbers,ttx_languages, other_pids,from_storage,repeat)") - + String8("values(") + String8::format("%d,", prog.getID()) + String8::format("%d,", evt.getEventId()) + progName.string() + String8(",") + evtName.string() - + String8::format("%d,", evt.getStartTime()) + String8::format("%d,", evt.getEndTime() - evt.getStartTime()) + String8::format("%d,", flag) - + String8::format("%d,", status) + String8(",") + String8::format("%d,", prog.getVideo()->getPID()) + String8::format("%d,", prog.getVideo()->getFormat()) - + String8::format("%d,", prog.getAudio(0)->getPID()) + String8::format("%d,", prog.getAudio(0)->getFormat()) + prog.getAudio(0)->getLang().string() - + String8(" , , , , , , , , , , , , ,)"); + /*book this program*/ + cmd = String8("insert into booking_table(db_srv_id, db_evt_id, srv_name, evt_name,") + + String8("start,duration,flag,status,file_name,vid_pid,vid_fmt,aud_pids,aud_fmts,aud_languages,") + + String8("sub_pids,sub_types,sub_composition_page_ids,sub_ancillary_page_ids,sub_languages,") + + String8("ttx_pids,ttx_types,ttx_magazine_numbers,ttx_page_numbers,ttx_languages, other_pids,from_storage,repeat)") + + String8("values(") + String8::format("%d,", prog.getID()) + String8::format("%d,", evt.getEventId()) + progName.string() + String8(",") + evtName.string() + + String8::format("%d,", evt.getStartTime()) + String8::format("%d,", evt.getEndTime() - evt.getStartTime()) + String8::format("%d,", flag) + + String8::format("%d,", status) + String8(",") + String8::format("%d,", prog.getVideo()->getPID()) + String8::format("%d,", prog.getVideo()->getFormat()) + + String8::format("%d,", prog.getAudio(0)->getPID()) + String8::format("%d,", prog.getAudio(0)->getFormat()) + prog.getAudio(0)->getLang().string() + + String8(" , , , , , , , , , , , , ,)"); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); - return 0; + return 0; } int CTvBooking::deleteBook(int evtIdFlag) { - String8 cmd; + String8 cmd; - cmd = String8("delete from booking_table where db_evt_id=") - + String8::format("%d", evtIdFlag); + cmd = String8("delete from booking_table where db_evt_id=") + + String8::format("%d", evtIdFlag); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); - return 0; + return 0; } int CTvBooking::bookEvent(int evtId, bool bBookFlag) { - String8 cmd; + String8 cmd; - cmd = String8("update evt_table set sub_flag=") + String8::format("%d", bBookFlag) - + String8(" where db_id=") + String8::format("%d", evtId); + cmd = String8("update evt_table set sub_flag=") + String8::format("%d", bBookFlag) + + String8(" where db_id=") + String8::format("%d", evtId); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); - if (true == bBookFlag) { - CTvEvent evt; - CTvEvent::selectByID(evtId, evt); + if (true == bBookFlag) { + CTvEvent evt; + CTvEvent::selectByID(evtId, evt); - CTvProgram prog; - CTvProgram::selectByID(evt.getProgramId(), prog); + CTvProgram prog; + CTvProgram::selectByID(evt.getProgramId(), prog); - bookProgram(prog, evt); - } else { - deleteBook(evtId); - } + bookProgram(prog, evt); + } else { + deleteBook(evtId); + } - return 0; + return 0; } CTvBooking::CTvBooking(CTvDatabase::Cursor &c) { - InitFromCursor(c); + InitFromCursor(c); } CTvBooking::CTvBooking() diff --git a/tvapi/libtv/tv/CTvBooking.h b/tvapi/libtv/tv/CTvBooking.h index bf01afd..d724a7e 100644 --- a/tvapi/libtv/tv/CTvBooking.h +++ b/tvapi/libtv/tv/CTvBooking.h @@ -25,59 +25,59 @@ // ??????/ ??? class CTvBooking : public LightRefBase { public: - CTvBooking(CTvDatabase::Cursor &c); - CTvBooking(); - ~CTvBooking(); + CTvBooking(CTvDatabase::Cursor &c); + CTvBooking(); + ~CTvBooking(); - static int selectByID(int id, CTvBooking &CtvBook); + static int selectByID(int id, CTvBooking &CtvBook); - int bookEvent(int evtId, bool bBookFlag); - int getBookedEventList(Vector > &vBv); + int bookEvent(int evtId, bool bBookFlag); + int getBookedEventList(Vector > &vBv); - int getBookId() - { - return id; - }; - int getProgramId() - { - return programId; - }; - int getEventId() - { - return eventId; - }; - int getStartTime() - { - return start; - }; - int getDurationTime() - { - return duration; - }; - String8 &getProgName() - { - return progName; - }; - String8 &getEvtName() - { - return evtName; - }; + int getBookId() + { + return id; + }; + int getProgramId() + { + return programId; + }; + int getEventId() + { + return eventId; + }; + int getStartTime() + { + return start; + }; + int getDurationTime() + { + return duration; + }; + String8 &getProgName() + { + return progName; + }; + String8 &getEvtName() + { + return evtName; + }; private: - int deleteBook(int evtIdFlag) ; - int bookProgram(CTvProgram &prog, CTvEvent &evt); - int InitFromCursor(CTvDatabase::Cursor &c); + int deleteBook(int evtIdFlag) ; + int bookProgram(CTvProgram &prog, CTvEvent &evt); + int InitFromCursor(CTvDatabase::Cursor &c); private: - int id; - int programId; - int eventId; - int flag; - int status; - int repeat; - long start; - long duration; - String8 progName; - String8 evtName; + int id; + int programId; + int eventId; + int flag; + int status; + int repeat; + long start; + long duration; + String8 progName; + String8 evtName; }; #endif //_CTVBOOKING_H diff --git a/tvapi/libtv/tv/CTvDmx.cpp b/tvapi/libtv/tv/CTvDmx.cpp index 92f5598..ef6262e 100644 --- a/tvapi/libtv/tv/CTvDmx.cpp +++ b/tvapi/libtv/tv/CTvDmx.cpp @@ -1,7 +1,7 @@ #include "CTvDmx.h" CTvDmx::CTvDmx() { - mDmxDevId = 0; + mDmxDevId = 0; } CTvDmx::~CTvDmx() @@ -10,15 +10,15 @@ CTvDmx::~CTvDmx() int CTvDmx::Open(AM_DMX_OpenPara_t ¶) { - return AM_DMX_Open ( mDmxDevId, ¶ ); + return AM_DMX_Open ( mDmxDevId, ¶ ); } int CTvDmx::Close() { - return AM_DMX_Close ( mDmxDevId ); + return AM_DMX_Close ( mDmxDevId ); } int CTvDmx::SetSource(AM_DMX_Source_t source) { - return AM_DMX_SetSource ( mDmxDevId, source ); + return AM_DMX_SetSource ( mDmxDevId, source ); } diff --git a/tvapi/libtv/tv/CTvDmx.h b/tvapi/libtv/tv/CTvDmx.h index 63df2d2..4cefc71 100644 --- a/tvapi/libtv/tv/CTvDmx.h +++ b/tvapi/libtv/tv/CTvDmx.h @@ -6,12 +6,12 @@ class CTvDmx { public: - CTvDmx(); - ~CTvDmx(); - int Open(AM_DMX_OpenPara_t ¶); - int Close(); - int SetSource(AM_DMX_Source_t source); + CTvDmx(); + ~CTvDmx(); + int Open(AM_DMX_OpenPara_t ¶); + int Close(); + int SetSource(AM_DMX_Source_t source); private: - int mDmxDevId; + int mDmxDevId; }; #endif diff --git a/tvapi/libtv/tv/CTvEpg.cpp b/tvapi/libtv/tv/CTvEpg.cpp index 9726ed7..a46f9a9 100644 --- a/tvapi/libtv/tv/CTvEpg.cpp +++ b/tvapi/libtv/tv/CTvEpg.cpp @@ -13,137 +13,137 @@ void CTvEpg::epg_evt_callback(long dev_no, int event_type, void *param, void *user_data) { - CTvEpg *pEpg; - - AM_EPG_GetUserData((AM_EPG_Handle_t)dev_no, (void **)&pEpg); - - if (pEpg == NULL) return; - - if (pEpg->mpObserver == NULL) { - return; - } - switch (event_type) { - case AM_EPG_EVT_NEW_TDT: - case AM_EPG_EVT_NEW_STT: { - int utc_time; - AM_EPG_GetUTCTime(&utc_time); - pEpg->mCurEpgEv.type = EpgEvent::EVENT_TDT_END; - pEpg->mCurEpgEv.time = (long)utc_time; - pEpg->mpObserver->onEvent(pEpg->mCurEpgEv); - } - break; - case AM_EPG_EVT_UPDATE_EVENTS: - pEpg->mCurEpgEv.type = EpgEvent::EVENT_PROGRAM_EVENTS_UPDATE; - pEpg->mCurEpgEv.programID = (int)param; - pEpg->mpObserver->onEvent(pEpg->mCurEpgEv); - break; - case AM_EPG_EVT_UPDATE_PROGRAM_AV: - pEpg->mCurEpgEv.type = EpgEvent::EVENT_PROGRAM_AV_UPDATE; - pEpg->mCurEpgEv.programID = (int)param; - pEpg->mpObserver->onEvent(pEpg->mCurEpgEv); - break; - case AM_EPG_EVT_UPDATE_PROGRAM_NAME: - pEpg->mCurEpgEv.type = EpgEvent::EVENT_PROGRAM_NAME_UPDATE; - pEpg->mCurEpgEv.programID = (int)param; - pEpg->mpObserver->onEvent(pEpg->mCurEpgEv); - break; - case AM_EPG_EVT_UPDATE_TS: - pEpg->mCurEpgEv.type = EpgEvent::EVENT_CHANNEL_UPDATE; - pEpg->mCurEpgEv.channelID = (int)param; - pEpg->mpObserver->onEvent(pEpg->mCurEpgEv); - break; - default: - break; - } + CTvEpg *pEpg; + + AM_EPG_GetUserData((AM_EPG_Handle_t)dev_no, (void **)&pEpg); + + if (pEpg == NULL) return; + + if (pEpg->mpObserver == NULL) { + return; + } + switch (event_type) { + case AM_EPG_EVT_NEW_TDT: + case AM_EPG_EVT_NEW_STT: { + int utc_time; + AM_EPG_GetUTCTime(&utc_time); + pEpg->mCurEpgEv.type = EpgEvent::EVENT_TDT_END; + pEpg->mCurEpgEv.time = (long)utc_time; + pEpg->mpObserver->onEvent(pEpg->mCurEpgEv); + } + break; + case AM_EPG_EVT_UPDATE_EVENTS: + pEpg->mCurEpgEv.type = EpgEvent::EVENT_PROGRAM_EVENTS_UPDATE; + pEpg->mCurEpgEv.programID = (int)param; + pEpg->mpObserver->onEvent(pEpg->mCurEpgEv); + break; + case AM_EPG_EVT_UPDATE_PROGRAM_AV: + pEpg->mCurEpgEv.type = EpgEvent::EVENT_PROGRAM_AV_UPDATE; + pEpg->mCurEpgEv.programID = (int)param; + pEpg->mpObserver->onEvent(pEpg->mCurEpgEv); + break; + case AM_EPG_EVT_UPDATE_PROGRAM_NAME: + pEpg->mCurEpgEv.type = EpgEvent::EVENT_PROGRAM_NAME_UPDATE; + pEpg->mCurEpgEv.programID = (int)param; + pEpg->mpObserver->onEvent(pEpg->mCurEpgEv); + break; + case AM_EPG_EVT_UPDATE_TS: + pEpg->mCurEpgEv.type = EpgEvent::EVENT_CHANNEL_UPDATE; + pEpg->mCurEpgEv.channelID = (int)param; + pEpg->mpObserver->onEvent(pEpg->mCurEpgEv); + break; + default: + break; + } } void CTvEpg::Init(int fend, int dmx, int fend_mod, char *textLanguages, char *dvb_text_coding) { - mFend_dev_id = fend; - mDmx_dev_id = dmx; - mFend_mod = fend_mod; - epg_create(fend, dmx, fend_mod, textLanguages); - epg_set_dvb_text_coding(dvb_text_coding); + mFend_dev_id = fend; + mDmx_dev_id = dmx; + mFend_mod = fend_mod; + epg_create(fend, dmx, fend_mod, textLanguages); + epg_set_dvb_text_coding(dvb_text_coding); } void CTvEpg::epg_create(int fend_id, int dmx_id, int src, char *textLangs) { - AM_EPG_CreatePara_t para; - AM_ErrorCode_t ret; - AM_FEND_OpenPara_t fend_para; - AM_DMX_OpenPara_t dmx_para; - - LOGD("Opening demux%d ...", dmx_id); - memset(&dmx_para, 0, sizeof(dmx_para)); - AM_DMX_Open(dmx_id, &dmx_para); - - para.fend_dev = fend_id; - para.dmx_dev = dmx_id; - para.source = src; - para.hdb = NULL; - - - snprintf(para.text_langs, sizeof(para.text_langs), "%s", textLangs); - - - ret = AM_EPG_Create(¶, &mEpgScanHandle); - if (ret != AM_SUCCESS) { - LOGD("AM_EPG_Create failed"); - return; - } - - /*注册EIT通知事件*/ - AM_EVT_Subscribe((long)mEpgScanHandle, AM_EPG_EVT_NEW_TDT, epg_evt_callback, NULL); - AM_EVT_Subscribe((long)mEpgScanHandle, AM_EPG_EVT_NEW_STT, epg_evt_callback, NULL); - AM_EVT_Subscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_EVENTS, epg_evt_callback, NULL); - AM_EVT_Subscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_PROGRAM_AV, epg_evt_callback, NULL); - AM_EVT_Subscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_PROGRAM_NAME, epg_evt_callback, NULL); - AM_EVT_Subscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_TS, epg_evt_callback, NULL); - AM_EPG_SetUserData(mEpgScanHandle, (void *)this); + AM_EPG_CreatePara_t para; + AM_ErrorCode_t ret; + AM_FEND_OpenPara_t fend_para; + AM_DMX_OpenPara_t dmx_para; + + LOGD("Opening demux%d ...", dmx_id); + memset(&dmx_para, 0, sizeof(dmx_para)); + AM_DMX_Open(dmx_id, &dmx_para); + + para.fend_dev = fend_id; + para.dmx_dev = dmx_id; + para.source = src; + para.hdb = NULL; + + + snprintf(para.text_langs, sizeof(para.text_langs), "%s", textLangs); + + + ret = AM_EPG_Create(¶, &mEpgScanHandle); + if (ret != AM_SUCCESS) { + LOGD("AM_EPG_Create failed"); + return; + } + + /*注册EIT通知事件*/ + AM_EVT_Subscribe((long)mEpgScanHandle, AM_EPG_EVT_NEW_TDT, epg_evt_callback, NULL); + AM_EVT_Subscribe((long)mEpgScanHandle, AM_EPG_EVT_NEW_STT, epg_evt_callback, NULL); + AM_EVT_Subscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_EVENTS, epg_evt_callback, NULL); + AM_EVT_Subscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_PROGRAM_AV, epg_evt_callback, NULL); + AM_EVT_Subscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_PROGRAM_NAME, epg_evt_callback, NULL); + AM_EVT_Subscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_TS, epg_evt_callback, NULL); + AM_EPG_SetUserData(mEpgScanHandle, (void *)this); } void CTvEpg::epg_destroy() { - /*å注册EIT通知事件*/ - AM_EVT_Unsubscribe((long)mEpgScanHandle, AM_EPG_EVT_NEW_TDT, epg_evt_callback, NULL); - AM_EVT_Unsubscribe((long)mEpgScanHandle, AM_EPG_EVT_NEW_STT, epg_evt_callback, NULL); - AM_EVT_Unsubscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_EVENTS, epg_evt_callback, NULL); - AM_EVT_Unsubscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_PROGRAM_AV, epg_evt_callback, NULL); - AM_EVT_Unsubscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_PROGRAM_NAME, epg_evt_callback, NULL); - AM_EVT_Unsubscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_TS, epg_evt_callback, NULL); - AM_EPG_Destroy(mEpgScanHandle); - AM_DMX_Close(mDmx_dev_id); + /*å注册EIT通知事件*/ + AM_EVT_Unsubscribe((long)mEpgScanHandle, AM_EPG_EVT_NEW_TDT, epg_evt_callback, NULL); + AM_EVT_Unsubscribe((long)mEpgScanHandle, AM_EPG_EVT_NEW_STT, epg_evt_callback, NULL); + AM_EVT_Unsubscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_EVENTS, epg_evt_callback, NULL); + AM_EVT_Unsubscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_PROGRAM_AV, epg_evt_callback, NULL); + AM_EVT_Unsubscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_PROGRAM_NAME, epg_evt_callback, NULL); + AM_EVT_Unsubscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_TS, epg_evt_callback, NULL); + AM_EPG_Destroy(mEpgScanHandle); + AM_DMX_Close(mDmx_dev_id); } void CTvEpg::epg_change_mode(int op, int mode) { - AM_ErrorCode_t ret; - ret = AM_EPG_ChangeMode(mEpgScanHandle, op, mode); - if (ret != AM_SUCCESS) - LOGD("AM_EPG_ChangeMode failed"); + AM_ErrorCode_t ret; + ret = AM_EPG_ChangeMode(mEpgScanHandle, op, mode); + if (ret != AM_SUCCESS) + LOGD("AM_EPG_ChangeMode failed"); } void CTvEpg::epg_monitor_service(int srv_id) { - int ret = AM_EPG_MonitorService(mEpgScanHandle, srv_id); - if (ret != AM_SUCCESS) - LOGD("AM_EPG_MonitorService failed"); + int ret = AM_EPG_MonitorService(mEpgScanHandle, srv_id); + if (ret != AM_SUCCESS) + LOGD("AM_EPG_MonitorService failed"); } void CTvEpg::epg_set_dvb_text_coding(char *coding) { - if (!strcmp(coding, "standard")) { - AM_SI_SetDefaultDVBTextCoding(""); - } else { - AM_SI_SetDefaultDVBTextCoding(coding); - } + if (!strcmp(coding, "standard")) { + AM_SI_SetDefaultDVBTextCoding(""); + } else { + AM_SI_SetDefaultDVBTextCoding(coding); + } } @@ -151,13 +151,13 @@ void CTvEpg::epg_set_dvb_text_coding(char *coding) /*Start scan the sections.*/ void CTvEpg::startScan(int mode) { - epg_change_mode(MODE_ADD, mode); + epg_change_mode(MODE_ADD, mode); } /*Stop scan the sections.*/ void CTvEpg::stopScan(int mode) { - epg_change_mode(MODE_REMOVE, mode); + epg_change_mode(MODE_REMOVE, mode); } @@ -165,52 +165,52 @@ void CTvEpg::stopScan(int mode) void CTvEpg::enterChannel(int chan_id) { - if (chan_id == mCurScanChannelId) - return; - //already enter,leave it - if (mCurScanChannelId != INVALID_ID) { - leaveChannel(); - } + if (chan_id == mCurScanChannelId) + return; + //already enter,leave it + if (mCurScanChannelId != INVALID_ID) { + leaveChannel(); + } - if (mFend_mod == CTvChannel::MODE_ATSC) { - startScan(SCAN_PSIP_ETT | SCAN_PSIP_EIT | SCAN_MGT | SCAN_VCT | SCAN_RRT | SCAN_STT); - } else { - startScan(SCAN_EIT_ALL | SCAN_SDT | SCAN_NIT | SCAN_TDT | SCAN_CAT); - } + if (mFend_mod == CTvChannel::MODE_ATSC) { + startScan(SCAN_PSIP_ETT | SCAN_PSIP_EIT | SCAN_MGT | SCAN_VCT | SCAN_RRT | SCAN_STT); + } else { + startScan(SCAN_EIT_ALL | SCAN_SDT | SCAN_NIT | SCAN_TDT | SCAN_CAT); + } - mCurScanChannelId = chan_id; + mCurScanChannelId = chan_id; } /*Leave the channel.*/ void CTvEpg::leaveChannel() { - stopScan(SCAN_ALL); - mCurScanChannelId = INVALID_ID; + stopScan(SCAN_ALL); + mCurScanChannelId = INVALID_ID; } /*Enter the program.*/ void CTvEpg::enterProgram(int prog_id) { - if (prog_id == mCurScanProgramId) - return; + if (prog_id == mCurScanProgramId) + return; - if (mCurScanProgramId != INVALID_ID) { - leaveProgram(); - } + if (mCurScanProgramId != INVALID_ID) { + leaveProgram(); + } - mCurScanProgramId = prog_id; - epg_monitor_service(mCurScanProgramId);//---------db_id - startScan(SCAN_PAT | SCAN_PMT); + mCurScanProgramId = prog_id; + epg_monitor_service(mCurScanProgramId);//---------db_id + startScan(SCAN_PAT | SCAN_PMT); } /*Leave the program.*/ void CTvEpg::leaveProgram() { - if (mCurScanProgramId == INVALID_ID) - return; + if (mCurScanProgramId == INVALID_ID) + return; - stopScan(SCAN_PAT | SCAN_PMT); - epg_monitor_service(-1); - mCurScanProgramId = INVALID_ID; + stopScan(SCAN_PAT | SCAN_PMT); + epg_monitor_service(-1); + mCurScanProgramId = INVALID_ID; } diff --git a/tvapi/libtv/tv/CTvEpg.h b/tvapi/libtv/tv/CTvEpg.h index 2671c12..8242f3c 100644 --- a/tvapi/libtv/tv/CTvEpg.h +++ b/tvapi/libtv/tv/CTvEpg.h @@ -14,145 +14,145 @@ #define _CDTVEPG_H class CTvEpg { public : - static const int MODE_ADD = 0; - static const int MODE_REMOVE = 1; - static const int MODE_SET = 2; - - static const int SCAN_PAT = 0x01; - static const int SCAN_PMT = 0x02; - static const int SCAN_CAT = 0x04; - static const int SCAN_SDT = 0x08; - static const int SCAN_NIT = 0x10; - static const int SCAN_TDT = 0x20; - static const int SCAN_EIT_PF_ACT = 0x40; - static const int SCAN_EIT_PF_OTH = 0x80; - static const int SCAN_EIT_SCHE_ACT = 0x100; - static const int SCAN_EIT_SCHE_OTH = 0x200; - static const int SCAN_MGT = 0x400; - static const int SCAN_VCT = 0x800; - static const int SCAN_STT = 0x1000; - static const int SCAN_RRT = 0x2000; - static const int SCAN_PSIP_EIT = 0x4000; - static const int SCAN_PSIP_ETT = 0x8000; - static const int SCAN_EIT_PF_ALL = SCAN_EIT_PF_ACT | SCAN_EIT_PF_OTH; - static const int SCAN_EIT_SCHE_ALL = SCAN_EIT_SCHE_ACT | SCAN_EIT_SCHE_OTH; - static const int SCAN_EIT_ALL = SCAN_EIT_PF_ALL | SCAN_EIT_SCHE_ALL; - static const int SCAN_ALL = SCAN_PAT | SCAN_PMT | SCAN_CAT | SCAN_SDT | SCAN_NIT | SCAN_TDT | SCAN_EIT_ALL | - SCAN_MGT | SCAN_VCT | SCAN_STT | SCAN_RRT | SCAN_PSIP_EIT | SCAN_PSIP_ETT; - - static const int INVALID_ID = -1; - - //egp notify - /*static const int EVENT_PF_EIT_END = 1; - static const int EVENT_SCH_EIT_END = 2; - static const int EVENT_PMT_END = 3; - static const int EVENT_SDT_END = 4; - static const int EVENT_TDT_END = 5; - static const int EVENT_NIT_END = 6; - static const int EVENT_PROGRAM_AV_UPDATE = 7; - static const int EVENT_PROGRAM_NAME_UPDATE = 8; - static const int EVENT_PROGRAM_EVENTS_UPDATE = 9; - static const int EVENT_CHANNEL_UPDATE = 10;*/ - // - class EpgEvent : public CTvEv { - public: - EpgEvent(): CTvEv(CTvEv::TV_EVENT_EPG) - { - - }; - ~EpgEvent() - { - }; - static const int EVENT_PF_EIT_END = 1; - static const int EVENT_SCH_EIT_END = 2; - static const int EVENT_PMT_END = 3; - static const int EVENT_SDT_END = 4; - static const int EVENT_TDT_END = 5; - static const int EVENT_NIT_END = 6; - static const int EVENT_PROGRAM_AV_UPDATE = 7; - static const int EVENT_PROGRAM_NAME_UPDATE = 8; - static const int EVENT_PROGRAM_EVENTS_UPDATE = 9; - static const int EVENT_CHANNEL_UPDATE = 10; - static const int EVENT_CHANNEL_UPDATE_END = 11; - - int type; - int channelID; - int programID; - int dvbOrigNetID; - int dvbTSID; - int dvbServiceID; - long time; - int dvbVersion; - }; - - class IObserver { - public: - IObserver() {}; - virtual ~IObserver() {}; - virtual void onEvent(const EpgEvent &ev) = 0; - }; - //1 VS n - //int addObserver(IObserver* ob); - //int removeObserver(IObserver* ob); - - //1 VS 1 - int setObserver(IObserver *ob) - { - mpObserver = ob; - return 0; - } - - CTvEpg() - { - mCurScanChannelId = INVALID_ID; - mCurScanProgramId = INVALID_ID; - mEpgScanHandle = NULL; - mpObserver = NULL; - } - void Init(int fend, int dmx, int fend_mod, char *textLanguages, char *dvb_text_coding); - - ~CTvEpg() - { - epg_destroy(); - } - - /*Enter a channel.*/ - void enterChannel(int chan_id); - /*Leave the channel.*/ - void leaveChannel(); - /*Enter the program.*/ - void enterProgram(int prog_id); - /*Leave the program.*/ - void leaveProgram(); + static const int MODE_ADD = 0; + static const int MODE_REMOVE = 1; + static const int MODE_SET = 2; + + static const int SCAN_PAT = 0x01; + static const int SCAN_PMT = 0x02; + static const int SCAN_CAT = 0x04; + static const int SCAN_SDT = 0x08; + static const int SCAN_NIT = 0x10; + static const int SCAN_TDT = 0x20; + static const int SCAN_EIT_PF_ACT = 0x40; + static const int SCAN_EIT_PF_OTH = 0x80; + static const int SCAN_EIT_SCHE_ACT = 0x100; + static const int SCAN_EIT_SCHE_OTH = 0x200; + static const int SCAN_MGT = 0x400; + static const int SCAN_VCT = 0x800; + static const int SCAN_STT = 0x1000; + static const int SCAN_RRT = 0x2000; + static const int SCAN_PSIP_EIT = 0x4000; + static const int SCAN_PSIP_ETT = 0x8000; + static const int SCAN_EIT_PF_ALL = SCAN_EIT_PF_ACT | SCAN_EIT_PF_OTH; + static const int SCAN_EIT_SCHE_ALL = SCAN_EIT_SCHE_ACT | SCAN_EIT_SCHE_OTH; + static const int SCAN_EIT_ALL = SCAN_EIT_PF_ALL | SCAN_EIT_SCHE_ALL; + static const int SCAN_ALL = SCAN_PAT | SCAN_PMT | SCAN_CAT | SCAN_SDT | SCAN_NIT | SCAN_TDT | SCAN_EIT_ALL | + SCAN_MGT | SCAN_VCT | SCAN_STT | SCAN_RRT | SCAN_PSIP_EIT | SCAN_PSIP_ETT; + + static const int INVALID_ID = -1; + + //egp notify + /*static const int EVENT_PF_EIT_END = 1; + static const int EVENT_SCH_EIT_END = 2; + static const int EVENT_PMT_END = 3; + static const int EVENT_SDT_END = 4; + static const int EVENT_TDT_END = 5; + static const int EVENT_NIT_END = 6; + static const int EVENT_PROGRAM_AV_UPDATE = 7; + static const int EVENT_PROGRAM_NAME_UPDATE = 8; + static const int EVENT_PROGRAM_EVENTS_UPDATE = 9; + static const int EVENT_CHANNEL_UPDATE = 10;*/ + // + class EpgEvent : public CTvEv { + public: + EpgEvent(): CTvEv(CTvEv::TV_EVENT_EPG) + { + + }; + ~EpgEvent() + { + }; + static const int EVENT_PF_EIT_END = 1; + static const int EVENT_SCH_EIT_END = 2; + static const int EVENT_PMT_END = 3; + static const int EVENT_SDT_END = 4; + static const int EVENT_TDT_END = 5; + static const int EVENT_NIT_END = 6; + static const int EVENT_PROGRAM_AV_UPDATE = 7; + static const int EVENT_PROGRAM_NAME_UPDATE = 8; + static const int EVENT_PROGRAM_EVENTS_UPDATE = 9; + static const int EVENT_CHANNEL_UPDATE = 10; + static const int EVENT_CHANNEL_UPDATE_END = 11; + + int type; + int channelID; + int programID; + int dvbOrigNetID; + int dvbTSID; + int dvbServiceID; + long time; + int dvbVersion; + }; + + class IObserver { + public: + IObserver() {}; + virtual ~IObserver() {}; + virtual void onEvent(const EpgEvent &ev) = 0; + }; + //1 VS n + //int addObserver(IObserver* ob); + //int removeObserver(IObserver* ob); + + //1 VS 1 + int setObserver(IObserver *ob) + { + mpObserver = ob; + return 0; + } + + CTvEpg() + { + mCurScanChannelId = INVALID_ID; + mCurScanProgramId = INVALID_ID; + mEpgScanHandle = NULL; + mpObserver = NULL; + } + void Init(int fend, int dmx, int fend_mod, char *textLanguages, char *dvb_text_coding); + + ~CTvEpg() + { + epg_destroy(); + } + + /*Enter a channel.*/ + void enterChannel(int chan_id); + /*Leave the channel.*/ + void leaveChannel(); + /*Enter the program.*/ + void enterProgram(int prog_id); + /*Leave the program.*/ + void leaveProgram(); private: - // - void epg_create(int fend_id, int dmx_id, int src, char *textLangs); - void epg_destroy(); - void epg_change_mode(int op, int mode); - void epg_monitor_service(int srv_id); - void epg_set_dvb_text_coding(char *coding); - - - /*Start scan the sections.*/ - void startScan(int mode); - /*Stop scan the sections.*/ - void stopScan(int mode); - - static void epg_evt_callback(long dev_no, int event_type, void *param, void *user_data); - - // - IObserver *mpObserver; - - // - AM_EPG_Handle_t mEpgScanHandle; - int mFend_dev_id; - int mDmx_dev_id ; - int mFend_mod; - int mCurScanChannelId ; - int mCurScanProgramId ; - - // - EpgEvent mCurEpgEv; + // + void epg_create(int fend_id, int dmx_id, int src, char *textLangs); + void epg_destroy(); + void epg_change_mode(int op, int mode); + void epg_monitor_service(int srv_id); + void epg_set_dvb_text_coding(char *coding); + + + /*Start scan the sections.*/ + void startScan(int mode); + /*Stop scan the sections.*/ + void stopScan(int mode); + + static void epg_evt_callback(long dev_no, int event_type, void *param, void *user_data); + + // + IObserver *mpObserver; + + // + AM_EPG_Handle_t mEpgScanHandle; + int mFend_dev_id; + int mDmx_dev_id ; + int mFend_mod; + int mCurScanChannelId ; + int mCurScanProgramId ; + + // + EpgEvent mCurEpgEv; }; #endif //_CDTVEPG_H diff --git a/tvapi/libtv/tv/CTvEv.cpp b/tvapi/libtv/tv/CTvEv.cpp index 93f2580..eb7129d 100644 --- a/tvapi/libtv/tv/CTvEv.cpp +++ b/tvapi/libtv/tv/CTvEv.cpp @@ -7,5 +7,5 @@ #include "CTvEv.h" CTvEv::CTvEv(int type) { - mEvType = type; + mEvType = type; } diff --git a/tvapi/libtv/tv/CTvEv.h b/tvapi/libtv/tv/CTvEv.h index c364656..455cffa 100644 --- a/tvapi/libtv/tv/CTvEv.h +++ b/tvapi/libtv/tv/CTvEv.h @@ -13,180 +13,180 @@ using namespace android; class CTvEv { public: - static const int TV_EVENT_COMMOM = 0;//é€šç”¨æ¶ˆæ¯ - static const int TV_EVENT_SCANNER = 1;//æœç´¢æ¶ˆæ¯ - static const int TV_EVENT_EPG = 2;//EPG状æ€æ¶ˆæ¯ - static const int TV_EVENT_SOURCE_SWITCH = 3;//ä¿¡æºåˆ‡æ¢ - static const int TV_EVENT_SIGLE_DETECT = 4;//ä¿¡å·æ£€æµ‹ - static const int TV_EVENT_ADC_CALIBRATION = 5;//ADC校准 - static const int TV_EVENT_VGA = 6;//VGA - static const int TV_EVENT_3D_STATE = 7;//3D - static const int TV_EVENT_AV_PLAYBACK = 8;//PLAYBACK EVENT MSG - static const int TV_EVENT_SERIAL_COMMUNICATION = 9; - static const int TV_EVENT_SOURCE_CONNECT = 10; - static const int TV_EVENT_HDMIRX_CEC = 11; - static const int TV_EVENT_BLOCK = 12; - static const int TV_EVENT_CC = 13; //close caption - static const int TV_EVENT_VCHIP = 14; //VCHIP - static const int TV_EVENT_HDMI_IN_CAP = 15; - static const int TV_EVENT_UPGRADE_FBC = 16; - static const int TV_EVENT_2d4G_HEADSET = 17; - static const int TV_EVENT_AV = 18; - static const int TV_EVENT_SUBTITLE = 19; + static const int TV_EVENT_COMMOM = 0;//é€šç”¨æ¶ˆæ¯ + static const int TV_EVENT_SCANNER = 1;//æœç´¢æ¶ˆæ¯ + static const int TV_EVENT_EPG = 2;//EPG状æ€æ¶ˆæ¯ + static const int TV_EVENT_SOURCE_SWITCH = 3;//ä¿¡æºåˆ‡æ¢ + static const int TV_EVENT_SIGLE_DETECT = 4;//ä¿¡å·æ£€æµ‹ + static const int TV_EVENT_ADC_CALIBRATION = 5;//ADC校准 + static const int TV_EVENT_VGA = 6;//VGA + static const int TV_EVENT_3D_STATE = 7;//3D + static const int TV_EVENT_AV_PLAYBACK = 8;//PLAYBACK EVENT MSG + static const int TV_EVENT_SERIAL_COMMUNICATION = 9; + static const int TV_EVENT_SOURCE_CONNECT = 10; + static const int TV_EVENT_HDMIRX_CEC = 11; + static const int TV_EVENT_BLOCK = 12; + static const int TV_EVENT_CC = 13; //close caption + static const int TV_EVENT_VCHIP = 14; //VCHIP + static const int TV_EVENT_HDMI_IN_CAP = 15; + static const int TV_EVENT_UPGRADE_FBC = 16; + static const int TV_EVENT_2d4G_HEADSET = 17; + static const int TV_EVENT_AV = 18; + static const int TV_EVENT_SUBTITLE = 19; - CTvEv(int type); - virtual ~CTvEv() {}; - int getEvType() const - { - return mEvType; - }; + CTvEv(int type); + virtual ~CTvEv() {}; + int getEvType() const + { + return mEvType; + }; private: - int mEvType; + int mEvType; }; namespace TvEvent { - //events - class SignalInfoEvent: public CTvEv { - public: - SignalInfoEvent() : CTvEv ( CTvEv::TV_EVENT_SIGLE_DETECT ) - { - } - ~SignalInfoEvent() - { - } - int mTrans_fmt; - int mFmt; - int mStatus; - int mReserved; - }; + //events + class SignalInfoEvent: public CTvEv { + public: + SignalInfoEvent() : CTvEv ( CTvEv::TV_EVENT_SIGLE_DETECT ) + { + } + ~SignalInfoEvent() + { + } + int mTrans_fmt; + int mFmt; + int mStatus; + int mReserved; + }; - class VGAEvent: public CTvEv { - public: - VGAEvent() : CTvEv ( CTvEv::TV_EVENT_VGA ) - { - } - ~VGAEvent() - { - } - int mState; - }; + class VGAEvent: public CTvEv { + public: + VGAEvent() : CTvEv ( CTvEv::TV_EVENT_VGA ) + { + } + ~VGAEvent() + { + } + int mState; + }; - class ADCCalibrationEvent: public CTvEv { - public: - ADCCalibrationEvent() : CTvEv ( CTvEv::TV_EVENT_ADC_CALIBRATION ) - { - } - ~ADCCalibrationEvent() - { - } - int mState; - }; + class ADCCalibrationEvent: public CTvEv { + public: + ADCCalibrationEvent() : CTvEv ( CTvEv::TV_EVENT_ADC_CALIBRATION ) + { + } + ~ADCCalibrationEvent() + { + } + int mState; + }; - class SerialCommunicationEvent: public CTvEv { - public: - SerialCommunicationEvent(): CTvEv(CTvEv::TV_EVENT_SERIAL_COMMUNICATION) - { - } - ~SerialCommunicationEvent() - { - } - public: - int mDevId; - int mDataCount; - unsigned char mDataBuf[CC_MAX_SERIAL_RD_BUF_LEN]; - }; + class SerialCommunicationEvent: public CTvEv { + public: + SerialCommunicationEvent(): CTvEv(CTvEv::TV_EVENT_SERIAL_COMMUNICATION) + { + } + ~SerialCommunicationEvent() + { + } + public: + int mDevId; + int mDataCount; + unsigned char mDataBuf[CC_MAX_SERIAL_RD_BUF_LEN]; + }; - class SourceConnectEvent: public CTvEv { - public: - SourceConnectEvent() : CTvEv ( CTvEv::TV_EVENT_SOURCE_CONNECT ) - { - } - ~SourceConnectEvent() - { - } - int mSourceInput; - int connectionState; - }; + class SourceConnectEvent: public CTvEv { + public: + SourceConnectEvent() : CTvEv ( CTvEv::TV_EVENT_SOURCE_CONNECT ) + { + } + ~SourceConnectEvent() + { + } + int mSourceInput; + int connectionState; + }; - class HDMIRxCECEvent: public CTvEv { - public: - HDMIRxCECEvent() : CTvEv ( CTvEv::TV_EVENT_HDMIRX_CEC ) - { - } - ~HDMIRxCECEvent() - { - } - int mDataCount; - int mDataBuf[32]; - }; + class HDMIRxCECEvent: public CTvEv { + public: + HDMIRxCECEvent() : CTvEv ( CTvEv::TV_EVENT_HDMIRX_CEC ) + { + } + ~HDMIRxCECEvent() + { + } + int mDataCount; + int mDataBuf[32]; + }; - class AVPlaybackEvent: public CTvEv { - public: - AVPlaybackEvent() : CTvEv ( CTvEv::TV_EVENT_AV_PLAYBACK ) - { - } - ~AVPlaybackEvent() - { - } - static const int EVENT_AV_PLAYBACK_NODATA = 1; - static const int EVENT_AV_PLAYBACK_RESUME = 2; - static const int EVENT_AV_SCAMBLED = 3; - static const int EVENT_AV_UNSUPPORT = 4; + class AVPlaybackEvent: public CTvEv { + public: + AVPlaybackEvent() : CTvEv ( CTvEv::TV_EVENT_AV_PLAYBACK ) + { + } + ~AVPlaybackEvent() + { + } + static const int EVENT_AV_PLAYBACK_NODATA = 1; + static const int EVENT_AV_PLAYBACK_RESUME = 2; + static const int EVENT_AV_SCAMBLED = 3; + static const int EVENT_AV_UNSUPPORT = 4; - public: - int mMsgType; - int mProgramId; - }; - class BlockEvent: public CTvEv { - public: - BlockEvent() : CTvEv ( CTvEv::TV_EVENT_BLOCK ) - { - } - ~BlockEvent() - { - } - public: - bool block_status; - int programBlockType; - String8 vchipDimension; - String8 vchipAbbrev; - String8 vchipAbbtext; - }; + public: + int mMsgType; + int mProgramId; + }; + class BlockEvent: public CTvEv { + public: + BlockEvent() : CTvEv ( CTvEv::TV_EVENT_BLOCK ) + { + } + ~BlockEvent() + { + } + public: + bool block_status; + int programBlockType; + String8 vchipDimension; + String8 vchipAbbrev; + String8 vchipAbbtext; + }; - class UpgradeFBCEvent: public CTvEv { - public: - UpgradeFBCEvent() : CTvEv ( CTvEv::TV_EVENT_UPGRADE_FBC ) - { - } - ~UpgradeFBCEvent() - { - } - int mState; - int param; - }; + class UpgradeFBCEvent: public CTvEv { + public: + UpgradeFBCEvent() : CTvEv ( CTvEv::TV_EVENT_UPGRADE_FBC ) + { + } + ~UpgradeFBCEvent() + { + } + int mState; + int param; + }; - class HeadSetOf2d4GEvent: public CTvEv { - public: - HeadSetOf2d4GEvent(): CTvEv(CTvEv::TV_EVENT_2d4G_HEADSET) - { - } - ~HeadSetOf2d4GEvent() - { - } - public: - int state; - int para; - }; - class SubtitleEvent: public CTvEv { - public: - SubtitleEvent(): CTvEv(CTvEv::TV_EVENT_SUBTITLE) - { - } - ~SubtitleEvent() - { - } - int pic_width; - int pic_height; - }; + class HeadSetOf2d4GEvent: public CTvEv { + public: + HeadSetOf2d4GEvent(): CTvEv(CTvEv::TV_EVENT_2d4G_HEADSET) + { + } + ~HeadSetOf2d4GEvent() + { + } + public: + int state; + int para; + }; + class SubtitleEvent: public CTvEv { + public: + SubtitleEvent(): CTvEv(CTvEv::TV_EVENT_SUBTITLE) + { + } + ~SubtitleEvent() + { + } + int pic_width; + int pic_height; + }; }; #endif diff --git a/tvapi/libtv/tv/CTvRecord.cpp b/tvapi/libtv/tv/CTvRecord.cpp index 0327c96..564f4f3 100644 --- a/tvapi/libtv/tv/CTvRecord.cpp +++ b/tvapi/libtv/tv/CTvRecord.cpp @@ -25,252 +25,252 @@ #define DVR_DEV_COUNT (2) typedef struct { - int id; - char file_name[256]; - pthread_t thread; - int running; - int fd; + int id; + char file_name[256]; + pthread_t thread; + int running; + int fd; } DVRData; static DVRData data_threads[DVR_DEV_COUNT]; int pvr_init = 0; CTvRecord::CTvRecord() { - AM_DVR_OpenPara_t dpara; - memset(&dpara, 0, sizeof(dpara)); - AM_DVR_Open(DVR_DEV_NO, &dpara); - data_threads[DVR_DEV_NO].id = 0; - data_threads[DVR_DEV_NO].fd = -1; - data_threads[DVR_DEV_NO].running = 0; - - AM_DVR_SetSource(DVR_DEV_NO, AM_DVR_SRC_ASYNC_FIFO0); - AM_DVR_SetBufferSize(DVR_DEV_NO, DVR_BUF_SIZE); - - memset(filename, 0, sizeof(filename)); - progid = 0xFFFF; - vpid = 0x1fff; - apid = 0x1fff; + AM_DVR_OpenPara_t dpara; + memset(&dpara, 0, sizeof(dpara)); + AM_DVR_Open(DVR_DEV_NO, &dpara); + data_threads[DVR_DEV_NO].id = 0; + data_threads[DVR_DEV_NO].fd = -1; + data_threads[DVR_DEV_NO].running = 0; + + AM_DVR_SetSource(DVR_DEV_NO, AM_DVR_SRC_ASYNC_FIFO0); + AM_DVR_SetBufferSize(DVR_DEV_NO, DVR_BUF_SIZE); + + memset(filename, 0, sizeof(filename)); + progid = 0xFFFF; + vpid = 0x1fff; + apid = 0x1fff; } CTvRecord::~CTvRecord() { - AM_DVR_Close(DVR_DEV_NO); + AM_DVR_Close(DVR_DEV_NO); } void CTvRecord::dvr_init(void) { - AM_DVR_OpenPara_t para; - char buf[32]; + AM_DVR_OpenPara_t para; + char buf[32]; - if (pvr_init) - return; + if (pvr_init) + return; - memset(¶, 0, sizeof(para)); - LOGD("%s,%d", "TV", __LINE__); + memset(¶, 0, sizeof(para)); + LOGD("%s,%d", "TV", __LINE__); - AM_DVR_Open(DVR_DEV_NO, ¶); - AM_DVR_SetSource(DVR_DEV_NO, AM_DVR_SRC_ASYNC_FIFO0); - AM_DVR_SetBufferSize(DVR_DEV_NO, DVR_BUF_SIZE); + AM_DVR_Open(DVR_DEV_NO, ¶); + AM_DVR_SetSource(DVR_DEV_NO, AM_DVR_SRC_ASYNC_FIFO0); + AM_DVR_SetBufferSize(DVR_DEV_NO, DVR_BUF_SIZE); - snprintf(buf, sizeof(buf), "%d", (512 * 1024)); - AM_FileEcho("/sys/class/dmx/asyncfifo_len", buf); + snprintf(buf, sizeof(buf), "%d", (512 * 1024)); + AM_FileEcho("/sys/class/dmx/asyncfifo_len", buf); - pvr_init = 1; + pvr_init = 1; } char *CTvRecord::GetRecordFileName() { - return filename; + return filename; } void CTvRecord::SetRecordFileName(char *name) { - strcpy(filename, name); + strcpy(filename, name); } void CTvRecord::SetCurRecProgramId(int id) { - progid = id; + progid = id; } int CTvRecord::dvr_data_write(int fd, uint8_t *buf, int size) { - int ret; - int left = size; - uint8_t *p = buf; - LOGD("%s,%d", "TV", __LINE__); - - while (left > 0) { - ret = write(fd, p, left); - if (ret == -1) { - if (errno != EINTR) { - LOGD("Write DVR data failed: %s", strerror(errno)); - break; - } - ret = 0; - } - - left -= ret; - p += ret; - } - - return (size - left); + int ret; + int left = size; + uint8_t *p = buf; + LOGD("%s,%d", "TV", __LINE__); + + while (left > 0) { + ret = write(fd, p, left); + if (ret == -1) { + if (errno != EINTR) { + LOGD("Write DVR data failed: %s", strerror(errno)); + break; + } + ret = 0; + } + + left -= ret; + p += ret; + } + + return (size - left); } void *CTvRecord::dvr_data_thread(void *arg) { - DVRData *dd = (DVRData *)arg; - int cnt; - uint8_t buf[256 * 1024]; - - LOGD("Data thread for DVR%d start ,record file will save to '%s'", dd->id, dd->file_name); - LOGD("%s,%d", "TV", __LINE__); - - while (dd->running) { - cnt = AM_DVR_Read(dd->id, buf, sizeof(buf), 1000); - if (cnt <= 0) { - LOGD("No data available from DVR%d", dd->id); - usleep(200 * 1000); - continue; - } - //AM_DEBUG(1, "read from DVR%d return %d bytes", dd->id, cnt); - if (dd->fd != -1) { - dvr_data_write(dd->fd, buf, cnt); - } - } - - if (dd->fd != -1) { - close(dd->fd); - dd->fd = -1; - } - LOGD("Data thread for DVR%d now exit", dd->id); - - return NULL; + DVRData *dd = (DVRData *)arg; + int cnt; + uint8_t buf[256 * 1024]; + + LOGD("Data thread for DVR%d start ,record file will save to '%s'", dd->id, dd->file_name); + LOGD("%s,%d", "TV", __LINE__); + + while (dd->running) { + cnt = AM_DVR_Read(dd->id, buf, sizeof(buf), 1000); + if (cnt <= 0) { + LOGD("No data available from DVR%d", dd->id); + usleep(200 * 1000); + continue; + } + //AM_DEBUG(1, "read from DVR%d return %d bytes", dd->id, cnt); + if (dd->fd != -1) { + dvr_data_write(dd->fd, buf, cnt); + } + } + + if (dd->fd != -1) { + close(dd->fd); + dd->fd = -1; + } + LOGD("Data thread for DVR%d now exit", dd->id); + + return NULL; } void CTvRecord::start_data_thread(int dev_no) { - DVRData *dd = &data_threads[dev_no]; - - if (dd->running) - return; - LOGD("%s,%d,dev=%d", "TV", __LINE__, dev_no); - dd->fd = open(dd->file_name, O_TRUNC | O_WRONLY | O_CREAT, 0666); - if (dd->fd == -1) { - LOGD("Cannot open record file '%s' for DVR%d, %s", dd->file_name, dd->id, strerror(errno)); - return; - } - dd->running = 1; - pthread_create(&dd->thread, NULL, dvr_data_thread, dd); + DVRData *dd = &data_threads[dev_no]; + + if (dd->running) + return; + LOGD("%s,%d,dev=%d", "TV", __LINE__, dev_no); + dd->fd = open(dd->file_name, O_TRUNC | O_WRONLY | O_CREAT, 0666); + if (dd->fd == -1) { + LOGD("Cannot open record file '%s' for DVR%d, %s", dd->file_name, dd->id, strerror(errno)); + return; + } + dd->running = 1; + pthread_create(&dd->thread, NULL, dvr_data_thread, dd); } void CTvRecord::get_cur_program_pid(int progId) { - CTvProgram prog; - int aindex; - CTvProgram::Audio *pA; - CTvProgram::Video *pV; - int ret = CTvProgram::selectByID(progId, prog); - if (ret != 0) return; - - LOGD("%s,%d", "TV", __LINE__); - pV = prog.getVideo(); - if (pV != NULL) { - setvpid(pV->getPID()); - } - - aindex = prog.getCurrAudioTrackIndex(); - if (-1 == aindex) { //db is default - aindex = prog.getCurrentAudio(String8("eng")); - if (aindex >= 0) { - prog.setCurrAudioTrackIndex(progId, aindex); - } - } - - if (aindex >= 0) { - pA = prog.getAudio(aindex); - if (pA != NULL) { - setapid(pA->getPID()); - } - } + CTvProgram prog; + int aindex; + CTvProgram::Audio *pA; + CTvProgram::Video *pV; + int ret = CTvProgram::selectByID(progId, prog); + if (ret != 0) return; + + LOGD("%s,%d", "TV", __LINE__); + pV = prog.getVideo(); + if (pV != NULL) { + setvpid(pV->getPID()); + } + + aindex = prog.getCurrAudioTrackIndex(); + if (-1 == aindex) { //db is default + aindex = prog.getCurrentAudio(String8("eng")); + if (aindex >= 0) { + prog.setCurrAudioTrackIndex(progId, aindex); + } + } + + if (aindex >= 0) { + pA = prog.getAudio(aindex); + if (pA != NULL) { + setapid(pA->getPID()); + } + } } int CTvRecord::start_dvr() { - AM_DVR_StartRecPara_t spara; - int pid_cnt; - int pids[2]; - - /**½ö²âÊÔ×î¶à8¸öPID*/ - get_cur_program_pid(progid); - pids[0] = getvpid(); - pids[1] = getapid(); - - strcpy(data_threads[DVR_DEV_NO].file_name, GetRecordFileName()); - LOGD("%s,%d", "TV", __LINE__); - //sprintf(data_threads[DVR_DEV_NO].file_name,"%s","/storage/external_storage/sda4/testdvr.ts"); - spara.pid_count = 2; - memcpy(&spara.pids, pids, sizeof(pids)); - - if (AM_DVR_StartRecord(DVR_DEV_NO, &spara) == AM_SUCCESS) { - start_data_thread(DVR_DEV_NO); - } - - return 0; + AM_DVR_StartRecPara_t spara; + int pid_cnt; + int pids[2]; + + /**½ö²âÊÔ×î¶à8¸öPID*/ + get_cur_program_pid(progid); + pids[0] = getvpid(); + pids[1] = getapid(); + + strcpy(data_threads[DVR_DEV_NO].file_name, GetRecordFileName()); + LOGD("%s,%d", "TV", __LINE__); + //sprintf(data_threads[DVR_DEV_NO].file_name,"%s","/storage/external_storage/sda4/testdvr.ts"); + spara.pid_count = 2; + memcpy(&spara.pids, pids, sizeof(pids)); + + if (AM_DVR_StartRecord(DVR_DEV_NO, &spara) == AM_SUCCESS) { + start_data_thread(DVR_DEV_NO); + } + + return 0; } void CTvRecord::stop_data_thread(int dev_no) { - DVRData *dd = &data_threads[dev_no]; - LOGD("%s,%d", "TV", __LINE__); - - if (! dd->running) - return; - dd->running = 0; - pthread_join(dd->thread, NULL); - LOGD("Data thread for DVR%d has exit", dd->id); + DVRData *dd = &data_threads[dev_no]; + LOGD("%s,%d", "TV", __LINE__); + + if (! dd->running) + return; + dd->running = 0; + pthread_join(dd->thread, NULL); + LOGD("Data thread for DVR%d has exit", dd->id); } void CTvRecord::StartRecord(int id) { - AM_DVR_OpenPara_t dpara; - fe_status_t status; - char buf[32]; - - AM_FEND_GetStatus(FEND_DEV_NO, &status); - - if (status & FE_HAS_LOCK) { - LOGD("locked\n"); - } else { - LOGD("unlocked\n"); - return ; - } - SetCurRecProgramId(id); - start_dvr(); - - return; + AM_DVR_OpenPara_t dpara; + fe_status_t status; + char buf[32]; + + AM_FEND_GetStatus(FEND_DEV_NO, &status); + + if (status & FE_HAS_LOCK) { + LOGD("locked\n"); + } else { + LOGD("unlocked\n"); + return ; + } + SetCurRecProgramId(id); + start_dvr(); + + return; } void CTvRecord::StopRecord() { - int i = 0; - LOGD("stop record for %d", DVR_DEV_NO); - AM_DVR_StopRecord(DVR_DEV_NO); + int i = 0; + LOGD("stop record for %d", DVR_DEV_NO); + AM_DVR_StopRecord(DVR_DEV_NO); - //for (i=0; i< DVR_DEV_COUNT; i++) - { - if (data_threads[DVR_DEV_NO].running) - stop_data_thread(DVR_DEV_NO); - //LOGD("Closing DMX%d...", i); - } + //for (i=0; i< DVR_DEV_COUNT; i++) + { + if (data_threads[DVR_DEV_NO].running) + stop_data_thread(DVR_DEV_NO); + //LOGD("Closing DMX%d...", i); + } } void CTvRecord::SetRecCurTsOrCurProgram(int sel) { - int i = 0; - char buf[50]; - memset(buf, 0, sizeof(buf)); - for (; i < 3; i++) { - snprintf(buf, sizeof(buf), "/sys/class/stb/dvr%d_mode", i); - if (sel) - AM_FileEcho(buf, "ts"); - else - AM_FileEcho(buf, "pid"); - } + int i = 0; + char buf[50]; + memset(buf, 0, sizeof(buf)); + for (; i < 3; i++) { + snprintf(buf, sizeof(buf), "/sys/class/stb/dvr%d_mode", i); + if (sel) + AM_FileEcho(buf, "ts"); + else + AM_FileEcho(buf, "pid"); + } } diff --git a/tvapi/libtv/tv/CTvRecord.h b/tvapi/libtv/tv/CTvRecord.h index e63581d..29d13e7 100644 --- a/tvapi/libtv/tv/CTvRecord.h +++ b/tvapi/libtv/tv/CTvRecord.h @@ -2,44 +2,44 @@ class CTvRecord { private : - char filename[256]; - int progid; - int vpid; - int apid; - static void dvr_init(void); - void setvpid(int vid) - { - this->vpid = vid; - } - int getvpid() - { - return vpid; - } - void setapid(int aid) - { - this->apid = aid; - } - int getapid() - { - return apid; - } - static int dvr_data_write(int fd, uint8_t *buf, int size); - static void *dvr_data_thread(void *arg); - char *GetRecordFileName(); - void SetCurRecProgramId(int id); - void start_data_thread(int dev_no); - void get_cur_program_pid(int progId); - int start_dvr(void); - void stop_data_thread(int dev_no); + char filename[256]; + int progid; + int vpid; + int apid; + static void dvr_init(void); + void setvpid(int vid) + { + this->vpid = vid; + } + int getvpid() + { + return vpid; + } + void setapid(int aid) + { + this->apid = aid; + } + int getapid() + { + return apid; + } + static int dvr_data_write(int fd, uint8_t *buf, int size); + static void *dvr_data_thread(void *arg); + char *GetRecordFileName(); + void SetCurRecProgramId(int id); + void start_data_thread(int dev_no); + void get_cur_program_pid(int progId); + int start_dvr(void); + void stop_data_thread(int dev_no); public: - CTvRecord(); - ~CTvRecord(); - void SetRecordFileName(char *name); - void StartRecord(int id); - void StopRecord(); - void SetRecCurTsOrCurProgram(int sel); // 1: all program in the Ts; 0:current program + CTvRecord(); + ~CTvRecord(); + void SetRecordFileName(char *name); + void StartRecord(int id); + void StopRecord(); + void SetRecCurTsOrCurProgram(int sel); // 1: all program in the Ts; 0:current program diff --git a/tvapi/libtv/tv/CTvScanner.cpp b/tvapi/libtv/tv/CTvScanner.cpp index d451a27..83430e1 100644 --- a/tvapi/libtv/tv/CTvScanner.cpp +++ b/tvapi/libtv/tv/CTvScanner.cpp @@ -24,272 +24,272 @@ CTvScanner *CTvScanner::m_s_Scanner = NULL; //} CTvScanner::CTvScanner(CTvin *pTvin) { - mbScanStart = false; - mpObserver = NULL; - mSource = 0xff; - mMinFreq = 1; - mMaxFreq = 100; - mCurScanStartFreq = 1; - mCurScanEndFreq = 100; - mpTvin = pTvin; + mbScanStart = false; + mpObserver = NULL; + mSource = 0xff; + mMinFreq = 1; + mMaxFreq = 100; + mCurScanStartFreq = 1; + mCurScanEndFreq = 100; + mpTvin = pTvin; } CTvScanner::~CTvScanner() { - AM_EVT_Unsubscribe((long)mScanHandle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Unsubscribe((long)mScanHandle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); + AM_EVT_Unsubscribe((long)mScanHandle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); + AM_EVT_Unsubscribe((long)mScanHandle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); } AM_Bool_t CTvScanner::atv_cvbs_lock_check(v4l2_std_id *colorStd) { - tvafe_cvbs_video_t cvbs_lock_status; - int ret, i = 0; - - *colorStd = 0; - while (i < 20) { - ret = mpTvin->AFE_GetCVBSLockStatus(&cvbs_lock_status); - - if (cvbs_lock_status == TVAFE_CVBS_VIDEO_HV_LOCKED) - //||cvbs_lock_status == TVAFE_CVBS_VIDEO_V_LOCKED - //||cvbs_lock_status == TVAFE_CVBS_VIDEO_H_LOCKED) - { - usleep(2000 * 1000); - tvin_info_t info; - mpTvin->VDIN_GetSignalInfo(&info); - *colorStd = CTvin::CvbsFtmToV4l2ColorStd(info.fmt); - LOGD("atv_cvbs_lock_check locked and cvbs fmt = 0x%x std = 0x%x", info.fmt, *colorStd); - return true; - } - usleep(50 * 1000); - i++; - } - return false; + tvafe_cvbs_video_t cvbs_lock_status; + int ret, i = 0; + + *colorStd = 0; + while (i < 20) { + ret = mpTvin->AFE_GetCVBSLockStatus(&cvbs_lock_status); + + if (cvbs_lock_status == TVAFE_CVBS_VIDEO_HV_LOCKED) + //||cvbs_lock_status == TVAFE_CVBS_VIDEO_V_LOCKED + //||cvbs_lock_status == TVAFE_CVBS_VIDEO_H_LOCKED) + { + usleep(2000 * 1000); + tvin_info_t info; + mpTvin->VDIN_GetSignalInfo(&info); + *colorStd = CTvin::CvbsFtmToV4l2ColorStd(info.fmt); + LOGD("atv_cvbs_lock_check locked and cvbs fmt = 0x%x std = 0x%x", info.fmt, *colorStd); + return true; + } + usleep(50 * 1000); + i++; + } + return false; } AM_Bool_t CTvScanner::s_atv_cvbs_lock_check(void *data) { - if (data == NULL) return false; - AM_SCAN_ATV_LOCK_PARA_t *pAtvPara = (AM_SCAN_ATV_LOCK_PARA_t *)data; - CTvScanner *pScan = (CTvScanner *)(pAtvPara->pData); - v4l2_std_id std; - AM_Bool_t isLock = pScan->atv_cvbs_lock_check(&std); - pAtvPara->pOutColorSTD = std; - return isLock; + if (data == NULL) return false; + AM_SCAN_ATV_LOCK_PARA_t *pAtvPara = (AM_SCAN_ATV_LOCK_PARA_t *)data; + CTvScanner *pScan = (CTvScanner *)(pAtvPara->pData); + v4l2_std_id std; + AM_Bool_t isLock = pScan->atv_cvbs_lock_check(&std); + pAtvPara->pOutColorSTD = std; + return isLock; } int CTvScanner::ATVManualScan(int min_freq, int max_freq, int std, int store_Type, int channel_num) { - stopScan(); - if (min_freq <= 0 || max_freq <= 0 || min_freq == max_freq) { - LOGD("atv manual scan freq error start = %d end = %d", min_freq, max_freq); - return -1; - } - int direction = (max_freq >= min_freq) ? 1 : 0; + stopScan(); + if (min_freq <= 0 || max_freq <= 0 || min_freq == max_freq) { + LOGD("atv manual scan freq error start = %d end = %d", min_freq, max_freq); + return -1; + } + int direction = (max_freq >= min_freq) ? 1 : 0; - if (!mbScanStart) { //not start or stop - // - mCurScanStartFreq = min_freq; - mCurScanEndFreq = max_freq; - AM_SCAN_CreatePara_t para; - AM_DMX_OpenPara_t dmx_para; - AM_SCAN_Handle_t handle = 0, i; - LOGD("startScanThread"); - // Create the scan - memset(¶, 0, sizeof(para)); - para.fend_dev_id = 0;//default - para.mode = AM_SCAN_MODE_ATV_DTV;// - para.atv_para.mode = AM_SCAN_ATVMODE_MANUAL; - para.atv_para.storeMode = store_Type; - para.dtv_para.mode = AM_SCAN_DTVMODE_NONE; - - para.atv_para.am_scan_atv_cvbs_lock = s_atv_cvbs_lock_check; - - para.atv_para.fe_cnt = 3; - para.atv_para.fe_paras = static_cast(calloc(3, sizeof(AM_FENDCTRL_DVBFrontendParameters_t))); - if (para.atv_para.fe_paras != NULL) { - memset(para.atv_para.fe_paras, 0, 3 * sizeof(AM_FENDCTRL_DVBFrontendParameters_t)); - para.atv_para.fe_paras[0].m_type = FE_ANALOG; - para.atv_para.fe_paras[0].analog.para.frequency = min_freq; - para.atv_para.fe_paras[1].m_type = FE_ANALOG; - para.atv_para.fe_paras[1].analog.para.frequency = max_freq; - para.atv_para.fe_paras[2].m_type = FE_ANALOG; - para.atv_para.fe_paras[2].analog.para.frequency = min_freq; - } - para.atv_para.direction = direction; - para.atv_para.default_std = std; + if (!mbScanStart) { //not start or stop + // + mCurScanStartFreq = min_freq; + mCurScanEndFreq = max_freq; + AM_SCAN_CreatePara_t para; + AM_DMX_OpenPara_t dmx_para; + AM_SCAN_Handle_t handle = 0, i; + LOGD("startScanThread"); + // Create the scan + memset(¶, 0, sizeof(para)); + para.fend_dev_id = 0;//default + para.mode = AM_SCAN_MODE_ATV_DTV;// + para.atv_para.mode = AM_SCAN_ATVMODE_MANUAL; + para.atv_para.storeMode = store_Type; + para.dtv_para.mode = AM_SCAN_DTVMODE_NONE; + + para.atv_para.am_scan_atv_cvbs_lock = s_atv_cvbs_lock_check; + + para.atv_para.fe_cnt = 3; + para.atv_para.fe_paras = static_cast(calloc(3, sizeof(AM_FENDCTRL_DVBFrontendParameters_t))); + if (para.atv_para.fe_paras != NULL) { + memset(para.atv_para.fe_paras, 0, 3 * sizeof(AM_FENDCTRL_DVBFrontendParameters_t)); + para.atv_para.fe_paras[0].m_type = FE_ANALOG; + para.atv_para.fe_paras[0].analog.para.frequency = min_freq; + para.atv_para.fe_paras[1].m_type = FE_ANALOG; + para.atv_para.fe_paras[1].analog.para.frequency = max_freq; + para.atv_para.fe_paras[2].m_type = FE_ANALOG; + para.atv_para.fe_paras[2].analog.para.frequency = min_freq; + } + para.atv_para.direction = direction; + para.atv_para.default_std = std; - para.atv_para.channel_id = -1; - para.atv_para.cvbs_unlocked_step = 1000000; - para.atv_para.cvbs_locked_step = 3000000; - para.atv_para.afc_range = 2000000; + para.atv_para.channel_id = -1; + para.atv_para.cvbs_unlocked_step = 1000000; + para.atv_para.cvbs_locked_step = 3000000; + para.atv_para.afc_range = 2000000; - para.dtv_para.resort_all = AM_FALSE; - para.dtv_para.sort_method = AM_SCAN_SORT_BY_FREQ_SRV_ID; - para.store_cb = am_scan_atv_store; - para.atv_para.channel_num = channel_num; + para.dtv_para.resort_all = AM_FALSE; + para.dtv_para.sort_method = AM_SCAN_SORT_BY_FREQ_SRV_ID; + para.store_cb = am_scan_atv_store; + para.atv_para.channel_num = channel_num; - memset(&dmx_para, 0, sizeof(dmx_para)); - AM_DMX_Open(para.dtv_para.dmx_dev_id, &dmx_para); + memset(&dmx_para, 0, sizeof(dmx_para)); + AM_DMX_Open(para.dtv_para.dmx_dev_id, &dmx_para); - if ((para.dtv_para.mode & 0x07) != AM_SCAN_DTVMODE_NONE) { - AM_FEND_SetMode(para.fend_dev_id, para.dtv_para.source); - tv_scan_reconnect_dmx_to_fend(para.dtv_para.dmx_dev_id, para.fend_dev_id); - } + if ((para.dtv_para.mode & 0x07) != AM_SCAN_DTVMODE_NONE) { + AM_FEND_SetMode(para.fend_dev_id, para.dtv_para.source); + tv_scan_reconnect_dmx_to_fend(para.dtv_para.dmx_dev_id, para.fend_dev_id); + } - LOGD("atv manual scan mode = %d", para.dtv_para.mode); - // Start Scan - if (AM_SCAN_Create(¶, &handle) != AM_SUCCESS) { - LOGD("SCAN CREATE fail"); - handle = NULL; - } else { - mScanHandle = handle; - AM_SCAN_SetUserData(handle, (void *)this); - AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - if (AM_SCAN_Start(handle) != AM_SUCCESS) { - AM_SCAN_Destroy(handle, AM_FALSE); - AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - handle = NULL; - } - } - if (para.atv_para.fe_paras != NULL) - free(para.atv_para.fe_paras); - if (para.dtv_para.fe_paras != NULL) - free(para.dtv_para.fe_paras); + LOGD("atv manual scan mode = %d", para.dtv_para.mode); + // Start Scan + if (AM_SCAN_Create(¶, &handle) != AM_SUCCESS) { + LOGD("SCAN CREATE fail"); + handle = NULL; + } else { + mScanHandle = handle; + AM_SCAN_SetUserData(handle, (void *)this); + AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); + AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); + if (AM_SCAN_Start(handle) != AM_SUCCESS) { + AM_SCAN_Destroy(handle, AM_FALSE); + AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); + AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); + handle = NULL; + } + } + if (para.atv_para.fe_paras != NULL) + free(para.atv_para.fe_paras); + if (para.dtv_para.fe_paras != NULL) + free(para.dtv_para.fe_paras); - if (handle == NULL) { - return -1; - } - mbScanStart = true;//start call ok - } else { - LOGD("scanning and not stop"); - } + if (handle == NULL) { + return -1; + } + mbScanStart = true;//start call ok + } else { + LOGD("scanning and not stop"); + } - return 0; + return 0; } void CTvScanner::am_scan_atv_store(AM_SCAN_Result_t *result) { - AM_SCAN_TS_t *ts; - int i, ret, db_sat_id = -1; - //AM_SCAN_RecTab_t srv_tab; - for (ts = result->tses; ts != NULL; ts = ts->p_next) { - // - m_s_Scanner->mCurEv.clear(); - m_s_Scanner->mCurEv.mType = ScannerEvent::EVENT_ATV_PROG_DATA; - m_s_Scanner->mCurEv.mVideoStd = CFrontEnd::stdAndColorToVideoEnum(ts->analog.std); - m_s_Scanner->mCurEv.mAudioStd = CFrontEnd::stdAndColorToAudioEnum(ts->analog.std); - m_s_Scanner->mCurEv.mIsAutoStd = ((ts->analog.std & V4L2_COLOR_STD_AUTO) == V4L2_COLOR_STD_AUTO) ? 1 : 0; - m_s_Scanner->mCurEv.mFrequency = ts->analog.freq; - // - m_s_Scanner->sendEvent(m_s_Scanner->mCurEv); - LOGD("ATV: > freq:%d", m_s_Scanner->mCurEv.mFrequency); - } + AM_SCAN_TS_t *ts; + int i, ret, db_sat_id = -1; + //AM_SCAN_RecTab_t srv_tab; + for (ts = result->tses; ts != NULL; ts = ts->p_next) { + // + m_s_Scanner->mCurEv.clear(); + m_s_Scanner->mCurEv.mType = ScannerEvent::EVENT_ATV_PROG_DATA; + m_s_Scanner->mCurEv.mVideoStd = CFrontEnd::stdAndColorToVideoEnum(ts->analog.std); + m_s_Scanner->mCurEv.mAudioStd = CFrontEnd::stdAndColorToAudioEnum(ts->analog.std); + m_s_Scanner->mCurEv.mIsAutoStd = ((ts->analog.std & V4L2_COLOR_STD_AUTO) == V4L2_COLOR_STD_AUTO) ? 1 : 0; + m_s_Scanner->mCurEv.mFrequency = ts->analog.freq; + // + m_s_Scanner->sendEvent(m_s_Scanner->mCurEv); + LOGD("ATV: > freq:%d", m_s_Scanner->mCurEv.mFrequency); + } } void CTvScanner::setGlobalScanerObject(CTvScanner *s) { - m_s_Scanner = s; + m_s_Scanner = s; } int CTvScanner::autoAtvScan(int min_freq, int max_freq, int std, int search_type) { - stopScan(); - if (min_freq <= 0 || max_freq <= 0 || min_freq > max_freq) - return -1; - if (!mbScanStart) { //not start or stop - mCurScanStartFreq = min_freq; - mCurScanEndFreq = max_freq; + stopScan(); + if (min_freq <= 0 || max_freq <= 0 || min_freq > max_freq) + return -1; + if (!mbScanStart) { //not start or stop + mCurScanStartFreq = min_freq; + mCurScanEndFreq = max_freq; - AM_SCAN_CreatePara_t para; - AM_DMX_OpenPara_t dmx_para; - AM_SCAN_Handle_t handle = 0, i; - // Create the scan - memset(¶, 0, sizeof(para)); + AM_SCAN_CreatePara_t para; + AM_DMX_OpenPara_t dmx_para; + AM_SCAN_Handle_t handle = 0, i; + // Create the scan + memset(¶, 0, sizeof(para)); - para.fend_dev_id = 0;//default - para.mode = AM_SCAN_MODE_ATV_DTV;// - para.atv_para.mode = AM_SCAN_ATVMODE_AUTO; - if (search_type == 1) - para.atv_para.storeMode = 1; - else - para.atv_para.storeMode = 0; - para.dtv_para.mode = AM_SCAN_DTVMODE_NONE; - - para.atv_para.am_scan_atv_cvbs_lock = s_atv_cvbs_lock_check; - - para.atv_para.fe_cnt = 3; - para.atv_para.fe_paras = static_cast(calloc(3, sizeof(AM_FENDCTRL_DVBFrontendParameters_t))); - if (para.atv_para.fe_paras != NULL) { - memset(para.atv_para.fe_paras, 0, 3 * sizeof(AM_FENDCTRL_DVBFrontendParameters_t)); - para.atv_para.fe_paras[0].m_type = FE_ANALOG; - para.atv_para.fe_paras[0].analog.para.frequency = min_freq; - para.atv_para.fe_paras[1].m_type = FE_ANALOG; - para.atv_para.fe_paras[1].analog.para.frequency = max_freq; - para.atv_para.fe_paras[2].m_type = FE_ANALOG; - para.atv_para.fe_paras[2].analog.para.frequency = 0; - } + para.fend_dev_id = 0;//default + para.mode = AM_SCAN_MODE_ATV_DTV;// + para.atv_para.mode = AM_SCAN_ATVMODE_AUTO; + if (search_type == 1) + para.atv_para.storeMode = 1; + else + para.atv_para.storeMode = 0; + para.dtv_para.mode = AM_SCAN_DTVMODE_NONE; + + para.atv_para.am_scan_atv_cvbs_lock = s_atv_cvbs_lock_check; + + para.atv_para.fe_cnt = 3; + para.atv_para.fe_paras = static_cast(calloc(3, sizeof(AM_FENDCTRL_DVBFrontendParameters_t))); + if (para.atv_para.fe_paras != NULL) { + memset(para.atv_para.fe_paras, 0, 3 * sizeof(AM_FENDCTRL_DVBFrontendParameters_t)); + para.atv_para.fe_paras[0].m_type = FE_ANALOG; + para.atv_para.fe_paras[0].analog.para.frequency = min_freq; + para.atv_para.fe_paras[1].m_type = FE_ANALOG; + para.atv_para.fe_paras[1].analog.para.frequency = max_freq; + para.atv_para.fe_paras[2].m_type = FE_ANALOG; + para.atv_para.fe_paras[2].analog.para.frequency = 0; + } - para.atv_para.direction = 0; - para.atv_para.default_std = std; + para.atv_para.direction = 0; + para.atv_para.default_std = std; - para.atv_para.channel_id = -1; - para.atv_para.afc_unlocked_step = 3000000; - para.atv_para.cvbs_unlocked_step = 1500000; - para.atv_para.cvbs_locked_step = 6000000; - para.atv_para.afc_range = 2000000; + para.atv_para.channel_id = -1; + para.atv_para.afc_unlocked_step = 3000000; + para.atv_para.cvbs_unlocked_step = 1500000; + para.atv_para.cvbs_locked_step = 6000000; + para.atv_para.afc_range = 2000000; - para.dtv_para.resort_all = AM_FALSE; - para.dtv_para.sort_method = AM_SCAN_SORT_BY_FREQ_SRV_ID; - para.store_cb = am_scan_atv_store; + para.dtv_para.resort_all = AM_FALSE; + para.dtv_para.sort_method = AM_SCAN_SORT_BY_FREQ_SRV_ID; + para.store_cb = am_scan_atv_store; - memset(&dmx_para, 0, sizeof(dmx_para)); - AM_DMX_Open(para.dtv_para.dmx_dev_id, &dmx_para); + memset(&dmx_para, 0, sizeof(dmx_para)); + AM_DMX_Open(para.dtv_para.dmx_dev_id, &dmx_para); - if ((para.dtv_para.mode & 0x07) != AM_SCAN_DTVMODE_NONE) { - AM_FEND_SetMode(para.fend_dev_id, para.dtv_para.source); - tv_scan_reconnect_dmx_to_fend(para.dtv_para.dmx_dev_id, para.fend_dev_id); - } + if ((para.dtv_para.mode & 0x07) != AM_SCAN_DTVMODE_NONE) { + AM_FEND_SetMode(para.fend_dev_id, para.dtv_para.source); + tv_scan_reconnect_dmx_to_fend(para.dtv_para.dmx_dev_id, para.fend_dev_id); + } - // prog->dmx_id = para.dtv_para.dmx_dev_id; - // prog->fend_id = para.fend_dev_id; - // prog->mode = para.dtv_para.mode; - LOGD(" mode = %d", para.dtv_para.mode); - // Start Scan - if (AM_SCAN_Create(¶, &handle) != AM_SUCCESS) { - LOGD("SCAN CREATE fail"); - handle = NULL; - } else { - mScanHandle = handle; - AM_SCAN_SetUserData(handle, (void *)this); - //注册æœç´¢äº‹ä»¶ - AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - //注册信å·è´¨é‡é€šçŸ¥äº‹ä»¶ - AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - if (AM_SCAN_Start(handle) != AM_SUCCESS) { - AM_SCAN_Destroy(handle, AM_FALSE); - AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - handle = NULL; - } - } - if (para.atv_para.fe_paras != NULL) - free(para.atv_para.fe_paras); - if (para.dtv_para.fe_paras != NULL) - free(para.dtv_para.fe_paras); + // prog->dmx_id = para.dtv_para.dmx_dev_id; + // prog->fend_id = para.fend_dev_id; + // prog->mode = para.dtv_para.mode; + LOGD(" mode = %d", para.dtv_para.mode); + // Start Scan + if (AM_SCAN_Create(¶, &handle) != AM_SUCCESS) { + LOGD("SCAN CREATE fail"); + handle = NULL; + } else { + mScanHandle = handle; + AM_SCAN_SetUserData(handle, (void *)this); + //注册æœç´¢äº‹ä»¶ + AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); + //注册信å·è´¨é‡é€šçŸ¥äº‹ä»¶ + AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); + if (AM_SCAN_Start(handle) != AM_SUCCESS) { + AM_SCAN_Destroy(handle, AM_FALSE); + AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); + AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); + handle = NULL; + } + } + if (para.atv_para.fe_paras != NULL) + free(para.atv_para.fe_paras); + if (para.dtv_para.fe_paras != NULL) + free(para.dtv_para.fe_paras); - if (handle == NULL) { - return -1; - } - mbScanStart = true;//start call ok - } else { - LOGD("scanning and not stop"); - } + if (handle == NULL) { + return -1; + } + mbScanStart = true;//start call ok + } else { + LOGD("scanning and not stop"); + } - return 0; + return 0; } /* @@ -409,529 +409,529 @@ int CTvScanner::manualAtscScan(int channelID, int attennaType, int std) dvbpsi_pat_t *CTvScanner::get_valid_pats(AM_SCAN_TS_t *ts) { - dvbpsi_pat_t *valid_pat = NULL; - if (!IS_DVBT2_TS(ts->digital.fend_para)) { - valid_pat = ts->digital.pats; - } else if (IS_ISDBT_TS(ts->digital.fend_para)) { - /* process for isdbt one-seg inserted PAT, which ts_id is 0xffff */ - valid_pat = ts->digital.pats; - while (valid_pat != NULL && valid_pat->i_ts_id == 0xffff) { - valid_pat = valid_pat->p_next; - } + dvbpsi_pat_t *valid_pat = NULL; + if (!IS_DVBT2_TS(ts->digital.fend_para)) { + valid_pat = ts->digital.pats; + } else if (IS_ISDBT_TS(ts->digital.fend_para)) { + /* process for isdbt one-seg inserted PAT, which ts_id is 0xffff */ + valid_pat = ts->digital.pats; + while (valid_pat != NULL && valid_pat->i_ts_id == 0xffff) { + valid_pat = valid_pat->p_next; + } - if (valid_pat == NULL && ts->digital.pats != NULL) { - valid_pat = ts->digital.pats; + if (valid_pat == NULL && ts->digital.pats != NULL) { + valid_pat = ts->digital.pats; - if (ts->digital.sdts != NULL) - valid_pat->i_ts_id = ts->digital.sdts->i_ts_id; - } - } else { - int plp; + if (ts->digital.sdts != NULL) + valid_pat->i_ts_id = ts->digital.sdts->i_ts_id; + } + } else { + int plp; - for (plp = 0; plp < ts->digital.dvbt2_data_plp_num; plp++) { - if (ts->digital.dvbt2_data_plps[plp].pats != NULL) { - valid_pat = ts->digital.dvbt2_data_plps[plp].pats; - break; - } - } - } + for (plp = 0; plp < ts->digital.dvbt2_data_plp_num; plp++) { + if (ts->digital.dvbt2_data_plps[plp].pats != NULL) { + valid_pat = ts->digital.dvbt2_data_plps[plp].pats; + break; + } + } + } - return valid_pat; + return valid_pat; } void CTvScanner::scan_process_ts_info(AM_SCAN_Result_t *result, AM_SCAN_TS_t *ts, ScannerEvent *evt) { - dvbpsi_nit_t *nit; - dvbpsi_descriptor_t *descr; - - evt->mONetId = -1; - evt->mTsId = -1; - - if (ts->digital.sdts) - evt->mONetId = ts->digital.sdts->i_network_id; - else if (IS_DVBT2_TS(ts->digital.fend_para) && ts->digital.dvbt2_data_plp_num > 0 && ts->digital.dvbt2_data_plps[0].sdts) - evt->mONetId = ts->digital.dvbt2_data_plps[0].sdts->i_network_id; - evt->mTsId = get_valid_pats(ts)->i_ts_id; - - evt->mFrequency = (int)dvb_fend_para(ts->digital.fend_para)->frequency; - evt->mMode = ts->digital.fend_para.m_type; - if (IS_DVBT2_TS(ts->digital.fend_para)) - evt->mOfdm_mode = (int)dvb_fend_para(ts->digital.fend_para)->u.ofdm.ofdm_mode; - else if ((ts->digital.fend_para.m_type == FE_DTMB) || (ts->digital.fend_para.m_type == FE_OFDM)) - evt->mBandwidth = (int)dvb_fend_para(ts->digital.fend_para)->u.ofdm.bandwidth; - else if (ts->digital.fend_para.m_type == FE_QAM) { - evt->mSymbolRate = (int)dvb_fend_para(ts->digital.fend_para)->u.qam.symbol_rate; - evt->mModulation = (int)dvb_fend_para(ts->digital.fend_para)->u.qam.modulation; - } + dvbpsi_nit_t *nit; + dvbpsi_descriptor_t *descr; + + evt->mONetId = -1; + evt->mTsId = -1; + + if (ts->digital.sdts) + evt->mONetId = ts->digital.sdts->i_network_id; + else if (IS_DVBT2_TS(ts->digital.fend_para) && ts->digital.dvbt2_data_plp_num > 0 && ts->digital.dvbt2_data_plps[0].sdts) + evt->mONetId = ts->digital.dvbt2_data_plps[0].sdts->i_network_id; + evt->mTsId = get_valid_pats(ts)->i_ts_id; + + evt->mFrequency = (int)dvb_fend_para(ts->digital.fend_para)->frequency; + evt->mMode = ts->digital.fend_para.m_type; + if (IS_DVBT2_TS(ts->digital.fend_para)) + evt->mOfdm_mode = (int)dvb_fend_para(ts->digital.fend_para)->u.ofdm.ofdm_mode; + else if ((ts->digital.fend_para.m_type == FE_DTMB) || (ts->digital.fend_para.m_type == FE_OFDM)) + evt->mBandwidth = (int)dvb_fend_para(ts->digital.fend_para)->u.ofdm.bandwidth; + else if (ts->digital.fend_para.m_type == FE_QAM) { + evt->mSymbolRate = (int)dvb_fend_para(ts->digital.fend_para)->u.qam.symbol_rate; + evt->mModulation = (int)dvb_fend_para(ts->digital.fend_para)->u.qam.modulation; + } } void CTvScanner::scan_init_service_info(SCAN_ServiceInfo_t *srv_info) { - memset(srv_info, 0, sizeof(SCAN_ServiceInfo_t)); - srv_info->vid = 0x1fff; - srv_info->vfmt = -1; - srv_info->free_ca = 1; - srv_info->srv_id = 0xffff; - srv_info->srv_dbid = -1; - srv_info->satpara_dbid = -1; - srv_info->pmt_pid = 0x1fff; - srv_info->plp_id = -1; - srv_info->sdt_version = 0xff; + memset(srv_info, 0, sizeof(SCAN_ServiceInfo_t)); + srv_info->vid = 0x1fff; + srv_info->vfmt = -1; + srv_info->free_ca = 1; + srv_info->srv_id = 0xffff; + srv_info->srv_dbid = -1; + srv_info->satpara_dbid = -1; + srv_info->pmt_pid = 0x1fff; + srv_info->plp_id = -1; + srv_info->sdt_version = 0xff; } int CTvScanner::get_pmt_pid(dvbpsi_pat_t *pats, int program_number) { - dvbpsi_pat_t *pat; - dvbpsi_pat_program_t *prog; + dvbpsi_pat_t *pat; + dvbpsi_pat_program_t *prog; - AM_SI_LIST_BEGIN(pats, pat) - AM_SI_LIST_BEGIN(pat->p_first_program, prog) - if (prog->i_number == program_number) - return prog->i_pid; - AM_SI_LIST_END() - AM_SI_LIST_END() + AM_SI_LIST_BEGIN(pats, pat) + AM_SI_LIST_BEGIN(pat->p_first_program, prog) + if (prog->i_number == program_number) + return prog->i_pid; + AM_SI_LIST_END() + AM_SI_LIST_END() - return 0x1fff; + return 0x1fff; } void CTvScanner::scan_extract_ca_scrambled_flag(dvbpsi_descriptor_t *p_first_descriptor, int *flag) { - dvbpsi_descriptor_t *descr; + dvbpsi_descriptor_t *descr; - AM_SI_LIST_BEGIN(p_first_descriptor, descr) - if (descr->i_tag == AM_SI_DESCR_CA && ! *flag) { - LOGD( "Found CA descr, set scrambled flag to 1"); - *flag = 1; - break; - } - AM_SI_LIST_END() + AM_SI_LIST_BEGIN(p_first_descriptor, descr) + if (descr->i_tag == AM_SI_DESCR_CA && ! *flag) { + LOGD( "Found CA descr, set scrambled flag to 1"); + *flag = 1; + break; + } + AM_SI_LIST_END() } void CTvScanner::scan_extract_srv_info_from_sdt(AM_SCAN_Result_t *result, dvbpsi_sdt_t *sdts, SCAN_ServiceInfo_t *srv_info) { - dvbpsi_sdt_service_t *srv; - dvbpsi_sdt_t *sdt; - dvbpsi_descriptor_t *descr; - const uint8_t split = 0x80; - const int name_size = (int)sizeof(srv_info->name); - int curr_name_len = 0, tmp_len; - char name[AM_DB_MAX_SRV_NAME_LEN + 1]; + dvbpsi_sdt_service_t *srv; + dvbpsi_sdt_t *sdt; + dvbpsi_descriptor_t *descr; + const uint8_t split = 0x80; + const int name_size = (int)sizeof(srv_info->name); + int curr_name_len = 0, tmp_len; + char name[AM_DB_MAX_SRV_NAME_LEN + 1]; - UNUSED(result); + UNUSED(result); #define COPY_NAME(_s, _slen)\ - AM_MACRO_BEGIN\ - int copy_len = ((curr_name_len+_slen)>=name_size) ? (name_size-curr_name_len) : _slen;\ - if (copy_len > 0) {\ - memcpy(srv_info->name+curr_name_len, _s, copy_len);\ - curr_name_len += copy_len;\ - }\ - AM_MACRO_END - - - AM_SI_LIST_BEGIN(sdts, sdt) - AM_SI_LIST_BEGIN(sdt->p_first_service, srv) - /*从SDT表中查找该service并获å–ä¿¡æ¯*/ - if (srv->i_service_id == srv_info->srv_id) { - LOGD("SDT for service %d found!", srv_info->srv_id); - srv_info->eit_sche = (uint8_t)srv->b_eit_schedule; - srv_info->eit_pf = (uint8_t)srv->b_eit_present; - srv_info->rs = srv->i_running_status; - srv_info->free_ca = (uint8_t)srv->b_free_ca; - srv_info->sdt_version = sdt->i_version; - - AM_SI_LIST_BEGIN(srv->p_first_descriptor, descr) - if (descr->p_decoded && descr->i_tag == AM_SI_DESCR_SERVICE) { - dvbpsi_service_dr_t *psd = (dvbpsi_service_dr_t *)descr->p_decoded; - if (psd->i_service_name_length > 0) { - name[0] = 0; - AM_SI_ConvertDVBTextCode((char *)psd->i_service_name, psd->i_service_name_length, \ - name, AM_DB_MAX_SRV_NAME_LEN); - name[AM_DB_MAX_SRV_NAME_LEN] = 0; - LOGD("found name [%s]", name); - - /*3bytes language code, using xxx to simulate*/ - COPY_NAME("xxx", 3); - /*following by name text*/ - tmp_len = strlen(name); - COPY_NAME(name, tmp_len); - } - /*业务类型*/ - srv_info->srv_type = psd->i_service_type; - /*service type 0x16 and 0x19 is user defined, as digital television service*/ - /*service type 0xc0 is type of partial reception service in ISDBT*/ - if ((srv_info->srv_type == 0x16) || (srv_info->srv_type == 0x19) || (srv_info->srv_type == 0xc0)) { - srv_info->srv_type = 0x1; - } - break; - } - AM_SI_LIST_END() - - /* store multilingual service name */ - AM_SI_LIST_BEGIN(srv->p_first_descriptor, descr) - if (descr->p_decoded && descr->i_tag == AM_SI_DESCR_MULTI_SERVICE_NAME) { - int i; - dvbpsi_multi_service_name_dr_t *pmsnd = (dvbpsi_multi_service_name_dr_t *)descr->p_decoded; - - for (i = 0; i < pmsnd->i_name_count; i++) { - name[0] = 0; - AM_SI_ConvertDVBTextCode((char *)pmsnd->p_service_name[i].i_service_name, - pmsnd->p_service_name[i].i_service_name_length, - name, AM_DB_MAX_SRV_NAME_LEN); - name[AM_DB_MAX_SRV_NAME_LEN] = 0; - LOGD("found name [%s]", name); - - if (curr_name_len > 0) { - /*extra split mark*/ - COPY_NAME(&split, 1); - } - /*3bytes language code*/ - COPY_NAME(pmsnd->p_service_name[i].i_iso_639_code, 3); - /*following by name text*/ - tmp_len = strlen(name); - COPY_NAME(name, tmp_len); - } - } - AM_SI_LIST_END() + AM_MACRO_BEGIN\ + int copy_len = ((curr_name_len+_slen)>=name_size) ? (name_size-curr_name_len) : _slen;\ + if (copy_len > 0) {\ + memcpy(srv_info->name+curr_name_len, _s, copy_len);\ + curr_name_len += copy_len;\ + }\ + + + AM_MACRO_END + AM_SI_LIST_BEGIN(sdts, sdt) + AM_SI_LIST_BEGIN(sdt->p_first_service, srv) + /*从SDT表中查找该service并获å–ä¿¡æ¯*/ + if (srv->i_service_id == srv_info->srv_id) { + LOGD("SDT for service %d found!", srv_info->srv_id); + srv_info->eit_sche = (uint8_t)srv->b_eit_schedule; + srv_info->eit_pf = (uint8_t)srv->b_eit_present; + srv_info->rs = srv->i_running_status; + srv_info->free_ca = (uint8_t)srv->b_free_ca; + srv_info->sdt_version = sdt->i_version; + + AM_SI_LIST_BEGIN(srv->p_first_descriptor, descr) + if (descr->p_decoded && descr->i_tag == AM_SI_DESCR_SERVICE) { + dvbpsi_service_dr_t *psd = (dvbpsi_service_dr_t *)descr->p_decoded; + if (psd->i_service_name_length > 0) { + name[0] = 0; + AM_SI_ConvertDVBTextCode((char *)psd->i_service_name, psd->i_service_name_length, \ + name, AM_DB_MAX_SRV_NAME_LEN); + name[AM_DB_MAX_SRV_NAME_LEN] = 0; + LOGD("found name [%s]", name); + + /*3bytes language code, using xxx to simulate*/ + COPY_NAME("xxx", 3); + /*following by name text*/ + tmp_len = strlen(name); + COPY_NAME(name, tmp_len); + } + /*业务类型*/ + srv_info->srv_type = psd->i_service_type; + /*service type 0x16 and 0x19 is user defined, as digital television service*/ + /*service type 0xc0 is type of partial reception service in ISDBT*/ + if ((srv_info->srv_type == 0x16) || (srv_info->srv_type == 0x19) || (srv_info->srv_type == 0xc0)) { + srv_info->srv_type = 0x1; + } + break; + } + AM_SI_LIST_END() + + /* store multilingual service name */ + AM_SI_LIST_BEGIN(srv->p_first_descriptor, descr) + if (descr->p_decoded && descr->i_tag == AM_SI_DESCR_MULTI_SERVICE_NAME) { + int i; + dvbpsi_multi_service_name_dr_t *pmsnd = (dvbpsi_multi_service_name_dr_t *)descr->p_decoded; + + for (i = 0; i < pmsnd->i_name_count; i++) { + name[0] = 0; + AM_SI_ConvertDVBTextCode((char *)pmsnd->p_service_name[i].i_service_name, + pmsnd->p_service_name[i].i_service_name_length, + name, AM_DB_MAX_SRV_NAME_LEN); + name[AM_DB_MAX_SRV_NAME_LEN] = 0; + LOGD("found name [%s]", name); + + if (curr_name_len > 0) { + /*extra split mark*/ + COPY_NAME(&split, 1); + } + /*3bytes language code*/ + COPY_NAME(pmsnd->p_service_name[i].i_iso_639_code, 3); + /*following by name text*/ + tmp_len = strlen(name); + COPY_NAME(name, tmp_len); + } + } + AM_SI_LIST_END() - /* set the ending null byte */ - if (curr_name_len >= name_size) - srv_info->name[name_size - 1] = 0; - else - srv_info->name[curr_name_len] = 0; + /* set the ending null byte */ + if (curr_name_len >= name_size) + srv_info->name[name_size - 1] = 0; + else + srv_info->name[curr_name_len] = 0; - break; - } - AM_SI_LIST_END() - AM_SI_LIST_END() + break; + } + AM_SI_LIST_END() + AM_SI_LIST_END() } void CTvScanner::scan_update_service_info(AM_SCAN_Result_t *result, SCAN_ServiceInfo_t *srv_info) { #define str(i) (char*)(strings + i) - static char strings[14][256]; + static char strings[14][256]; - if (srv_info->src != FE_ANALOG) { - int standard = result->start_para->dtv_para.standard; - int mode = result->start_para->dtv_para.mode; + if (srv_info->src != FE_ANALOG) { + int standard = result->start_para->dtv_para.standard; + int mode = result->start_para->dtv_para.mode; - /* Transform service types for different dtv standards */ - if (standard != AM_SCAN_DTV_STD_ATSC) { - if (srv_info->srv_type == 0x1) - srv_info->srv_type = AM_SCAN_SRV_DTV; - else if (srv_info->srv_type == 0x2) - srv_info->srv_type = AM_SCAN_SRV_DRADIO; - } else { - if (srv_info->srv_type == 0x2) - srv_info->srv_type = AM_SCAN_SRV_DTV; - else if (srv_info->srv_type == 0x3) - srv_info->srv_type = AM_SCAN_SRV_DRADIO; - } + /* Transform service types for different dtv standards */ + if (standard != AM_SCAN_DTV_STD_ATSC) { + if (srv_info->srv_type == 0x1) + srv_info->srv_type = AM_SCAN_SRV_DTV; + else if (srv_info->srv_type == 0x2) + srv_info->srv_type = AM_SCAN_SRV_DRADIO; + } else { + if (srv_info->srv_type == 0x2) + srv_info->srv_type = AM_SCAN_SRV_DTV; + else if (srv_info->srv_type == 0x3) + srv_info->srv_type = AM_SCAN_SRV_DRADIO; + } - /* if video valid, set this program to tv type, - * if audio valid, but video not found, set it to radio type, - * if both invalid, but service_type found in SDT/VCT, set to unknown service, - * this mechanism is OPTIONAL - */ - if (srv_info->vid < 0x1fff) { - srv_info->srv_type = AM_SCAN_SRV_DTV; - } else if (srv_info->aud_info.audio_count > 0) { - srv_info->srv_type = AM_SCAN_SRV_DRADIO; - } else if (srv_info->srv_type == AM_SCAN_SRV_DTV || - srv_info->srv_type == AM_SCAN_SRV_DRADIO) { - srv_info->srv_type = AM_SCAN_SRV_UNKNOWN; - } - /* Skip program for FTA mode */ - if (srv_info->scrambled_flag && (mode & AM_SCAN_DTVMODE_FTA)) { - LOGD( "Skip program '%s' for FTA mode", srv_info->name); - return; - } + /* if video valid, set this program to tv type, + * if audio valid, but video not found, set it to radio type, + * if both invalid, but service_type found in SDT/VCT, set to unknown service, + * this mechanism is OPTIONAL + */ + if (srv_info->vid < 0x1fff) { + srv_info->srv_type = AM_SCAN_SRV_DTV; + } else if (srv_info->aud_info.audio_count > 0) { + srv_info->srv_type = AM_SCAN_SRV_DRADIO; + } else if (srv_info->srv_type == AM_SCAN_SRV_DTV || + srv_info->srv_type == AM_SCAN_SRV_DRADIO) { + srv_info->srv_type = AM_SCAN_SRV_UNKNOWN; + } + /* Skip program for FTA mode */ + if (srv_info->scrambled_flag && (mode & AM_SCAN_DTVMODE_FTA)) { + LOGD( "Skip program '%s' for FTA mode", srv_info->name); + return; + } - /* Skip program for service_type mode */ - if (srv_info->srv_type == AM_SCAN_SRV_DTV && (mode & AM_SCAN_DTVMODE_NOTV)) { - LOGD( "Skip program '%s' for NO-TV mode", srv_info->name); - return; - } - if (srv_info->srv_type == AM_SCAN_SRV_DRADIO && (mode & AM_SCAN_DTVMODE_NORADIO)) { - LOGD( "Skip program '%s' for NO-RADIO mode", srv_info->name); - return; - } + /* Skip program for service_type mode */ + if (srv_info->srv_type == AM_SCAN_SRV_DTV && (mode & AM_SCAN_DTVMODE_NOTV)) { + LOGD( "Skip program '%s' for NO-TV mode", srv_info->name); + return; + } + if (srv_info->srv_type == AM_SCAN_SRV_DRADIO && (mode & AM_SCAN_DTVMODE_NORADIO)) { + LOGD( "Skip program '%s' for NO-RADIO mode", srv_info->name); + return; + } - /* Set default name to tv/radio program if no name specified */ - if (!strcmp(srv_info->name, "") && - (srv_info->srv_type == AM_SCAN_SRV_DTV || - srv_info->srv_type == AM_SCAN_SRV_DRADIO)) { - strcpy(srv_info->name, "xxxNo Name"); - } - } + /* Set default name to tv/radio program if no name specified */ + if (!strcmp(srv_info->name, "") && + (srv_info->srv_type == AM_SCAN_SRV_DTV || + srv_info->srv_type == AM_SCAN_SRV_DRADIO)) { + strcpy(srv_info->name, "xxxNo Name"); + } + } } void CTvScanner::scan_store_dvb_ts_evt_service(SCAN_ServiceInfo_t *srv) { - LOGD("scan_store_dvb_ts_evt_service freq:%d, sid:%d", m_s_Scanner->mCurEv.mFrequency, srv->srv_id); - m_s_Scanner->mCurEv.clear(); - m_s_Scanner->mCurEv.mServiceId = srv->srv_id; - strncpy(m_s_Scanner->mCurEv.mProgramName, srv->name, 1024); - m_s_Scanner->mCurEv.mprogramType = srv->srv_type; - m_s_Scanner->mCurEv.mVid = srv->vid; - m_s_Scanner->mCurEv.mVfmt = srv->vfmt; - m_s_Scanner->mCurEv.mAcnt = srv->aud_info.audio_count; - for (int i = 0; i < srv->aud_info.audio_count; i++) { - m_s_Scanner->mCurEv.mAid[i] = srv->aud_info.audios[i].pid; - m_s_Scanner->mCurEv.mAfmt[i] = srv->aud_info.audios[i].fmt; - strncpy(m_s_Scanner->mCurEv.mAlang[i], srv->aud_info.audios[i].lang, 10); - m_s_Scanner->mCurEv.mAtype[i] = srv->aud_info.audios[i].audio_type; - } - m_s_Scanner->mCurEv.mPcr = srv->pcr_pid; - m_s_Scanner->mCurEv.mScnt = srv->sub_info.subtitle_count; - for (int i = 0; i < srv->sub_info.subtitle_count; i++) { - m_s_Scanner->mCurEv.mStype[i] = TYPE_DVB_SUBTITLE; - m_s_Scanner->mCurEv.mSid[i] = srv->sub_info.subtitles[i].pid; - m_s_Scanner->mCurEv.mSstype[i] = srv->sub_info.subtitles[i].type; - m_s_Scanner->mCurEv.mSid1[i] = srv->sub_info.subtitles[i].comp_page_id; - m_s_Scanner->mCurEv.mSid2[i] = srv->sub_info.subtitles[i].anci_page_id; - strncpy(m_s_Scanner->mCurEv.mSlang[i], srv->sub_info.subtitles[i].lang, 10); - } - int scnt = m_s_Scanner->mCurEv.mScnt; - for (int i = 0; i < srv->ttx_info.teletext_count; i++) { - if (srv->ttx_info.teletexts[i].type == 0x2 || - srv->ttx_info.teletexts[i].type == 0x5){ - if (scnt >= (sizeof(m_s_Scanner->mCurEv.mStype)/sizeof(int))) - break; - m_s_Scanner->mCurEv.mStype[scnt] = TYPE_DTV_TELETEXT; - m_s_Scanner->mCurEv.mSid[scnt] = srv->ttx_info.teletexts[i].pid; - m_s_Scanner->mCurEv.mSstype[scnt] = srv->ttx_info.teletexts[i].type; - m_s_Scanner->mCurEv.mSid1[scnt] = srv->ttx_info.teletexts[i].magazine_no; - m_s_Scanner->mCurEv.mSid2[scnt] = srv->ttx_info.teletexts[i].page_no; - strncpy(m_s_Scanner->mCurEv.mSlang[scnt], srv->ttx_info.teletexts[i].lang, 10); - scnt++; - } - } - m_s_Scanner->mCurEv.mScnt = scnt; + LOGD("scan_store_dvb_ts_evt_service freq:%d, sid:%d", m_s_Scanner->mCurEv.mFrequency, srv->srv_id); + m_s_Scanner->mCurEv.clear(); + m_s_Scanner->mCurEv.mServiceId = srv->srv_id; + strncpy(m_s_Scanner->mCurEv.mProgramName, srv->name, 1024); + m_s_Scanner->mCurEv.mprogramType = srv->srv_type; + m_s_Scanner->mCurEv.mVid = srv->vid; + m_s_Scanner->mCurEv.mVfmt = srv->vfmt; + m_s_Scanner->mCurEv.mAcnt = srv->aud_info.audio_count; + for (int i = 0; i < srv->aud_info.audio_count; i++) { + m_s_Scanner->mCurEv.mAid[i] = srv->aud_info.audios[i].pid; + m_s_Scanner->mCurEv.mAfmt[i] = srv->aud_info.audios[i].fmt; + strncpy(m_s_Scanner->mCurEv.mAlang[i], srv->aud_info.audios[i].lang, 10); + m_s_Scanner->mCurEv.mAtype[i] = srv->aud_info.audios[i].audio_type; + } + m_s_Scanner->mCurEv.mPcr = srv->pcr_pid; + m_s_Scanner->mCurEv.mScnt = srv->sub_info.subtitle_count; + for (int i = 0; i < srv->sub_info.subtitle_count; i++) { + m_s_Scanner->mCurEv.mStype[i] = TYPE_DVB_SUBTITLE; + m_s_Scanner->mCurEv.mSid[i] = srv->sub_info.subtitles[i].pid; + m_s_Scanner->mCurEv.mSstype[i] = srv->sub_info.subtitles[i].type; + m_s_Scanner->mCurEv.mSid1[i] = srv->sub_info.subtitles[i].comp_page_id; + m_s_Scanner->mCurEv.mSid2[i] = srv->sub_info.subtitles[i].anci_page_id; + strncpy(m_s_Scanner->mCurEv.mSlang[i], srv->sub_info.subtitles[i].lang, 10); + } + int scnt = m_s_Scanner->mCurEv.mScnt; + for (int i = 0; i < srv->ttx_info.teletext_count; i++) { + if (srv->ttx_info.teletexts[i].type == 0x2 || + srv->ttx_info.teletexts[i].type == 0x5) { + if (scnt >= (sizeof(m_s_Scanner->mCurEv.mStype) / sizeof(int))) + break; + m_s_Scanner->mCurEv.mStype[scnt] = TYPE_DTV_TELETEXT; + m_s_Scanner->mCurEv.mSid[scnt] = srv->ttx_info.teletexts[i].pid; + m_s_Scanner->mCurEv.mSstype[scnt] = srv->ttx_info.teletexts[i].type; + m_s_Scanner->mCurEv.mSid1[scnt] = srv->ttx_info.teletexts[i].magazine_no; + m_s_Scanner->mCurEv.mSid2[scnt] = srv->ttx_info.teletexts[i].page_no; + strncpy(m_s_Scanner->mCurEv.mSlang[scnt], srv->ttx_info.teletexts[i].lang, 10); + scnt++; + } + } + m_s_Scanner->mCurEv.mScnt = scnt; - m_s_Scanner->mCurEv.mMSG[0] = '\0'; + m_s_Scanner->mCurEv.mMSG[0] = '\0'; - m_s_Scanner->mCurEv.mType = ScannerEvent::EVENT_DTV_PROG_DATA; - m_s_Scanner->sendEvent(m_s_Scanner->mCurEv); + m_s_Scanner->mCurEv.mType = ScannerEvent::EVENT_DTV_PROG_DATA; + m_s_Scanner->sendEvent(m_s_Scanner->mCurEv); } void CTvScanner::scan_store_dvb_ts(AM_SCAN_Result_t *result, AM_SCAN_TS_t *ts) { - dvbpsi_pmt_t *pmt; - dvbpsi_pmt_es_t *es; - dvbpsi_descriptor_t *descr; - int src = result->start_para->dtv_para.source; - int mode = result->start_para->dtv_para.mode; - int net_dbid = -1, dbid = -1, orig_net_id = -1, satpara_dbid = -1; - char selbuf[256]; - char insbuf[400]; - AM_Bool_t store = AM_TRUE; - dvbpsi_pat_t *valid_pat = NULL; - uint8_t plp_id; - SCAN_ServiceInfo_t srv_info; - - valid_pat = get_valid_pats(ts); - if (valid_pat == NULL) { - LOGD("No PAT found in ts, will not store to dbase"); - return; - } - - LOGD("@@ TS: src %d @@", src); - - scan_process_ts_info(result, ts, &m_s_Scanner->mCurEv); - - if (ts->digital.pmts || (IS_DVBT2_TS(ts->digital.fend_para) && ts->digital.dvbt2_data_plp_num > 0)) { - int loop_count, lc; - dvbpsi_sdt_t *sdt_list; - dvbpsi_pmt_t *pmt_list; - dvbpsi_pat_t *pat_list; - - /* For DVB-T2, search for each PLP, else search in current TS*/ - loop_count = IS_DVBT2_TS(ts->digital.fend_para) ? ts->digital.dvbt2_data_plp_num : 1; - LOGD("plp num %d", loop_count); - - for (lc = 0; lc < loop_count; lc++) { - pat_list = IS_DVBT2_TS(ts->digital.fend_para) ? ts->digital.dvbt2_data_plps[lc].pats : ts->digital.pats; - pmt_list = IS_DVBT2_TS(ts->digital.fend_para) ? ts->digital.dvbt2_data_plps[lc].pmts : ts->digital.pmts; - sdt_list = IS_DVBT2_TS(ts->digital.fend_para) ? ts->digital.dvbt2_data_plps[lc].sdts : ts->digital.sdts; - plp_id = IS_DVBT2_TS(ts->digital.fend_para) ? ts->digital.dvbt2_data_plps[lc].id : -1; - LOGD("plp_id %d", plp_id); - - AM_SI_LIST_BEGIN(pmt_list, pmt) { - scan_init_service_info(&srv_info); - srv_info.satpara_dbid = satpara_dbid; - srv_info.srv_id = pmt->i_program_number; - srv_info.src = src; - srv_info.pmt_pid = get_pmt_pid(pat_list, pmt->i_program_number); - srv_info.pcr_pid = pmt->i_pcr_pid; - srv_info.plp_id = plp_id; + dvbpsi_pmt_t *pmt; + dvbpsi_pmt_es_t *es; + dvbpsi_descriptor_t *descr; + int src = result->start_para->dtv_para.source; + int mode = result->start_para->dtv_para.mode; + int net_dbid = -1, dbid = -1, orig_net_id = -1, satpara_dbid = -1; + char selbuf[256]; + char insbuf[400]; + AM_Bool_t store = AM_TRUE; + dvbpsi_pat_t *valid_pat = NULL; + uint8_t plp_id; + SCAN_ServiceInfo_t srv_info; + + valid_pat = get_valid_pats(ts); + if (valid_pat == NULL) { + LOGD("No PAT found in ts, will not store to dbase"); + return; + } - /* looking for CA descr */ - if (! srv_info.scrambled_flag) { - scan_extract_ca_scrambled_flag(pmt->p_first_descriptor, &srv_info.scrambled_flag); - } + LOGD("@@ TS: src %d @@", src); + + scan_process_ts_info(result, ts, &m_s_Scanner->mCurEv); + + if (ts->digital.pmts || (IS_DVBT2_TS(ts->digital.fend_para) && ts->digital.dvbt2_data_plp_num > 0)) { + int loop_count, lc; + dvbpsi_sdt_t *sdt_list; + dvbpsi_pmt_t *pmt_list; + dvbpsi_pat_t *pat_list; + + /* For DVB-T2, search for each PLP, else search in current TS*/ + loop_count = IS_DVBT2_TS(ts->digital.fend_para) ? ts->digital.dvbt2_data_plp_num : 1; + LOGD("plp num %d", loop_count); + + for (lc = 0; lc < loop_count; lc++) { + pat_list = IS_DVBT2_TS(ts->digital.fend_para) ? ts->digital.dvbt2_data_plps[lc].pats : ts->digital.pats; + pmt_list = IS_DVBT2_TS(ts->digital.fend_para) ? ts->digital.dvbt2_data_plps[lc].pmts : ts->digital.pmts; + sdt_list = IS_DVBT2_TS(ts->digital.fend_para) ? ts->digital.dvbt2_data_plps[lc].sdts : ts->digital.sdts; + plp_id = IS_DVBT2_TS(ts->digital.fend_para) ? ts->digital.dvbt2_data_plps[lc].id : -1; + LOGD("plp_id %d", plp_id); + + AM_SI_LIST_BEGIN(pmt_list, pmt) { + scan_init_service_info(&srv_info); + srv_info.satpara_dbid = satpara_dbid; + srv_info.srv_id = pmt->i_program_number; + srv_info.src = src; + srv_info.pmt_pid = get_pmt_pid(pat_list, pmt->i_program_number); + srv_info.pcr_pid = pmt->i_pcr_pid; + srv_info.plp_id = plp_id; + + /* looking for CA descr */ + if (! srv_info.scrambled_flag) { + scan_extract_ca_scrambled_flag(pmt->p_first_descriptor, &srv_info.scrambled_flag); + } - AM_SI_LIST_BEGIN(pmt->p_first_es, es) { - AM_SI_ExtractAVFromES(es, &srv_info.vid, &srv_info.vfmt, &srv_info.aud_info); + AM_SI_LIST_BEGIN(pmt->p_first_es, es) { + AM_SI_ExtractAVFromES(es, &srv_info.vid, &srv_info.vfmt, &srv_info.aud_info); - if (store) { - AM_SI_ExtractDVBSubtitleFromES(es, &srv_info.sub_info); - AM_SI_ExtractDVBTeletextFromES(es, &srv_info.ttx_info); - } + if (store) { + AM_SI_ExtractDVBSubtitleFromES(es, &srv_info.sub_info); + AM_SI_ExtractDVBTeletextFromES(es, &srv_info.ttx_info); + } - if (! srv_info.scrambled_flag) - scan_extract_ca_scrambled_flag(es->p_first_descriptor, &srv_info.scrambled_flag); - } - AM_SI_LIST_END() + if (! srv_info.scrambled_flag) + scan_extract_ca_scrambled_flag(es->p_first_descriptor, &srv_info.scrambled_flag); + } + AM_SI_LIST_END() - scan_extract_srv_info_from_sdt(result, sdt_list, &srv_info); + scan_extract_srv_info_from_sdt(result, sdt_list, &srv_info); - /*Store this service*/ - scan_update_service_info(result, &srv_info); + /*Store this service*/ + scan_update_service_info(result, &srv_info); - scan_store_dvb_ts_evt_service(&srv_info); + scan_store_dvb_ts_evt_service(&srv_info); - } - AM_SI_LIST_END() + } + AM_SI_LIST_END() - /* All programs in PMTs added, now trying the programs in SDT but NOT in PMT */ - dvbpsi_sdt_service_t *srv; - dvbpsi_sdt_t *sdt; + /* All programs in PMTs added, now trying the programs in SDT but NOT in PMT */ + dvbpsi_sdt_service_t *srv; + dvbpsi_sdt_t *sdt; - AM_SI_LIST_BEGIN(ts->digital.sdts, sdt) { - AM_SI_LIST_BEGIN(sdt->p_first_service, srv) { - AM_Bool_t found_in_pmt = AM_FALSE; + AM_SI_LIST_BEGIN(ts->digital.sdts, sdt) { + AM_SI_LIST_BEGIN(sdt->p_first_service, srv) { + AM_Bool_t found_in_pmt = AM_FALSE; - /* Is already added in PMT? */ - AM_SI_LIST_BEGIN(ts->digital.pmts, pmt) - if (srv->i_service_id == pmt->i_program_number) { - found_in_pmt = AM_TRUE; - break; - } - AM_SI_LIST_END() + /* Is already added in PMT? */ + AM_SI_LIST_BEGIN(ts->digital.pmts, pmt) + if (srv->i_service_id == pmt->i_program_number) { + found_in_pmt = AM_TRUE; + break; + } + AM_SI_LIST_END() - if (found_in_pmt) - continue; + if (found_in_pmt) + continue; - scan_init_service_info(&srv_info); - srv_info.satpara_dbid = satpara_dbid; - srv_info.srv_id = srv->i_service_id; - srv_info.src = src; + scan_init_service_info(&srv_info); + srv_info.satpara_dbid = satpara_dbid; + srv_info.srv_id = srv->i_service_id; + srv_info.src = src; - scan_extract_srv_info_from_sdt(result, sdt_list, &srv_info); + scan_extract_srv_info_from_sdt(result, sdt_list, &srv_info); - scan_update_service_info(result, &srv_info); + scan_update_service_info(result, &srv_info); - /*as no pmt for this srv, set type to data for invisible*/ - srv_info.srv_type = 0; + /*as no pmt for this srv, set type to data for invisible*/ + srv_info.srv_type = 0; - scan_store_dvb_ts_evt_service(&srv_info); + scan_store_dvb_ts_evt_service(&srv_info); - } - AM_SI_LIST_END() - } - AM_SI_LIST_END() + } + AM_SI_LIST_END() + } + AM_SI_LIST_END() - } - } + } + } } void CTvScanner::dtv_scan_store(AM_SCAN_Result_t *result) { - AM_SCAN_TS_t *ts; + AM_SCAN_TS_t *ts; - LOGD("Storing tses ..."); + LOGD("Storing tses ..."); - AM_SI_LIST_BEGIN(result->tses, ts) { - scan_store_dvb_ts(result, ts); - } - AM_SI_LIST_END() + AM_SI_LIST_BEGIN(result->tses, ts) { + scan_store_dvb_ts(result, ts); + } + AM_SI_LIST_END() } int CTvScanner::manualDtmbScan(int beginFreq, int endFreq, int modulation) { - stopScan(); + stopScan(); - if (!mbScanStart) { //not start or stop - AM_SCAN_CreatePara_t para; - AM_DMX_OpenPara_t dmx_para; - AM_SCAN_Handle_t handle = 0; - int i; - // Create the scan - memset(¶, 0, sizeof(para)); + if (!mbScanStart) { //not start or stop + AM_SCAN_CreatePara_t para; + AM_DMX_OpenPara_t dmx_para; + AM_SCAN_Handle_t handle = 0; + int i; + // Create the scan + memset(¶, 0, sizeof(para)); - para.fend_dev_id = 0;//default - para.mode = AM_SCAN_MODE_DTV_ATV;//DTV - para.atv_para.mode = AM_SCAN_ATVMODE_NONE; - para.dtv_para.mode = AM_SCAN_DTVMODE_MANUAL; - para.dtv_para.source = FE_DTMB;//fe_type - para.dtv_para.dmx_dev_id = 0;//default 0 + para.fend_dev_id = 0;//default + para.mode = AM_SCAN_MODE_DTV_ATV;//DTV + para.atv_para.mode = AM_SCAN_ATVMODE_NONE; + para.dtv_para.mode = AM_SCAN_DTVMODE_MANUAL; + para.dtv_para.source = FE_DTMB;//fe_type + para.dtv_para.dmx_dev_id = 0;//default 0 - Vector > vcp; - CTvRegion::getChannelListByNameAndFreqRange("CHINA,Default DTMB ALL", beginFreq, endFreq, vcp); - int size = vcp.size(); + Vector > vcp; + CTvRegion::getChannelListByNameAndFreqRange("CHINA,Default DTMB ALL", beginFreq, endFreq, vcp); + int size = vcp.size(); - //@author:hao.fu - if (size == 0) { - return -1; - } + //@author:hao.fu + if (size == 0) { + return -1; + } - if (!(para.dtv_para.fe_paras = static_cast(calloc(size, sizeof(AM_FENDCTRL_DVBFrontendParameters_t))))) - return -1; + if (!(para.dtv_para.fe_paras = static_cast(calloc(size, sizeof(AM_FENDCTRL_DVBFrontendParameters_t))))) + return -1; - for (i = 0; i < size; i++) { - para.dtv_para.fe_paras[i].m_type = 5;//MODE_DTMB - para.dtv_para.fe_paras[i].dtmb.para.frequency = vcp[i]->getFrequency(); - para.dtv_para.fe_paras[i].dtmb.para.inversion = INVERSION_OFF; - para.dtv_para.fe_paras[i].dtmb.para.u.ofdm.bandwidth = (fe_bandwidth_t)(vcp[i]->getBandwidth()); - if (modulation == -1) - para.dtv_para.fe_paras[i].cable.para.u.qam.modulation = (fe_modulation_t)(vcp[i]->getModulation()); - else - para.dtv_para.fe_paras[i].cable.para.u.qam.modulation = (fe_modulation_t)modulation; - } + for (i = 0; i < size; i++) { + para.dtv_para.fe_paras[i].m_type = 5;//MODE_DTMB + para.dtv_para.fe_paras[i].dtmb.para.frequency = vcp[i]->getFrequency(); + para.dtv_para.fe_paras[i].dtmb.para.inversion = INVERSION_OFF; + para.dtv_para.fe_paras[i].dtmb.para.u.ofdm.bandwidth = (fe_bandwidth_t)(vcp[i]->getBandwidth()); + if (modulation == -1) + para.dtv_para.fe_paras[i].cable.para.u.qam.modulation = (fe_modulation_t)(vcp[i]->getModulation()); + else + para.dtv_para.fe_paras[i].cable.para.u.qam.modulation = (fe_modulation_t)modulation; + } - para.dtv_para.fe_cnt = size; - para.dtv_para.resort_all = AM_FALSE; - para.dtv_para.sort_method = AM_SCAN_SORT_BY_FREQ_SRV_ID; - para.store_cb = dtv_scan_store; + para.dtv_para.fe_cnt = size; + para.dtv_para.resort_all = AM_FALSE; + para.dtv_para.sort_method = AM_SCAN_SORT_BY_FREQ_SRV_ID; + para.store_cb = dtv_scan_store; - memset(&dmx_para, 0, sizeof(dmx_para)); - AM_DMX_Open(para.dtv_para.dmx_dev_id, &dmx_para); + memset(&dmx_para, 0, sizeof(dmx_para)); + AM_DMX_Open(para.dtv_para.dmx_dev_id, &dmx_para); - if ((para.dtv_para.mode & 0x07) != AM_SCAN_DTVMODE_NONE) { - AM_FEND_SetMode(para.fend_dev_id, para.dtv_para.source); - tv_scan_reconnect_dmx_to_fend(para.dtv_para.dmx_dev_id, para.fend_dev_id); - } + if ((para.dtv_para.mode & 0x07) != AM_SCAN_DTVMODE_NONE) { + AM_FEND_SetMode(para.fend_dev_id, para.dtv_para.source); + tv_scan_reconnect_dmx_to_fend(para.dtv_para.dmx_dev_id, para.fend_dev_id); + } - // Start Scan - if (AM_SCAN_Create(¶, &handle) != AM_SUCCESS) { - LOGD("SCAN CREATE fail"); - handle = NULL; - } else { - mScanHandle = handle; - AM_SCAN_SetUserData(handle, (void *)this); - AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - if (AM_SCAN_Start(handle) != AM_SUCCESS) { - AM_SCAN_Destroy(handle, AM_FALSE); - AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - handle = NULL; - } - } - if (para.atv_para.fe_paras != NULL) - free(para.atv_para.fe_paras); - if (para.dtv_para.fe_paras != NULL) - free(para.dtv_para.fe_paras); + // Start Scan + if (AM_SCAN_Create(¶, &handle) != AM_SUCCESS) { + LOGD("SCAN CREATE fail"); + handle = NULL; + } else { + mScanHandle = handle; + AM_SCAN_SetUserData(handle, (void *)this); + AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); + AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); + if (AM_SCAN_Start(handle) != AM_SUCCESS) { + AM_SCAN_Destroy(handle, AM_FALSE); + AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); + AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); + handle = NULL; + } + } + if (para.atv_para.fe_paras != NULL) + free(para.atv_para.fe_paras); + if (para.dtv_para.fe_paras != NULL) + free(para.dtv_para.fe_paras); - if (handle == NULL) { - return -1; - } - mbScanStart = true;//start call ok - } else { - LOGD("scanning and not stop"); - } - return 0; + if (handle == NULL) { + return -1; + } + mbScanStart = true;//start call ok + } else { + LOGD("scanning and not stop"); + } + return 0; } @@ -1117,97 +1117,97 @@ int CTvScanner::manualDtmbScan(int beginFreq, int endFreq, int modulation) //only test for dtv allbland auto int CTvScanner::autoDtmbScan() { - stopScan(); + stopScan(); - if (!mbScanStart) { //not start or stop - AM_SCAN_CreatePara_t para; - AM_DMX_OpenPara_t dmx_para; - AM_SCAN_Handle_t handle = 0; - // Create the scan - memset(¶, 0, sizeof(para)); + if (!mbScanStart) { //not start or stop + AM_SCAN_CreatePara_t para; + AM_DMX_OpenPara_t dmx_para; + AM_SCAN_Handle_t handle = 0; + // Create the scan + memset(¶, 0, sizeof(para)); - //strcpy(para.default_text_lang,"eng");//config - //strcpy(para.text_langs, "local eng zho chi chs first");//config - para.fend_dev_id = 0;//default - para.mode = AM_SCAN_MODE_DTV_ATV;//DTV - para.atv_para.mode = AM_SCAN_ATVMODE_NONE; - para.dtv_para.mode = AM_SCAN_DTVMODE_ALLBAND;//DTV_MODE_ALLBAND - //para.dtv_para.mode |= (*env)->GetIntField(env, para, doptions);//忽略 - para.dtv_para.source = FE_DTMB;//fe_type - para.dtv_para.dmx_dev_id = 0;//default 0 - Vector > vcp; - //CTvDatabase::getChannelParaList("/data/tv_default.xml", vcp);//channel list from xml or db - CTvRegion::getChannelListByName("CHINA,Default DTMB ALL", vcp); + //strcpy(para.default_text_lang,"eng");//config + //strcpy(para.text_langs, "local eng zho chi chs first");//config + para.fend_dev_id = 0;//default + para.mode = AM_SCAN_MODE_DTV_ATV;//DTV + para.atv_para.mode = AM_SCAN_ATVMODE_NONE; + para.dtv_para.mode = AM_SCAN_DTVMODE_ALLBAND;//DTV_MODE_ALLBAND + //para.dtv_para.mode |= (*env)->GetIntField(env, para, doptions);//忽略 + para.dtv_para.source = FE_DTMB;//fe_type + para.dtv_para.dmx_dev_id = 0;//default 0 + Vector > vcp; + //CTvDatabase::getChannelParaList("/data/tv_default.xml", vcp);//channel list from xml or db + CTvRegion::getChannelListByName("CHINA,Default DTMB ALL", vcp); - int size = vcp.size(); - LOGD("channel list size = %d", size); - //showboz - if (size == 0) { - CTvDatabase::GetTvDb()->importXmlToDB("/etc/tv_default.xml"); - CTvRegion::getChannelListByName("CHINA,Default DTMB ALL", vcp); - size = vcp.size(); - } + int size = vcp.size(); + LOGD("channel list size = %d", size); + //showboz + if (size == 0) { + CTvDatabase::GetTvDb()->importXmlToDB("/etc/tv_default.xml"); + CTvRegion::getChannelListByName("CHINA,Default DTMB ALL", vcp); + size = vcp.size(); + } - if (!(para.dtv_para.fe_paras = static_cast(calloc(size, sizeof(AM_FENDCTRL_DVBFrontendParameters_t))))) - return -1; + if (!(para.dtv_para.fe_paras = static_cast(calloc(size, sizeof(AM_FENDCTRL_DVBFrontendParameters_t))))) + return -1; - //memset(pfp, 0, size * sizeof(AM_FENDCTRL_DVBFrontendParameters_t)); + //memset(pfp, 0, size * sizeof(AM_FENDCTRL_DVBFrontendParameters_t)); - for (int i = 0; i < size; i++) { - para.dtv_para.fe_paras[i].m_type = 5;//MODE_DTMB - para.dtv_para.fe_paras[i].dtmb.para.frequency = vcp[i]->getFrequency(); - para.dtv_para.fe_paras[i].dtmb.para.inversion = INVERSION_OFF; - para.dtv_para.fe_paras[i].dtmb.para.u.ofdm.bandwidth = (fe_bandwidth_t)(vcp[i]->getBandwidth()); - } - //allband - para.dtv_para.fe_cnt = size; + for (int i = 0; i < size; i++) { + para.dtv_para.fe_paras[i].m_type = 5;//MODE_DTMB + para.dtv_para.fe_paras[i].dtmb.para.frequency = vcp[i]->getFrequency(); + para.dtv_para.fe_paras[i].dtmb.para.inversion = INVERSION_OFF; + para.dtv_para.fe_paras[i].dtmb.para.u.ofdm.bandwidth = (fe_bandwidth_t)(vcp[i]->getBandwidth()); + } + //allband + para.dtv_para.fe_cnt = size; - para.dtv_para.resort_all = AM_FALSE; - para.dtv_para.sort_method = AM_SCAN_SORT_BY_FREQ_SRV_ID; - para.store_cb = dtv_scan_store; + para.dtv_para.resort_all = AM_FALSE; + para.dtv_para.sort_method = AM_SCAN_SORT_BY_FREQ_SRV_ID; + para.store_cb = dtv_scan_store; - memset(&dmx_para, 0, sizeof(dmx_para)); - AM_DMX_Open(para.dtv_para.dmx_dev_id, &dmx_para); + memset(&dmx_para, 0, sizeof(dmx_para)); + AM_DMX_Open(para.dtv_para.dmx_dev_id, &dmx_para); - if ((para.dtv_para.mode & 0x07) != AM_SCAN_DTVMODE_NONE) { - AM_FEND_SetMode(para.fend_dev_id, para.dtv_para.source); - tv_scan_reconnect_dmx_to_fend(para.dtv_para.dmx_dev_id, para.fend_dev_id); - } + if ((para.dtv_para.mode & 0x07) != AM_SCAN_DTVMODE_NONE) { + AM_FEND_SetMode(para.fend_dev_id, para.dtv_para.source); + tv_scan_reconnect_dmx_to_fend(para.dtv_para.dmx_dev_id, para.fend_dev_id); + } - // prog->dmx_id = para.dtv_para.dmx_dev_id; - // prog->fend_id = para.fend_dev_id; - // prog->mode = para.dtv_para.mode; - // Start Scan - if (AM_SCAN_Create(¶, &handle) != AM_SUCCESS) { - LOGD("SCAN CREATE fail"); - handle = NULL; - } else { - mScanHandle = handle; - AM_SCAN_SetUserData(handle, (void *)this); - //注册æœç´¢äº‹ä»¶ - AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - //注册信å·è´¨é‡é€šçŸ¥äº‹ä»¶ - AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - if (AM_SCAN_Start(handle) != AM_SUCCESS) { - AM_SCAN_Destroy(handle, AM_FALSE); - AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - handle = NULL; - } - } - if (para.atv_para.fe_paras != NULL) - free(para.atv_para.fe_paras); - if (para.dtv_para.fe_paras != NULL) - free(para.dtv_para.fe_paras); + // prog->dmx_id = para.dtv_para.dmx_dev_id; + // prog->fend_id = para.fend_dev_id; + // prog->mode = para.dtv_para.mode; + // Start Scan + if (AM_SCAN_Create(¶, &handle) != AM_SUCCESS) { + LOGD("SCAN CREATE fail"); + handle = NULL; + } else { + mScanHandle = handle; + AM_SCAN_SetUserData(handle, (void *)this); + //注册æœç´¢äº‹ä»¶ + AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); + //注册信å·è´¨é‡é€šçŸ¥äº‹ä»¶ + AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); + if (AM_SCAN_Start(handle) != AM_SUCCESS) { + AM_SCAN_Destroy(handle, AM_FALSE); + AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); + AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); + handle = NULL; + } + } + if (para.atv_para.fe_paras != NULL) + free(para.atv_para.fe_paras); + if (para.dtv_para.fe_paras != NULL) + free(para.dtv_para.fe_paras); - if (handle == NULL) { - return -1; - } - mbScanStart = true;//start call ok - } else { - LOGD("scanning and not stop"); - } - return 0; + if (handle == NULL) { + return -1; + } + mbScanStart = true;//start call ok + } else { + LOGD("scanning and not stop"); + } + return 0; } /*int CTvScanner::autoAtscScan(int attennaType,int std) @@ -1322,100 +1322,100 @@ int CTvScanner::autoDtmbScan() int CTvScanner::stopScan() { - LOGD("StopScan mScanHandle=%d", mScanHandle); - //requestExit(); - if (mbScanStart) { //if start ok and not stop - int ret = AM_SCAN_Destroy(mScanHandle, AM_TRUE); - AM_EVT_Unsubscribe((long)mScanHandle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Unsubscribe((long)mScanHandle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - AM_SEC_Cache_Reset(0); - //stop loop - LOGD("StopScan , ret=%d", ret); - mbScanStart = false;//stop ok - } else { - LOGD("not start scan or scan stoped"); - } - return 0; + LOGD("StopScan mScanHandle=%d", mScanHandle); + //requestExit(); + if (mbScanStart) { //if start ok and not stop + int ret = AM_SCAN_Destroy(mScanHandle, AM_TRUE); + AM_EVT_Unsubscribe((long)mScanHandle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); + AM_EVT_Unsubscribe((long)mScanHandle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); + AM_SEC_Cache_Reset(0); + //stop loop + LOGD("StopScan , ret=%d", ret); + mbScanStart = false;//stop ok + } else { + LOGD("not start scan or scan stoped"); + } + return 0; } void CTvScanner::tv_scan_evt_callback(long dev_no, int event_type, void *param, void *data) { - CTvScanner *pT = NULL; - long long tmpFreq = 0; + CTvScanner *pT = NULL; + long long tmpFreq = 0; - LOGD("evt evt:%d", event_type); - AM_SCAN_GetUserData((AM_SCAN_Handle_t)dev_no, (void **)&pT); - if (pT == NULL) { - return; - } - pT->mCurEv.clear(); - memset(pT->mCurEv.mProgramName, '\0', sizeof(pT->mCurEv.mProgramName)); - memset(pT->mCurEv.mMSG, '\0', sizeof(pT->mCurEv.mMSG)); - if (event_type == AM_SCAN_EVT_PROGRESS) { - AM_SCAN_Progress_t *evt = (AM_SCAN_Progress_t *)param; - LOGD("progress evt:%d", evt->evt); - switch (evt->evt) { - case AM_SCAN_PROGRESS_SCAN_BEGIN: - pT->mCurEv.mPercent = 0; - break; - case AM_SCAN_PROGRESS_NIT_BEGIN: - - break; - case AM_SCAN_PROGRESS_NIT_END: - - break; - case AM_SCAN_PROGRESS_TS_BEGIN: { - AM_SCAN_TSProgress_t *tp = (AM_SCAN_TSProgress_t *)evt->data; - if (tp == NULL) - break; - pT->mCurEv.mChannelNumber = tp->index; - pT->mCurEv.mMode = tp->fend_para.m_type; - pT->mCurEv.mFrequency = ((struct dvb_frontend_parameters *)(&tp->fend_para))->frequency; - pT->mCurEv.mSymbolRate = tp->fend_para.cable.para.u.qam.symbol_rate; - pT->mCurEv.mModulation = tp->fend_para.cable.para.u.qam.modulation; - pT->mCurEv.mBandwidth = tp->fend_para.terrestrial.para.u.ofdm.bandwidth; - pT->mCurEv.mOfdm_mode = tp->fend_para.terrestrial.para.u.ofdm.ofdm_mode; - pT->mCurEv.mAudio = tp->fend_para.analog.para.u.analog.audmode; - pT->mCurEv.mStandard = tp->fend_para.analog.para.u.analog.std; - pT->mCurEv.mSat_polarisation = tp->fend_para.sat.polarisation; - if (pT->mCurEv.mMode == FE_ANALOG) { - if (pT->mSource == FE_ATSC) { - pT->mCurEv.mPercent = (tp->index * 100) / tp->total; - } else { - pT->mCurEv.mPercent = 0; - } - } else { - pT->mCurEv.mPercent = (tp->index * 100) / tp->total; - } + LOGD("evt evt:%d", event_type); + AM_SCAN_GetUserData((AM_SCAN_Handle_t)dev_no, (void **)&pT); + if (pT == NULL) { + return; + } + pT->mCurEv.clear(); + memset(pT->mCurEv.mProgramName, '\0', sizeof(pT->mCurEv.mProgramName)); + memset(pT->mCurEv.mMSG, '\0', sizeof(pT->mCurEv.mMSG)); + if (event_type == AM_SCAN_EVT_PROGRESS) { + AM_SCAN_Progress_t *evt = (AM_SCAN_Progress_t *)param; + LOGD("progress evt:%d", evt->evt); + switch (evt->evt) { + case AM_SCAN_PROGRESS_SCAN_BEGIN: + pT->mCurEv.mPercent = 0; + break; + case AM_SCAN_PROGRESS_NIT_BEGIN: + + break; + case AM_SCAN_PROGRESS_NIT_END: + + break; + case AM_SCAN_PROGRESS_TS_BEGIN: { + AM_SCAN_TSProgress_t *tp = (AM_SCAN_TSProgress_t *)evt->data; + if (tp == NULL) + break; + pT->mCurEv.mChannelNumber = tp->index; + pT->mCurEv.mMode = tp->fend_para.m_type; + pT->mCurEv.mFrequency = ((struct dvb_frontend_parameters *)(&tp->fend_para))->frequency; + pT->mCurEv.mSymbolRate = tp->fend_para.cable.para.u.qam.symbol_rate; + pT->mCurEv.mModulation = tp->fend_para.cable.para.u.qam.modulation; + pT->mCurEv.mBandwidth = tp->fend_para.terrestrial.para.u.ofdm.bandwidth; + pT->mCurEv.mOfdm_mode = tp->fend_para.terrestrial.para.u.ofdm.ofdm_mode; + pT->mCurEv.mAudio = tp->fend_para.analog.para.u.analog.audmode; + pT->mCurEv.mStandard = tp->fend_para.analog.para.u.analog.std; + pT->mCurEv.mSat_polarisation = tp->fend_para.sat.polarisation; + if (pT->mCurEv.mMode == FE_ANALOG) { + if (pT->mSource == FE_ATSC) { + pT->mCurEv.mPercent = (tp->index * 100) / tp->total; + } else { + pT->mCurEv.mPercent = 0; + } + } else { + pT->mCurEv.mPercent = (tp->index * 100) / tp->total; + } - if (pT->mCurEv.mTotalChannelCount == 0) - pT->mCurEv.mTotalChannelCount = tp->total; - if (pT->mCurEv.mPercent >= 100) - pT->mCurEv.mPercent = 99; + if (pT->mCurEv.mTotalChannelCount == 0) + pT->mCurEv.mTotalChannelCount = tp->total; + if (pT->mCurEv.mPercent >= 100) + pT->mCurEv.mPercent = 99; - pT->mCurEv.mLockedStatus = 0; - pT->mCurEv.mStrength = 0; - pT->mCurEv.mSnr = 0; - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; + pT->mCurEv.mLockedStatus = 0; + pT->mCurEv.mStrength = 0; + pT->mCurEv.mSnr = 0; + pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; - pT->sendEvent(pT->mCurEv); - } - break; - case AM_SCAN_PROGRESS_TS_END: { - /*pT->mCurEv.mLockedStatus = 0; - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; - pT->sendEvent(pT->mCurEv);*/ - } - break; + pT->sendEvent(pT->mCurEv); + } + break; + case AM_SCAN_PROGRESS_TS_END: { + /*pT->mCurEv.mLockedStatus = 0; + pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; + pT->sendEvent(pT->mCurEv);*/ + } + break; - case AM_SCAN_PROGRESS_PAT_DONE: /*{ + case AM_SCAN_PROGRESS_PAT_DONE: /*{ if(pT->mCurEv.mTotalChannelCount == 1) { pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; pT->sendEvent(pT->mCurEv); } }*/ - break; - case AM_SCAN_PROGRESS_SDT_DONE: /*{ + break; + case AM_SCAN_PROGRESS_SDT_DONE: /*{ dvbpsi_sdt_t *sdts = (dvbpsi_sdt_t *)evt->data; dvbpsi_sdt_t *sdt; @@ -1428,8 +1428,8 @@ void CTvScanner::tv_scan_evt_callback(long dev_no, int event_type, void *param, pT->sendEvent(pT->mCurEv); } }*/ - break; - case AM_SCAN_PROGRESS_CAT_DONE: /*{ + break; + case AM_SCAN_PROGRESS_CAT_DONE: /*{ dvbpsi_cat_t *cat = (dvbpsi_cat_t *)evt->data; if (pT->mCurEv.mTotalChannelCount == 1) { pT->mCurEv.mPercent += 25; @@ -1441,8 +1441,8 @@ void CTvScanner::tv_scan_evt_callback(long dev_no, int event_type, void *param, pT->sendEvent(pT->mCurEv); } }*/ - break; - case AM_SCAN_PROGRESS_PMT_DONE: /*{ + break; + case AM_SCAN_PROGRESS_PMT_DONE: /*{ dvbpsi_pmt_t *pmt = (dvbpsi_pmt_t *)evt->data; if (pT->mCurEv.mTotalChannelCount == 1) { pT->mCurEv.mPercent += 25; @@ -1453,192 +1453,192 @@ void CTvScanner::tv_scan_evt_callback(long dev_no, int event_type, void *param, pT->sendEvent(pT->mCurEv); } }*/ - break; - case AM_SCAN_PROGRESS_MGT_DONE: { - mgt_section_info_t *mgt = (mgt_section_info_t *)evt->data; + break; + case AM_SCAN_PROGRESS_MGT_DONE: { + mgt_section_info_t *mgt = (mgt_section_info_t *)evt->data; - if (pT->mCurEv.mTotalChannelCount == 1) { - pT->mCurEv.mPercent += 10; - if (pT->mCurEv.mPercent >= 100) - pT->mCurEv.mPercent = 99; + if (pT->mCurEv.mTotalChannelCount == 1) { + pT->mCurEv.mPercent += 10; + if (pT->mCurEv.mPercent >= 100) + pT->mCurEv.mPercent = 99; - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; + pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; - pT->sendEvent(pT->mCurEv); - } - } - break; - case AM_SCAN_PROGRESS_VCT_DONE: { - /*ATSC TVCT*/ - if (pT->mCurEv.mTotalChannelCount == 1) { - pT->mCurEv.mPercent += 30; - if (pT->mCurEv.mPercent >= 100) - pT->mCurEv.mPercent = 99; - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; - - pT->sendEvent(pT->mCurEv); - } - } - break; - case AM_SCAN_PROGRESS_NEW_PROGRAM: { - /* Notify the new searched programs */ - AM_SCAN_ProgramProgress_t *pp = (AM_SCAN_ProgramProgress_t *)evt->data; - if (pp != NULL) { - pT->mCurEv.mprogramType = pp->service_type; - snprintf(pT->mCurEv.mProgramName, sizeof(pT->mCurEv.mProgramName), "%s", pp->name); + pT->sendEvent(pT->mCurEv); + } + } + break; + case AM_SCAN_PROGRESS_VCT_DONE: { + /*ATSC TVCT*/ + if (pT->mCurEv.mTotalChannelCount == 1) { + pT->mCurEv.mPercent += 30; + if (pT->mCurEv.mPercent >= 100) + pT->mCurEv.mPercent = 99; + pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; + + pT->sendEvent(pT->mCurEv); + } + } + break; + case AM_SCAN_PROGRESS_NEW_PROGRAM: { + /* Notify the new searched programs */ + AM_SCAN_ProgramProgress_t *pp = (AM_SCAN_ProgramProgress_t *)evt->data; + if (pp != NULL) { + pT->mCurEv.mprogramType = pp->service_type; + snprintf(pT->mCurEv.mProgramName, sizeof(pT->mCurEv.mProgramName), "%s", pp->name); - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; + pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; - pT->sendEvent(pT->mCurEv); - } - } - break; - case AM_SCAN_PROGRESS_BLIND_SCAN: { - AM_SCAN_DTVBlindScanProgress_t *bs_prog = (AM_SCAN_DTVBlindScanProgress_t *)evt->data; + pT->sendEvent(pT->mCurEv); + } + } + break; + case AM_SCAN_PROGRESS_BLIND_SCAN: { + AM_SCAN_DTVBlindScanProgress_t *bs_prog = (AM_SCAN_DTVBlindScanProgress_t *)evt->data; - if (bs_prog) { - pT->mCurEv.mPercent = bs_prog->progress; + if (bs_prog) { + pT->mCurEv.mPercent = bs_prog->progress; - snprintf(pT->mCurEv.mMSG, sizeof(pT->mCurEv.mMSG), "%s/%s %dMHz", - bs_prog->polar == AM_FEND_POLARISATION_H ? "H" : "V", - bs_prog->lo == AM_FEND_LOCALOSCILLATORFREQ_L ? "L-LOF" : "H-LOF", - bs_prog->freq / 1000); + snprintf(pT->mCurEv.mMSG, sizeof(pT->mCurEv.mMSG), "%s/%s %dMHz", + bs_prog->polar == AM_FEND_POLARISATION_H ? "H" : "V", + bs_prog->lo == AM_FEND_LOCALOSCILLATORFREQ_L ? "L-LOF" : "H-LOF", + bs_prog->freq / 1000); - pT->mCurEv.mType = ScannerEvent::EVENT_BLINDSCAN_PROGRESS; + pT->mCurEv.mType = ScannerEvent::EVENT_BLINDSCAN_PROGRESS; - pT->sendEvent(pT->mCurEv); + pT->sendEvent(pT->mCurEv); - if (bs_prog->new_tp_cnt > 0) { - int i = 0; - for (i = 0; i < bs_prog->new_tp_cnt; i++) { - LOGD("====New tp: %dkS/s %d====", bs_prog->new_tps[i].frequency, - bs_prog->new_tps[i].u.qpsk.symbol_rate); + if (bs_prog->new_tp_cnt > 0) { + int i = 0; + for (i = 0; i < bs_prog->new_tp_cnt; i++) { + LOGD("====New tp: %dkS/s %d====", bs_prog->new_tps[i].frequency, + bs_prog->new_tps[i].u.qpsk.symbol_rate); - pT->mCurEv.mFrequency = bs_prog->new_tps[i].frequency; - pT->mCurEv.mSymbolRate = bs_prog->new_tps[i].u.qpsk.symbol_rate; - pT->mCurEv.mSat_polarisation = bs_prog->polar; + pT->mCurEv.mFrequency = bs_prog->new_tps[i].frequency; + pT->mCurEv.mSymbolRate = bs_prog->new_tps[i].u.qpsk.symbol_rate; + pT->mCurEv.mSat_polarisation = bs_prog->polar; - pT->mCurEv.mType = ScannerEvent::EVENT_BLINDSCAN_NEWCHANNEL; + pT->mCurEv.mType = ScannerEvent::EVENT_BLINDSCAN_NEWCHANNEL; - pT->sendEvent(pT->mCurEv); - } - } - if (bs_prog->progress >= 100) { + pT->sendEvent(pT->mCurEv); + } + } + if (bs_prog->progress >= 100) { - pT->mCurEv.mType = ScannerEvent::EVENT_BLINDSCAN_END; + pT->mCurEv.mType = ScannerEvent::EVENT_BLINDSCAN_END; - pT->sendEvent(pT->mCurEv); + pT->sendEvent(pT->mCurEv); - pT->mCurEv.mPercent = 0; - } - } - } - break; - case AM_SCAN_PROGRESS_STORE_BEGIN: { - pT->mCurEv.mType = ScannerEvent::EVENT_STORE_BEGIN; - pT->mCurEv.mLockedStatus = 0; - pT->sendEvent(pT->mCurEv); - } - break; - case AM_SCAN_PROGRESS_STORE_END: { - pT->mCurEv.mLockedStatus = 0; - pT->mCurEv.mType = ScannerEvent::EVENT_STORE_END; - pT->sendEvent(pT->mCurEv); - } - break; - case AM_SCAN_PROGRESS_SCAN_END: { - pT->mCurEv.mPercent = 100; - pT->mCurEv.mLockedStatus = 0; - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_END; - pT->sendEvent(pT->mCurEv); - } - break; - case AM_SCAN_PROGRESS_SCAN_EXIT: { - pT->mCurEv.mLockedStatus = 0; - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_EXIT; - pT->sendEvent(pT->mCurEv); - } - break; - case AM_SCAN_PROGRESS_ATV_TUNING: { - pT->mCurEv.mFrequency = (int)evt->data; - pT->mCurEv.mLockedStatus = 0; - tmpFreq = (pT->mCurEv.mFrequency - pT->mCurScanStartFreq) / 1000000; - pT->mCurEv.mPercent = tmpFreq * 100UL / ((pT->mCurScanEndFreq - pT->mCurScanStartFreq) / 1000000); - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; - pT->sendEvent(pT->mCurEv); - } - break; + pT->mCurEv.mPercent = 0; + } + } + } + break; + case AM_SCAN_PROGRESS_STORE_BEGIN: { + pT->mCurEv.mType = ScannerEvent::EVENT_STORE_BEGIN; + pT->mCurEv.mLockedStatus = 0; + pT->sendEvent(pT->mCurEv); + } + break; + case AM_SCAN_PROGRESS_STORE_END: { + pT->mCurEv.mLockedStatus = 0; + pT->mCurEv.mType = ScannerEvent::EVENT_STORE_END; + pT->sendEvent(pT->mCurEv); + } + break; + case AM_SCAN_PROGRESS_SCAN_END: { + pT->mCurEv.mPercent = 100; + pT->mCurEv.mLockedStatus = 0; + pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_END; + pT->sendEvent(pT->mCurEv); + } + break; + case AM_SCAN_PROGRESS_SCAN_EXIT: { + pT->mCurEv.mLockedStatus = 0; + pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_EXIT; + pT->sendEvent(pT->mCurEv); + } + break; + case AM_SCAN_PROGRESS_ATV_TUNING: { + pT->mCurEv.mFrequency = (int)evt->data; + pT->mCurEv.mLockedStatus = 0; + tmpFreq = (pT->mCurEv.mFrequency - pT->mCurScanStartFreq) / 1000000; + pT->mCurEv.mPercent = tmpFreq * 100UL / ((pT->mCurScanEndFreq - pT->mCurScanStartFreq) / 1000000); + pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; + pT->sendEvent(pT->mCurEv); + } + break; - default: - break; - } - } else if (event_type == AM_SCAN_EVT_SIGNAL) { - AM_SCAN_DTVSignalInfo_t *evt = (AM_SCAN_DTVSignalInfo_t *)param; - //pT->mCurEv.mprogramType = 0xff; - pT->mCurEv.mFrequency = (int)evt->frequency; - pT->mCurEv.mLockedStatus = (evt->locked ? 1 : 0); - - if (pT->mCurEv.mMode == FE_ANALOG && evt->locked)//trick here for atv new prog - pT->mCurEv.mLockedStatus |= 0x10; - - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; - if (pT->mCurEv.mMode != FE_ANALOG && evt->locked) { - pT->mCurEv.mStrength = evt->strength; - pT->mCurEv.mSnr = evt->snr; - } else { - pT->mCurEv.mStrength = 0; - pT->mCurEv.mSnr = 0; - } + default: + break; + } + } else if (event_type == AM_SCAN_EVT_SIGNAL) { + AM_SCAN_DTVSignalInfo_t *evt = (AM_SCAN_DTVSignalInfo_t *)param; + //pT->mCurEv.mprogramType = 0xff; + pT->mCurEv.mFrequency = (int)evt->frequency; + pT->mCurEv.mLockedStatus = (evt->locked ? 1 : 0); + + if (pT->mCurEv.mMode == FE_ANALOG && evt->locked)//trick here for atv new prog + pT->mCurEv.mLockedStatus |= 0x10; + + pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; + if (pT->mCurEv.mMode != FE_ANALOG && evt->locked) { + pT->mCurEv.mStrength = evt->strength; + pT->mCurEv.mSnr = evt->snr; + } else { + pT->mCurEv.mStrength = 0; + pT->mCurEv.mSnr = 0; + } - //if (pT->mCurEv.mMode == FE_ANALOG) - pT->sendEvent(pT->mCurEv); + //if (pT->mCurEv.mMode == FE_ANALOG) + pT->sendEvent(pT->mCurEv); - pT->mCurEv.mLockedStatus &= ~0x10; - } + pT->mCurEv.mLockedStatus &= ~0x10; + } } void CTvScanner::tv_scan_reconnect_dmx_to_fend(int dmx_no, int fend_no) { - AM_DMX_Source_t src; + AM_DMX_Source_t src; - if (AM_FEND_GetTSSource(fend_no, &src) == AM_SUCCESS) { - LOGD("Set demux%d source to %d", dmx_no, src); - AM_DMX_SetSource(dmx_no, src); - } else { - LOGD("Cannot get frontend ts source!!"); - } + if (AM_FEND_GetTSSource(fend_no, &src) == AM_SUCCESS) { + LOGD("Set demux%d source to %d", dmx_no, src); + AM_DMX_SetSource(dmx_no, src); + } else { + LOGD("Cannot get frontend ts source!!"); + } } int CTvScanner::getAtscChannelPara(int attennaType, Vector > &vcp) { - switch (attennaType) { //region name should be remove to config file and read here - case 1: - CTvRegion::getChannelListByName("U.S.,ATSC Air", vcp); - break; - case 2: - CTvRegion::getChannelListByName("U.S.,ATSC Cable Standard", vcp); - break; - case 3: - CTvRegion::getChannelListByName("U.S.,ATSC Cable IRC", vcp); - break; - case 4: - CTvRegion::getChannelListByName("U.S.,ATSC Cable HRC", vcp); - break; - default: - return -1; - } + switch (attennaType) { //region name should be remove to config file and read here + case 1: + CTvRegion::getChannelListByName("U.S.,ATSC Air", vcp); + break; + case 2: + CTvRegion::getChannelListByName("U.S.,ATSC Cable Standard", vcp); + break; + case 3: + CTvRegion::getChannelListByName("U.S.,ATSC Cable IRC", vcp); + break; + case 4: + CTvRegion::getChannelListByName("U.S.,ATSC Cable HRC", vcp); + break; + default: + return -1; + } - return 0; + return 0; } void CTvScanner::sendEvent(ScannerEvent &evt) { - if (mpObserver) { - if (evt.mType != ScannerEvent::EVENT_DTV_PROG_DATA) { - evt.mAcnt = 0;//avoid invalid count confused the array. - evt.mScnt = 0; - } - mpObserver->onEvent(evt); - } + if (mpObserver) { + if (evt.mType != ScannerEvent::EVENT_DTV_PROG_DATA) { + evt.mAcnt = 0;//avoid invalid count confused the array. + evt.mScnt = 0; + } + mpObserver->onEvent(evt); + } } diff --git a/tvapi/libtv/tv/CTvScanner.h b/tvapi/libtv/tv/CTvScanner.h index 8176ad1..d93a60e 100644 --- a/tvapi/libtv/tv/CTvScanner.h +++ b/tvapi/libtv/tv/CTvScanner.h @@ -21,244 +21,244 @@ #define _CTVSCANNER_H class CTvScanner { public: - /** ATSC Attenna type */ - static const int AM_ATSC_ATTENNA_TYPE_AIR = 1; - static const int AM_ATSC_ATTENNA_TYPE_CABLE_STD = 2; - static const int AM_ATSC_ATTENNA_TYPE_CABLE_IRC = 3; - static const int AM_ATSC_ATTENNA_TYPE_CABLE_HRC = 4; - CTvScanner(CTvin *pTvin); - ~CTvScanner(); - void setGlobalScanerObject(CTvScanner *); - int startScan(); - int stopScan(); - int ATVManualScan(int min_freq, int max_freq, int std, int store_Type = 0, int channel_num = 0); - int autoAtvScan(int min_freq, int max_freq, int std, int search_type); - int autoDtmbScan(); - int manualDtmbScan(int beginFreq, int endFreq, int modulation = -1); - int autoAtscScan(int attennaType, int std); - int manualDtmbScan(int freq); - int manualAtscScan(int freq, int attennaType, int std); - int autoTvScan(); - int unsubscribeEvent(); + /** ATSC Attenna type */ + static const int AM_ATSC_ATTENNA_TYPE_AIR = 1; + static const int AM_ATSC_ATTENNA_TYPE_CABLE_STD = 2; + static const int AM_ATSC_ATTENNA_TYPE_CABLE_IRC = 3; + static const int AM_ATSC_ATTENNA_TYPE_CABLE_HRC = 4; + CTvScanner(CTvin *pTvin); + ~CTvScanner(); + void setGlobalScanerObject(CTvScanner *); + int startScan(); + int stopScan(); + int ATVManualScan(int min_freq, int max_freq, int std, int store_Type = 0, int channel_num = 0); + int autoAtvScan(int min_freq, int max_freq, int std, int search_type); + int autoDtmbScan(); + int manualDtmbScan(int beginFreq, int endFreq, int modulation = -1); + int autoAtscScan(int attennaType, int std); + int manualDtmbScan(int freq); + int manualAtscScan(int freq, int attennaType, int std); + int autoTvScan(); + int unsubscribeEvent(); - class ScannerEvent: public CTvEv { - public: - static const int EVENT_SCAN_PROGRESS = 0; - static const int EVENT_STORE_BEGIN = 1; - static const int EVENT_STORE_END = 2; - static const int EVENT_SCAN_END = 3; - static const int EVENT_BLINDSCAN_PROGRESS = 4; - static const int EVENT_BLINDSCAN_NEWCHANNEL = 5; - static const int EVENT_BLINDSCAN_END = 6; - static const int EVENT_ATV_PROG_DATA = 7; - static const int EVENT_DTV_PROG_DATA = 8; - static const int EVENT_SCAN_EXIT = 9; + class ScannerEvent: public CTvEv { + public: + static const int EVENT_SCAN_PROGRESS = 0; + static const int EVENT_STORE_BEGIN = 1; + static const int EVENT_STORE_END = 2; + static const int EVENT_SCAN_END = 3; + static const int EVENT_BLINDSCAN_PROGRESS = 4; + static const int EVENT_BLINDSCAN_NEWCHANNEL = 5; + static const int EVENT_BLINDSCAN_END = 6; + static const int EVENT_ATV_PROG_DATA = 7; + static const int EVENT_DTV_PROG_DATA = 8; + static const int EVENT_SCAN_EXIT = 9; - ScannerEvent(): CTvEv(CTvEv::TV_EVENT_SCANNER) - { - clear(); - } - void clear() - { - mType = -1; - mProgramName[0] = '\0'; - mMSG[0] = '\0'; - mAcnt = 0; - mScnt = 0; - } - ~ScannerEvent() - { - } + ScannerEvent(): CTvEv(CTvEv::TV_EVENT_SCANNER) + { + clear(); + } + void clear() + { + mType = -1; + mProgramName[0] = '\0'; + mMSG[0] = '\0'; + mAcnt = 0; + mScnt = 0; + } + ~ScannerEvent() + { + } - //common - int mType; - int mPercent; - int mTotalChannelCount; - int mLockedStatus; - int mChannelNumber; - //CTvChannel mChannel; - int mMode; - int mFrequency; - int mSymbolRate; - int mModulation; - int mBandwidth; - int mOfdm_mode; + //common + int mType; + int mPercent; + int mTotalChannelCount; + int mLockedStatus; + int mChannelNumber; + //CTvChannel mChannel; + int mMode; + int mFrequency; + int mSymbolRate; + int mModulation; + int mBandwidth; + int mOfdm_mode; - int mAudio; - int mStandard; - int mSat_polarisation; - // - int mStrength; - int mSnr; - char mProgramName[1024]; - int mprogramType; - char mMSG[128]; - //for atv - int mVideoStd; - int mAudioStd; - int mIsAutoStd;//1 is true - int mAfcData; + int mAudio; + int mStandard; + int mSat_polarisation; + // + int mStrength; + int mSnr; + char mProgramName[1024]; + int mprogramType; + char mMSG[128]; + //for atv + int mVideoStd; + int mAudioStd; + int mIsAutoStd;//1 is true + int mAfcData; - //for DTV - int mTsId; - int mONetId; - int mServiceId; - int mVid; - int mVfmt; - int mAcnt; - int mAid[32]; - int mAfmt[32]; - char mAlang[32][10]; - int mAtype[32]; - int mPcr; + //for DTV + int mTsId; + int mONetId; + int mServiceId; + int mVid; + int mVfmt; + int mAcnt; + int mAid[32]; + int mAfmt[32]; + char mAlang[32][10]; + int mAtype[32]; + int mPcr; - int mScnt; - int mStype[32]; - int mSid[32]; - int mSstype[32]; - int mSid1[32]; - int mSid2[32]; - char mSlang[32][10]; + int mScnt; + int mStype[32]; + int mSid[32]; + int mSstype[32]; + int mSid1[32]; + int mSid2[32]; + char mSlang[32][10]; - // ScannerEvent(int type){ - // this->mType = type; - // } - }; + // ScannerEvent(int type){ + // this->mType = type; + // } + }; - class IObserver { - public: - IObserver() {}; - virtual ~IObserver() {}; - virtual void onEvent(const ScannerEvent &ev) = 0; - }; - //1 VS n - //int addObserver(IObserver* ob); - //int removeObserver(IObserver* ob); + class IObserver { + public: + IObserver() {}; + virtual ~IObserver() {}; + virtual void onEvent(const ScannerEvent &ev) = 0; + }; + //1 VS n + //int addObserver(IObserver* ob); + //int removeObserver(IObserver* ob); - //1 VS 1 - int setObserver(IObserver *ob) - { - mpObserver = ob; - return 0; - } + //1 VS 1 + int setObserver(IObserver *ob) + { + mpObserver = ob; + return 0; + } private: - static AM_Bool_t s_atv_cvbs_lock_check(void *); - AM_Bool_t atv_cvbs_lock_check(v4l2_std_id *colorStd); - static void tv_scan_evt_callback(long dev_no, int event_type, void *param, void *data); - static void am_scan_atv_store(AM_SCAN_Result_t *result); - void tv_scan_reconnect_dmx_to_fend(int dmx_no, int fend_no); - int getAtscChannelPara(int attennaType, Vector > &vcp); - void sendEvent(ScannerEvent &evt); - // - AM_SCAN_Handle_t mScanHandle; - volatile bool mbScanStart; + static AM_Bool_t s_atv_cvbs_lock_check(void *); + AM_Bool_t atv_cvbs_lock_check(v4l2_std_id *colorStd); + static void tv_scan_evt_callback(long dev_no, int event_type, void *param, void *data); + static void am_scan_atv_store(AM_SCAN_Result_t *result); + void tv_scan_reconnect_dmx_to_fend(int dmx_no, int fend_no); + int getAtscChannelPara(int attennaType, Vector > &vcp); + void sendEvent(ScannerEvent &evt); + // + AM_SCAN_Handle_t mScanHandle; + volatile bool mbScanStart; - //scan para info - /** General TV Scan Mode */ - static const int TV_MODE_ATV = 0; // Only search ATV - static const int TV_MODE_DTV = 1; // Only search DTV - static const int TV_MODE_ADTV = 2; // A/DTV will share a same frequency list, like ATSC - /** DTV scan mode */ - static const int DTV_MODE_AUTO = 1; - static const int DTV_MODE_MANUAL = 2; - static const int DTV_MODE_ALLBAND = 3; - static const int DTV_MODE_BLIND = 4; + //scan para info + /** General TV Scan Mode */ + static const int TV_MODE_ATV = 0; // Only search ATV + static const int TV_MODE_DTV = 1; // Only search DTV + static const int TV_MODE_ADTV = 2; // A/DTV will share a same frequency list, like ATSC + /** DTV scan mode */ + static const int DTV_MODE_AUTO = 1; + static const int DTV_MODE_MANUAL = 2; + static const int DTV_MODE_ALLBAND = 3; + static const int DTV_MODE_BLIND = 4; - /** DTV scan options, DONOT channge */ - static const int DTV_OPTION_UNICABLE = 0x10; //Satellite unicable mode - static const int DTV_OPTION_FTA = 0x20; //Only store free programs - static const int DTV_OPTION_NO_TV = 0x40; //Only store tv programs - static const int DTV_OPTION_NO_RADIO = 0x80; //Only store radio programs + /** DTV scan options, DONOT channge */ + static const int DTV_OPTION_UNICABLE = 0x10; //Satellite unicable mode + static const int DTV_OPTION_FTA = 0x20; //Only store free programs + static const int DTV_OPTION_NO_TV = 0x40; //Only store tv programs + static const int DTV_OPTION_NO_RADIO = 0x80; //Only store radio programs - /** ATV scan mode */ - static const int ATV_MODE_AUTO = 1; - static const int ATV_MODE_MANUAL = 2; + /** ATV scan mode */ + static const int ATV_MODE_AUTO = 1; + static const int ATV_MODE_MANUAL = 2; - // - /*subtitle*/ - static const int TYPE_DVB_SUBTITLE = 1; - static const int TYPE_DTV_TELETEXT = 2; - static const int TYPE_ATV_TELETEXT = 3; - static const int TYPE_DTV_CC = 4; - static const int TYPE_ATV_CC = 5; + // + /*subtitle*/ + static const int TYPE_DVB_SUBTITLE = 1; + static const int TYPE_DTV_TELETEXT = 2; + static const int TYPE_ATV_TELETEXT = 3; + static const int TYPE_DTV_CC = 4; + static const int TYPE_ATV_CC = 5; #define AM_SCAN_MAX_SRV_NAME_LANG 4 - typedef struct { - uint8_t srv_type, eit_sche, eit_pf, rs, free_ca, access_controlled, hidden, hide_guide, plp_id; - int vid, aid1, aid2, srv_id, pmt_pid, pcr_pid; - int vfmt, chan_num, afmt_tmp, vfmt_tmp, scrambled_flag, major_chan_num, minor_chan_num, source_id; - int src, srv_dbid, satpara_dbid; - char name[(AM_DB_MAX_SRV_NAME_LEN + 4)*AM_SCAN_MAX_SRV_NAME_LANG + 1]; - char *default_text_lang; - char *text_langs; - AM_SI_AudioInfo_t aud_info; - AM_SI_SubtitleInfo_t sub_info; - AM_SI_TeletextInfo_t ttx_info; - int sdt_version; - } SCAN_ServiceInfo_t; + typedef struct { + uint8_t srv_type, eit_sche, eit_pf, rs, free_ca, access_controlled, hidden, hide_guide, plp_id; + int vid, aid1, aid2, srv_id, pmt_pid, pcr_pid; + int vfmt, chan_num, afmt_tmp, vfmt_tmp, scrambled_flag, major_chan_num, minor_chan_num, source_id; + int src, srv_dbid, satpara_dbid; + char name[(AM_DB_MAX_SRV_NAME_LEN + 4)*AM_SCAN_MAX_SRV_NAME_LANG + 1]; + char *default_text_lang; + char *text_langs; + AM_SI_AudioInfo_t aud_info; + AM_SI_SubtitleInfo_t sub_info; + AM_SI_TeletextInfo_t ttx_info; + int sdt_version; + } SCAN_ServiceInfo_t; - static dvbpsi_pat_t *get_valid_pats(AM_SCAN_TS_t *ts); - static void scan_process_ts_info(AM_SCAN_Result_t *result, AM_SCAN_TS_t *ts, ScannerEvent *evt); - static void scan_init_service_info(SCAN_ServiceInfo_t *srv_info); - static int get_pmt_pid(dvbpsi_pat_t *pats, int program_number); - static void scan_extract_ca_scrambled_flag(dvbpsi_descriptor_t *p_first_descriptor, int *flag); - static void scan_extract_srv_info_from_sdt(AM_SCAN_Result_t *result, dvbpsi_sdt_t *sdts, SCAN_ServiceInfo_t *srv_info); - static void scan_update_service_info(AM_SCAN_Result_t *result, SCAN_ServiceInfo_t *srv_info); - static void scan_store_dvb_ts_evt_service(SCAN_ServiceInfo_t *srv); - static void scan_store_dvb_ts(AM_SCAN_Result_t *result, AM_SCAN_TS_t *ts); - static void dtv_scan_store(AM_SCAN_Result_t *result); + static dvbpsi_pat_t *get_valid_pats(AM_SCAN_TS_t *ts); + static void scan_process_ts_info(AM_SCAN_Result_t *result, AM_SCAN_TS_t *ts, ScannerEvent *evt); + static void scan_init_service_info(SCAN_ServiceInfo_t *srv_info); + static int get_pmt_pid(dvbpsi_pat_t *pats, int program_number); + static void scan_extract_ca_scrambled_flag(dvbpsi_descriptor_t *p_first_descriptor, int *flag); + static void scan_extract_srv_info_from_sdt(AM_SCAN_Result_t *result, dvbpsi_sdt_t *sdts, SCAN_ServiceInfo_t *srv_info); + static void scan_update_service_info(AM_SCAN_Result_t *result, SCAN_ServiceInfo_t *srv_info); + static void scan_store_dvb_ts_evt_service(SCAN_ServiceInfo_t *srv); + static void scan_store_dvb_ts(AM_SCAN_Result_t *result, AM_SCAN_TS_t *ts); + static void dtv_scan_store(AM_SCAN_Result_t *result); private: - // - IObserver *mpObserver; - // - CTvin *mpTvin; - int mMode; - int mFendID; - /** DTV parameters */ - int mTvMode; - int mTvOptions; - int mSat_id; - int mSource; + // + IObserver *mpObserver; + // + CTvin *mpTvin; + int mMode; + int mFendID; + /** DTV parameters */ + int mTvMode; + int mTvOptions; + int mSat_id; + int mSource; - //showboz - //TVSatelliteParams tv_satparams; - int mTsSourceID; - CTvChannel mStartChannel; - Vector mvChooseListChannels; - /** ATV parameters */ - int mAtvMode; - int mStartFreq; - int mDirection; - int mChannelID; + //showboz + //TVSatelliteParams tv_satparams; + int mTsSourceID; + CTvChannel mStartChannel; + Vector mvChooseListChannels; + /** ATV parameters */ + int mAtvMode; + int mStartFreq; + int mDirection; + int mChannelID; - //extern for scanner - //int channelID; //can be used for manual scan - /** Atv set */ - int mMinFreq; - int mMaxFreq; - long long mCurScanStartFreq; - long long mCurScanEndFreq; - int tunerStd; - /** Tv set */ - int demuxID;//default 0 - String8 defaultTextLang; - String8 orderedTextLangs; - //showboz - //Vector ChannelList;//VS mvChooseListChannels + //extern for scanner + //int channelID; //can be used for manual scan + /** Atv set */ + int mMinFreq; + int mMaxFreq; + long long mCurScanStartFreq; + long long mCurScanEndFreq; + int tunerStd; + /** Tv set */ + int demuxID;//default 0 + String8 defaultTextLang; + String8 orderedTextLangs; + //showboz + //Vector ChannelList;//VS mvChooseListChannels - /** Dtv-Sx set Unicable settings*/ - int user_band; - int ub_freq;//!< kHz + /** Dtv-Sx set Unicable settings*/ + int user_band; + int ub_freq;//!< kHz - ScannerEvent mCurEv; - static CTvScanner *m_s_Scanner; + ScannerEvent mCurEv; + static CTvScanner *m_s_Scanner; }; #endif //CTVSCANNER_H diff --git a/tvapi/libtv/tv/CTvScreenCapture.cpp b/tvapi/libtv/tv/CTvScreenCapture.cpp index cec4e70..396c1d5 100644 --- a/tvapi/libtv/tv/CTvScreenCapture.cpp +++ b/tvapi/libtv/tv/CTvScreenCapture.cpp @@ -36,714 +36,714 @@ using namespace android; int CTvScreenCapture::xioctl(int fd, int request, void *arg) { - /* int r = 0; + /* int r = 0; - do { - r = ioctl(fd, request, arg); - } while (-1 == r && EINTR == errno); + do { + r = ioctl(fd, request, arg); + } while (-1 == r && EINTR == errno); - return r;*/ - return 0; + return r;*/ + return 0; } int CTvScreenCapture::OpenCamera(struct camera *pCameraDev) { - /* - int iOutRet = 0, iRet; - struct stat st; - - do { - if (-1 == stat(pCameraDev->device_name, &st)) { - LOGD( "Cannot identify '%s'\n", pCameraDev->device_name); - iOutRet = FAILED; - break; - } - - if (!S_ISCHR(st.st_mode)) { - LOGD("%s is no device\n", pCameraDev->device_name); - iOutRet = FAILED; - break; - } - - pCameraDev->fd = open(pCameraDev->device_name, O_RDWR | O_NONBLOCK, 0); // O_NONBLOCK - if (SUCCEED > pCameraDev->fd) { - LOGD("Cannot open '%s'\n", pCameraDev->device_name); - iOutRet = FAILED; - break; - } - } while (FALSE); - - return iOutRet;*/ - return 0; + /* + int iOutRet = 0, iRet; + struct stat st; + + do { + if (-1 == stat(pCameraDev->device_name, &st)) { + LOGD( "Cannot identify '%s'\n", pCameraDev->device_name); + iOutRet = FAILED; + break; + } + + if (!S_ISCHR(st.st_mode)) { + LOGD("%s is no device\n", pCameraDev->device_name); + iOutRet = FAILED; + break; + } + + pCameraDev->fd = open(pCameraDev->device_name, O_RDWR | O_NONBLOCK, 0); // O_NONBLOCK + if (SUCCEED > pCameraDev->fd) { + LOGD("Cannot open '%s'\n", pCameraDev->device_name); + iOutRet = FAILED; + break; + } + } while (FALSE); + + return iOutRet;*/ + return 0; } int CTvScreenCapture::InitVCap(sp Mem) { - /* int iOutRet = FAILED; + /* int iOutRet = FAILED; - do { - m_pMem = Mem; - m_pData = (char *)m_pMem->pointer(); - LOGD("VVVVVVVVVVVVVVVVVVVVVVVVVVVVV %p\n", m_pData); - //default - } while (FALSE); + do { + m_pMem = Mem; + m_pData = (char *)m_pMem->pointer(); + LOGD("VVVVVVVVVVVVVVVVVVVVVVVVVVVVV %p\n", m_pData); + //default + } while (FALSE); - return iOutRet;*/ - return 0; + return iOutRet;*/ + return 0; } int CTvScreenCapture::InitMmap(struct camera *cam) { - /* int iOutRet = SUCCEED, iRet; - struct v4l2_requestbuffers req; - - do { - CLEAR(req); - - req.count = 4; - req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - req.memory = V4L2_MEMORY_MMAP; - - iRet = xioctl(cam->fd, VIDIOC_REQBUFS, &req); - if (FAILED == iRet) { - if (EINVAL == errno) { - LOGD("VIDIOC_REQBUFS %s does not support memory mapping\n", cam->device_name); - } - iOutRet = iRet; - break; - } - - if (req.count < 2) { - LOGD("Insufficient buffer memory on %s\n", cam->device_name); - iOutRet = FAILED; - break; - } - - cam->buffers = (struct buffer *)calloc(req.count, sizeof(*(cam->buffers))); - if (!cam->buffers) { - LOGD("Out of memory\n"); - iOutRet = FAILED; - break; - } - - for (m_capNumBuffers = 0; m_capNumBuffers < req.count; ++m_capNumBuffers) { - struct v4l2_buffer buf; - - CLEAR(buf); - - buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - buf.memory = V4L2_MEMORY_MMAP; - buf.index = m_capNumBuffers; - - if (FAILED == xioctl(cam->fd, VIDIOC_QUERYBUF, &buf)) { - LOGD("VIDIOC_QUERYBUF ERROR\n"); - iOutRet = FAILED; - goto IS_ERROR; - } - - cam->buffers[m_capNumBuffers].length = buf.length; - cam->buffers[m_capNumBuffers].start = mmap(NULL \, - buf.length, PROT_READ | PROT_WRITE, - MAP_SHARED, cam->fd, buf.m.offset); - - if (MAP_FAILED == cam->buffers[m_capNumBuffers].start) { - iOutRet = FAILED; - break; - } - - - } - - LOGD("END m_capNumBuffers : %d\n", m_capNumBuffers); - } while (FALSE); - IS_ERROR: - return iOutRet;*/ - return 0; + /* int iOutRet = SUCCEED, iRet; + struct v4l2_requestbuffers req; + + do { + CLEAR(req); + + req.count = 4; + req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + req.memory = V4L2_MEMORY_MMAP; + + iRet = xioctl(cam->fd, VIDIOC_REQBUFS, &req); + if (FAILED == iRet) { + if (EINVAL == errno) { + LOGD("VIDIOC_REQBUFS %s does not support memory mapping\n", cam->device_name); + } + iOutRet = iRet; + break; + } + + if (req.count < 2) { + LOGD("Insufficient buffer memory on %s\n", cam->device_name); + iOutRet = FAILED; + break; + } + + cam->buffers = (struct buffer *)calloc(req.count, sizeof(*(cam->buffers))); + if (!cam->buffers) { + LOGD("Out of memory\n"); + iOutRet = FAILED; + break; + } + + for (m_capNumBuffers = 0; m_capNumBuffers < req.count; ++m_capNumBuffers) { + struct v4l2_buffer buf; + + CLEAR(buf); + + buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + buf.memory = V4L2_MEMORY_MMAP; + buf.index = m_capNumBuffers; + + if (FAILED == xioctl(cam->fd, VIDIOC_QUERYBUF, &buf)) { + LOGD("VIDIOC_QUERYBUF ERROR\n"); + iOutRet = FAILED; + goto IS_ERROR; + } + + cam->buffers[m_capNumBuffers].length = buf.length; + cam->buffers[m_capNumBuffers].start = mmap(NULL \, + buf.length, PROT_READ | PROT_WRITE, + MAP_SHARED, cam->fd, buf.m.offset); + + if (MAP_FAILED == cam->buffers[m_capNumBuffers].start) { + iOutRet = FAILED; + break; + } + + + } + + LOGD("END m_capNumBuffers : %d\n", m_capNumBuffers); + } while (FALSE); + IS_ERROR: + return iOutRet;*/ + return 0; } int CTvScreenCapture::InitCamera(struct camera *cam) { - /* - int iOutRet = SUCCEED, iRet; - struct v4l2_capability *cap = &(cam->v4l2_cap); - struct v4l2_cropcap *cropcap = &(cam->v4l2_cropcap); - struct v4l2_crop *crop = &(cam->crop); - struct v4l2_format *fmt = &(cam->v4l2_fmt); - unsigned int min; - - do { - iRet = xioctl(cam->fd, VIDIOC_QUERYCAP, cap); - if (FAILED == iRet) { - if (EINVAL == errno) { - LOGD("%s is no V4L2 device\n", cam->device_name); - } - iOutRet = iRet; - break; - } - - if (!(cap->capabilities & V4L2_CAP_VIDEO_CAPTURE)) { - LOGD("%s is no video capture device\n", cam->device_name); - iOutRet = FAILED; - break; - } - - if (!(cap->capabilities & V4L2_CAP_STREAMING)) { - LOGD("%s does not support streaming i/o\n", cam->device_name); - iOutRet = FAILED; - break; - } - - LOGD("VIDOOC_QUERYCAP camera driver is [%s] card is [%s] businfo is [%s] version is [%d]\n", cap->driver, - cap->card, cap->bus_info, cap->version); - - //* Select video input, video standard and tune here. - - CLEAR(*cropcap); - cropcap->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - - crop->c.width = cam->width; - crop->c.height = cam->height; - crop->c.left = 0; - crop->c.top = 0; - crop->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - - CLEAR(*fmt); - fmt->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - fmt->fmt.pix.width = cam->width; - fmt->fmt.pix.height = cam->height; - fmt->fmt.pix.pixelformat = V4L2_PIX_FMT_NV21; - fmt->fmt.pix.field = V4L2_FIELD_INTERLACED; - iRet = xioctl(cam->fd, VIDIOC_S_FMT, fmt); - if (FAILED == iRet) { - iOutRet = iRet; - LOGD("VIDIOC_S_FMT is ERROR\n"); - break; - } - - //* Note VIDIOC_S_FMT may change width and height. - //* Buggy driver paranoia. - min = fmt->fmt.pix.width * 2; - LOGD("bytesperline : %d w:h [%d %d]\n", fmt->fmt.pix.bytesperline, fmt->fmt.pix.width, fmt->fmt.pix.height); - if (fmt->fmt.pix.bytesperline < min) { - fmt->fmt.pix.bytesperline = min; - } - - min = fmt->fmt.pix.bytesperline * fmt->fmt.pix.height; - if (fmt->fmt.pix.sizeimage < min) { - fmt->fmt.pix.sizeimage = min; - } - - iRet = InitMmap(cam); - if (FAILED == iRet) { - LOGD("INIT MMAP FAILED\n"); - iOutRet = iRet; - break; - } - - } while (FALSE); - - return iOutRet; - */ - return 0; + /* + int iOutRet = SUCCEED, iRet; + struct v4l2_capability *cap = &(cam->v4l2_cap); + struct v4l2_cropcap *cropcap = &(cam->v4l2_cropcap); + struct v4l2_crop *crop = &(cam->crop); + struct v4l2_format *fmt = &(cam->v4l2_fmt); + unsigned int min; + + do { + iRet = xioctl(cam->fd, VIDIOC_QUERYCAP, cap); + if (FAILED == iRet) { + if (EINVAL == errno) { + LOGD("%s is no V4L2 device\n", cam->device_name); + } + iOutRet = iRet; + break; + } + + if (!(cap->capabilities & V4L2_CAP_VIDEO_CAPTURE)) { + LOGD("%s is no video capture device\n", cam->device_name); + iOutRet = FAILED; + break; + } + + if (!(cap->capabilities & V4L2_CAP_STREAMING)) { + LOGD("%s does not support streaming i/o\n", cam->device_name); + iOutRet = FAILED; + break; + } + + LOGD("VIDOOC_QUERYCAP camera driver is [%s] card is [%s] businfo is [%s] version is [%d]\n", cap->driver, + cap->card, cap->bus_info, cap->version); + + //* Select video input, video standard and tune here. + + CLEAR(*cropcap); + cropcap->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + + crop->c.width = cam->width; + crop->c.height = cam->height; + crop->c.left = 0; + crop->c.top = 0; + crop->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + + CLEAR(*fmt); + fmt->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + fmt->fmt.pix.width = cam->width; + fmt->fmt.pix.height = cam->height; + fmt->fmt.pix.pixelformat = V4L2_PIX_FMT_NV21; + fmt->fmt.pix.field = V4L2_FIELD_INTERLACED; + iRet = xioctl(cam->fd, VIDIOC_S_FMT, fmt); + if (FAILED == iRet) { + iOutRet = iRet; + LOGD("VIDIOC_S_FMT is ERROR\n"); + break; + } + + //* Note VIDIOC_S_FMT may change width and height. + //* Buggy driver paranoia. + min = fmt->fmt.pix.width * 2; + LOGD("bytesperline : %d w:h [%d %d]\n", fmt->fmt.pix.bytesperline, fmt->fmt.pix.width, fmt->fmt.pix.height); + if (fmt->fmt.pix.bytesperline < min) { + fmt->fmt.pix.bytesperline = min; + } + + min = fmt->fmt.pix.bytesperline * fmt->fmt.pix.height; + if (fmt->fmt.pix.sizeimage < min) { + fmt->fmt.pix.sizeimage = min; + } + + iRet = InitMmap(cam); + if (FAILED == iRet) { + LOGD("INIT MMAP FAILED\n"); + iOutRet = iRet; + break; + } + + } while (FALSE); + + return iOutRet; + */ + return 0; } int CTvScreenCapture::SetVideoParameter(int width, int height, int frame) { - /* - int iOutRet = SUCCEED, iRet; - - do { - m_capV4l2Cam.device_name = "/dev/video11"; - m_capV4l2Cam.buffers = NULL; - m_capV4l2Cam.width = 1280; - m_capV4l2Cam.height = 720; - m_capV4l2Cam.display_depth = 24; //5; //* RGB24 - m_capV4l2Cam.frame_number = 1; //fps - iOutRet = OpenCamera(&m_capV4l2Cam) ; - if (SUCCEED != iOutRet) { - LOGD("ERROR:::Open Camera device failed\n"); - break; - } - m_capV4l2Cam.width = width; - m_capV4l2Cam.height = height; - m_capV4l2Cam.frame_number = frame; - - iRet = InitCamera(&m_capV4l2Cam); - if (SUCCEED != iRet) { - iOutRet = iRet; - break; - } - - } while (FALSE); - - return iOutRet ;*/ - return 0; + /* + int iOutRet = SUCCEED, iRet; + + do { + m_capV4l2Cam.device_name = "/dev/video11"; + m_capV4l2Cam.buffers = NULL; + m_capV4l2Cam.width = 1280; + m_capV4l2Cam.height = 720; + m_capV4l2Cam.display_depth = 24; //5; //* RGB24 + m_capV4l2Cam.frame_number = 1; //fps + iOutRet = OpenCamera(&m_capV4l2Cam) ; + if (SUCCEED != iOutRet) { + LOGD("ERROR:::Open Camera device failed\n"); + break; + } + m_capV4l2Cam.width = width; + m_capV4l2Cam.height = height; + m_capV4l2Cam.frame_number = frame; + + iRet = InitCamera(&m_capV4l2Cam); + if (SUCCEED != iRet) { + iOutRet = iRet; + break; + } + + } while (FALSE); + + return iOutRet ;*/ + return 0; } int CTvScreenCapture::StartCapturing(struct camera *cam) { - /* - unsigned int i; - int iOutRet = SUCCEED, iRet; - enum v4l2_buf_type type; - - do { - for (i = 0; i < m_capNumBuffers; ++i) { - struct v4l2_buffer buf; - - //CLEAR(buf); - - buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - buf.memory = V4L2_MEMORY_MMAP; - buf.index = i; - - iRet = xioctl(cam->fd, VIDIOC_QBUF, &buf); - if (FAILED == iRet) { - iOutRet = iRet; - goto IS_ERROR; - } - } - - - type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - iRet = xioctl(cam->fd, VIDIOC_STREAMON, &type); - if (FAILED == iRet) { - iOutRet = iRet; - break; - } - } while (FALSE); - IS_ERROR: - - return iOutRet;*/ - return 0; + /* + unsigned int i; + int iOutRet = SUCCEED, iRet; + enum v4l2_buf_type type; + + do { + for (i = 0; i < m_capNumBuffers; ++i) { + struct v4l2_buffer buf; + + //CLEAR(buf); + + buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + buf.memory = V4L2_MEMORY_MMAP; + buf.index = i; + + iRet = xioctl(cam->fd, VIDIOC_QBUF, &buf); + if (FAILED == iRet) { + iOutRet = iRet; + goto IS_ERROR; + } + } + + + type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + iRet = xioctl(cam->fd, VIDIOC_STREAMON, &type); + if (FAILED == iRet) { + iOutRet = iRet; + break; + } + } while (FALSE); + IS_ERROR: + + return iOutRet;*/ + return 0; } int CTvScreenCapture::VideoStart() { - /* - int iOutRet = SUCCEED, iRet; + /* + int iOutRet = SUCCEED, iRet; - do { - iRet = StartCapturing(&m_capV4l2Cam); - if (FAILED == iRet) { - iOutRet = iRet; - break; - } + do { + iRet = StartCapturing(&m_capV4l2Cam); + if (FAILED == iRet) { + iOutRet = iRet; + break; + } - } while (FALSE); + } while (FALSE); - return iOutRet;*/ - return 0; + return iOutRet;*/ + return 0; } void CTvScreenCapture::yuv_to_rgb32(unsigned char y, unsigned char u, unsigned char v, unsigned char *rgb) { - /* - register int r, g, b; - int rgb24; - - r = (1192 * (y - 16) + 1634 * (v - 128) ) >> 10; - g = (1192 * (y - 16) - 833 * (v - 128) - 400 * (u - 128) ) >> 10; - b = (1192 * (y - 16) + 2066 * (u - 128) ) >> 10; - - r = r > 255 ? 255 : r < 0 ? 0 : r; - g = g > 255 ? 255 : g < 0 ? 0 : g; - b = b > 255 ? 255 : b < 0 ? 0 : b; - - rgb24 = (int)((r << 16) | (g << 8) | b); - - //*ARGB - *rgb = (unsigned char)r; - rgb ++; - *rgb = (unsigned char)g; - rgb++; - *rgb = (unsigned char)b; - rgb++; - *rgb = 0xff;*/ - return; + /* + register int r, g, b; + int rgb24; + + r = (1192 * (y - 16) + 1634 * (v - 128) ) >> 10; + g = (1192 * (y - 16) - 833 * (v - 128) - 400 * (u - 128) ) >> 10; + b = (1192 * (y - 16) + 2066 * (u - 128) ) >> 10; + + r = r > 255 ? 255 : r < 0 ? 0 : r; + g = g > 255 ? 255 : g < 0 ? 0 : g; + b = b > 255 ? 255 : b < 0 ? 0 : b; + + rgb24 = (int)((r << 16) | (g << 8) | b); + + //*ARGB + *rgb = (unsigned char)r; + rgb ++; + *rgb = (unsigned char)g; + rgb++; + *rgb = (unsigned char)b; + rgb++; + *rgb = 0xff;*/ + return; } void CTvScreenCapture::nv21_to_rgb32(unsigned char *buf, unsigned char *rgb, int width, int height, int *len) { - /* - int x, y, z = 0; - int h, w; - int blocks; - unsigned char Y1, Y2, U, V; - - *len = 0; - - blocks = (width * height) * 2; - - for (h = 0, z = 0; h < height; h += 2) { - for (y = 0; y < width * 2; y += 2) { - - Y1 = buf[ h * width + y + 0]; - V = buf[ blocks / 2 + h * width / 2 + y % width + 0 ]; - Y2 = buf[ h * width + y + 1]; - U = buf[ blocks / 2 + h * width / 2 + y % width + 1 ]; - - yuv_to_rgb32(Y1, U, V, &rgb[z]); - yuv_to_rgb32(Y2, U, V, &rgb[z + 4]); - z += 8; - } - } - *len = z; - LOGD("z +++++++++++++++++++++++++++++++++ z %d\n", z);*/ - return; + /* + int x, y, z = 0; + int h, w; + int blocks; + unsigned char Y1, Y2, U, V; + + *len = 0; + + blocks = (width * height) * 2; + + for (h = 0, z = 0; h < height; h += 2) { + for (y = 0; y < width * 2; y += 2) { + + Y1 = buf[ h * width + y + 0]; + V = buf[ blocks / 2 + h * width / 2 + y % width + 0 ]; + Y2 = buf[ h * width + y + 1]; + U = buf[ blocks / 2 + h * width / 2 + y % width + 1 ]; + + yuv_to_rgb32(Y1, U, V, &rgb[z]); + yuv_to_rgb32(Y2, U, V, &rgb[z + 4]); + z += 8; + } + } + *len = z; + LOGD("z +++++++++++++++++++++++++++++++++ z %d\n", z);*/ + return; } int CTvScreenCapture::GetVideoData(int *length) { - /* - int iOutRet = SUCCEED, iRet; - - *length = 0; - while (true) { - fd_set fds; - struct timeval tv; - FD_ZERO(&fds); - FD_SET(m_capV4l2Cam.fd, &fds); - //* Timeout. - tv.tv_sec = 0; - tv.tv_usec = 30000; - iRet = select(m_capV4l2Cam.fd + 1, &fds, NULL, NULL, &tv); - if (FAILED == iRet) { - LOGD("select FAILED\n"); - if (EINTR == errno) { - LOGD("select FAILED Continue\n"); - continue; - } - - } - - if (0 == iRet) { - LOGD("select timeout\n"); - continue ; - } - - struct v4l2_buffer buf; - CLEAR(buf); - - buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - buf.memory = V4L2_MEMORY_MMAP; - iRet = xioctl(m_capV4l2Cam.fd, VIDIOC_DQBUF, &buf); - if (FAILED == iRet) { - if (errno == EAGAIN) { - LOGD("GetVideoData EAGAIN \n"); - } - - continue; - } - - LOGD("DDDDDDDDDDAAAAAAAAAAAAAAAAAAAATTTTTTTTTTTTTTAAAAAAAAAAAAAAAAAAAAAAAAAAAAA %d %d [width:%d] [height:%d]\n", buf.length, iRet, - m_capV4l2Cam.width, m_capV4l2Cam.height); - int tmpLen = 0; - nv21_to_rgb32((unsigned char *)m_capV4l2Cam.buffers[buf.index].start, (unsigned char *)m_pData, m_capV4l2Cam.width, m_capV4l2Cam.height, &tmpLen); - //memcpy(m_pData,m_capV4l2Cam.buffers[buf.index].start, buf.length +1); - *length = buf.length; - break; - - } - - if (*length > 0) { - mCapEvt.mFrameWide = m_capV4l2Cam.width; - mCapEvt.mFrameHeight = m_capV4l2Cam.height; - mCapEvt.mFrameNum = 1; - mCapEvt.mFrameSize = *length; - } else { - mCapEvt.mFrameWide = 0; - mCapEvt.mFrameHeight = 0; - mCapEvt.mFrameNum = 0; - mCapEvt.mFrameSize = 0; - } - - if (NULL != mpObserver) { - mpObserver->onTvEvent(mCapEvt); - } - - return iOutRet;*/ - return 0; + /* + int iOutRet = SUCCEED, iRet; + + *length = 0; + while (true) { + fd_set fds; + struct timeval tv; + FD_ZERO(&fds); + FD_SET(m_capV4l2Cam.fd, &fds); + //* Timeout. + tv.tv_sec = 0; + tv.tv_usec = 30000; + iRet = select(m_capV4l2Cam.fd + 1, &fds, NULL, NULL, &tv); + if (FAILED == iRet) { + LOGD("select FAILED\n"); + if (EINTR == errno) { + LOGD("select FAILED Continue\n"); + continue; + } + + } + + if (0 == iRet) { + LOGD("select timeout\n"); + continue ; + } + + struct v4l2_buffer buf; + CLEAR(buf); + + buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + buf.memory = V4L2_MEMORY_MMAP; + iRet = xioctl(m_capV4l2Cam.fd, VIDIOC_DQBUF, &buf); + if (FAILED == iRet) { + if (errno == EAGAIN) { + LOGD("GetVideoData EAGAIN \n"); + } + + continue; + } + + LOGD("DDDDDDDDDDAAAAAAAAAAAAAAAAAAAATTTTTTTTTTTTTTAAAAAAAAAAAAAAAAAAAAAAAAAAAAA %d %d [width:%d] [height:%d]\n", buf.length, iRet, + m_capV4l2Cam.width, m_capV4l2Cam.height); + int tmpLen = 0; + nv21_to_rgb32((unsigned char *)m_capV4l2Cam.buffers[buf.index].start, (unsigned char *)m_pData, m_capV4l2Cam.width, m_capV4l2Cam.height, &tmpLen); + //memcpy(m_pData,m_capV4l2Cam.buffers[buf.index].start, buf.length +1); + *length = buf.length; + break; + + } + + if (*length > 0) { + mCapEvt.mFrameWide = m_capV4l2Cam.width; + mCapEvt.mFrameHeight = m_capV4l2Cam.height; + mCapEvt.mFrameNum = 1; + mCapEvt.mFrameSize = *length; + } else { + mCapEvt.mFrameWide = 0; + mCapEvt.mFrameHeight = 0; + mCapEvt.mFrameNum = 0; + mCapEvt.mFrameSize = 0; + } + + if (NULL != mpObserver) { + mpObserver->onTvEvent(mCapEvt); + } + + return iOutRet;*/ + return 0; } int CTvScreenCapture::StopCapturing(struct camera *cam) { - /* - int iOutRet = SUCCEED, iRet; - enum v4l2_buf_type type; - - do { - type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - - iRet = xioctl(cam->fd, VIDIOC_STREAMOFF, &type); - if (FAILED == iRet) { - iOutRet = iRet; - break; - } - } while (FALSE); - - return iOutRet;*/ - return 0; + /* + int iOutRet = SUCCEED, iRet; + enum v4l2_buf_type type; + + do { + type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + + iRet = xioctl(cam->fd, VIDIOC_STREAMOFF, &type); + if (FAILED == iRet) { + iOutRet = iRet; + break; + } + } while (FALSE); + + return iOutRet;*/ + return 0; } int CTvScreenCapture::VideoStop() { - /* - StopCapturing(&m_capV4l2Cam); - UninitCamera(&m_capV4l2Cam); - return SUCCEED;*/ - return 0; + /* + StopCapturing(&m_capV4l2Cam); + UninitCamera(&m_capV4l2Cam); + return SUCCEED;*/ + return 0; } int CTvScreenCapture::UninitCamera(struct camera *cam) { - /* - unsigned int i; + /* + unsigned int i; - for (i = 0; i < m_capNumBuffers; ++i) { - if (cam->buffers[i].start == NULL) { - break; - } + for (i = 0; i < m_capNumBuffers; ++i) { + if (cam->buffers[i].start == NULL) { + break; + } - if (FAILED == munmap(cam->buffers[i].start, cam->buffers[i].length)) { - LOGD("ERROR::munmap cam buffer failed\n"); - break; - } - } + if (FAILED == munmap(cam->buffers[i].start, cam->buffers[i].length)) { + LOGD("ERROR::munmap cam buffer failed\n"); + break; + } + } - if (NULL != cam->buffers) - free(cam->buffers); + if (NULL != cam->buffers) + free(cam->buffers); - cam->buffers = NULL; + cam->buffers = NULL; - return SUCCEED;*/ - return 0; + return SUCCEED;*/ + return 0; } int CTvScreenCapture::CloseCamera(struct camera *cam) { - /* - int iOutRet = SUCCEED, iRet; - - do { - if (cam->fd > 0) { - iRet = close(cam->fd); - if (FAILED == iRet) { - iOutRet = iRet; - break; - } - - cam->fd = -1; - } - } while (FALSE); - - return iOutRet;*/ - return 0; + /* + int iOutRet = SUCCEED, iRet; + + do { + if (cam->fd > 0) { + iRet = close(cam->fd); + if (FAILED == iRet) { + iOutRet = iRet; + break; + } + + cam->fd = -1; + } + } while (FALSE); + + return iOutRet;*/ + return 0; } int CTvScreenCapture::DeinitVideoCap() { - /* - CloseCamera(&m_capV4l2Cam); - return SUCCEED ; - */ - return 0; + /* + CloseCamera(&m_capV4l2Cam); + return SUCCEED ; + */ + return 0; } int CTvScreenCapture::AmvideocapCapFrame(char *buf, int size, int *w, int *h, int *ret_size) { - /* - int iOutRet = SUCCEED, iRet; - int iDevFd = -1; - int format = FORMAT_S32_ABGR; - - do { - iDevFd = open(VIDEOCAPDEV, O_RDWR); - if (iDevFd < 0) { - LOGD("ERROR,open amvideocap0 failed\n"); - iOutRet = FAILED; - break; - } - - if ((w != NULL) && (*w > 0)) { - iRet = ioctl(iDevFd, AMVIDEOCAP_IOW_SET_WANTFRAME_WIDTH, *w); - if (iRet < 0) { - iOutRet = iRet; - break; - } - } - - if ((h != NULL) && (*h > 0)) { - - iRet = ioctl(iDevFd, AMVIDEOCAP_IOW_SET_WANTFRAME_HEIGHT, *h); - if (iRet < 0) { - iOutRet = iRet; - break; - } - } - - iRet = ioctl(iDevFd, AMVIDEOCAP_IOW_SET_WANTFRAME_FORMAT, format); - if (iRet < 0) { - iOutRet = iRet; - break; - } - - *ret_size = read(iDevFd, buf, size); - if (0 == *ret_size) { - LOGD("ERROR:: Cann't Read video data\n"); - iOutRet = FAILED; - *ret_size = 0; - break; - } - - LOGD("========== Got Data Size : %d ==============\n", *ret_size); - #if 0 - if (w != NULL) { - iRet = ioctl(iDevFd, AMVIDEOCAP_IOR_GET_FRAME_WIDTH, w); - } - - if (h != NULL) { - iRet = ioctl(iDevFd, AMVIDEOCAP_IOR_GET_FRAME_HEIGHT, h); - } - #endif - } while (FALSE); - - close(iDevFd); - - return iOutRet;*/ - return 0; + /* + int iOutRet = SUCCEED, iRet; + int iDevFd = -1; + int format = FORMAT_S32_ABGR; + + do { + iDevFd = open(VIDEOCAPDEV, O_RDWR); + if (iDevFd < 0) { + LOGD("ERROR,open amvideocap0 failed\n"); + iOutRet = FAILED; + break; + } + + if ((w != NULL) && (*w > 0)) { + iRet = ioctl(iDevFd, AMVIDEOCAP_IOW_SET_WANTFRAME_WIDTH, *w); + if (iRet < 0) { + iOutRet = iRet; + break; + } + } + + if ((h != NULL) && (*h > 0)) { + + iRet = ioctl(iDevFd, AMVIDEOCAP_IOW_SET_WANTFRAME_HEIGHT, *h); + if (iRet < 0) { + iOutRet = iRet; + break; + } + } + + iRet = ioctl(iDevFd, AMVIDEOCAP_IOW_SET_WANTFRAME_FORMAT, format); + if (iRet < 0) { + iOutRet = iRet; + break; + } + + *ret_size = read(iDevFd, buf, size); + if (0 == *ret_size) { + LOGD("ERROR:: Cann't Read video data\n"); + iOutRet = FAILED; + *ret_size = 0; + break; + } + + LOGD("========== Got Data Size : %d ==============\n", *ret_size); + #if 0 + if (w != NULL) { + iRet = ioctl(iDevFd, AMVIDEOCAP_IOR_GET_FRAME_WIDTH, w); + } + + if (h != NULL) { + iRet = ioctl(iDevFd, AMVIDEOCAP_IOR_GET_FRAME_HEIGHT, h); + } + #endif + } while (FALSE); + + close(iDevFd); + + return iOutRet;*/ + return 0; } int CTvScreenCapture::CapOsdAndVideoLayer(int width, int height) { - /* - int iOutRet = SUCCEED, iRet; - status_t iStatus; - ScreenCatch *mScreenCatch = NULL; - MetaData *pMeta = NULL; - MediaBuffer *buffer = NULL; - int dataLen = 0; - - do { - mScreenCatch = new ScreenCatch(width, height, 32); - if (NULL == mScreenCatch) { - LOGD("ERROR!!! mScreenCatch is NULL\n"); - iOutRet = FAILED; - break; - } - - pMeta = new MetaData(); - if (NULL == pMeta) { - LOGD("ERROR!!! pMeta is NULL\n"); - iOutRet = FAILED; - break; - } - pMeta->setInt32(kKeyColorFormat, OMX_COLOR_Format32bitARGB8888); - - mScreenCatch->start(pMeta); - - while (true) { - iStatus = mScreenCatch->read(&buffer); - if (iStatus != OK ) { - usleep(1000); - continue; - } - - if (NULL == buffer) { - iOutRet = FAILED; - break; - } - - LOGD("DDDDDDDDDDAAAAAAAAAAAAAAAAAAAATTTTTTTTTTTTTTAAAAAAAAAAAAAAAAAAAAAAAAAAAAA %d %d\n", buffer->size(), iStatus); - //nv21_to_rgb32((unsigned char*)buffer->data(),(unsigned char *)m_pData,width,height,&dataLen); - memcpy((unsigned char *)m_pData, (unsigned char *)buffer->data(), buffer->size()); - break; - } - - } while (FALSE); - - if (dataLen > 0) { - mCapEvt.mFrameWide = width; - mCapEvt.mFrameHeight = height; - mCapEvt.mFrameNum = 1; - mCapEvt.mFrameSize = dataLen; - } else { - mCapEvt.mFrameWide = 0; - mCapEvt.mFrameHeight = 0; - mCapEvt.mFrameNum = 0; - mCapEvt.mFrameSize = 0; - } - - if (NULL != mpObserver) { - mpObserver->onTvEvent(mCapEvt); - } - - mScreenCatch->stop(); - - mScreenCatch->free(buffer); - buffer = NULL; - return iOutRet;*/ - return 0; + /* + int iOutRet = SUCCEED, iRet; + status_t iStatus; + ScreenCatch *mScreenCatch = NULL; + MetaData *pMeta = NULL; + MediaBuffer *buffer = NULL; + int dataLen = 0; + + do { + mScreenCatch = new ScreenCatch(width, height, 32); + if (NULL == mScreenCatch) { + LOGD("ERROR!!! mScreenCatch is NULL\n"); + iOutRet = FAILED; + break; + } + + pMeta = new MetaData(); + if (NULL == pMeta) { + LOGD("ERROR!!! pMeta is NULL\n"); + iOutRet = FAILED; + break; + } + pMeta->setInt32(kKeyColorFormat, OMX_COLOR_Format32bitARGB8888); + + mScreenCatch->start(pMeta); + + while (true) { + iStatus = mScreenCatch->read(&buffer); + if (iStatus != OK ) { + usleep(1000); + continue; + } + + if (NULL == buffer) { + iOutRet = FAILED; + break; + } + + LOGD("DDDDDDDDDDAAAAAAAAAAAAAAAAAAAATTTTTTTTTTTTTTAAAAAAAAAAAAAAAAAAAAAAAAAAAAA %d %d\n", buffer->size(), iStatus); + //nv21_to_rgb32((unsigned char*)buffer->data(),(unsigned char *)m_pData,width,height,&dataLen); + memcpy((unsigned char *)m_pData, (unsigned char *)buffer->data(), buffer->size()); + break; + } + + } while (FALSE); + + if (dataLen > 0) { + mCapEvt.mFrameWide = width; + mCapEvt.mFrameHeight = height; + mCapEvt.mFrameNum = 1; + mCapEvt.mFrameSize = dataLen; + } else { + mCapEvt.mFrameWide = 0; + mCapEvt.mFrameHeight = 0; + mCapEvt.mFrameNum = 0; + mCapEvt.mFrameSize = 0; + } + + if (NULL != mpObserver) { + mpObserver->onTvEvent(mCapEvt); + } + + mScreenCatch->stop(); + + mScreenCatch->free(buffer); + buffer = NULL; + return iOutRet;*/ + return 0; } int CTvScreenCapture::CapMediaPlayerVideoLayerOnly(int width, int height) { - /* - int iOutRet = SUCCEED, iRet; - int ibufSize, iDataSize = 0; - int w, h; - - do { - ibufSize = width * height * 4; - w = width; - h = height; - - iRet = AmvideocapCapFrame(m_pData, ibufSize, &w, &h, &iDataSize); - if (SUCCEED != iRet) { - LOGD("AmvideocapCapFrame Cannt CapFram\n"); - iOutRet = iRet; - break; - } - - LOGD("GOT DDDDDDDDDAAAAAAAATTTTTTTTTTTAAAAAA Size : %d w:%d h: %d\n", iDataSize, w, h); - - if (iDataSize > 0) { - mCapEvt.mFrameWide = w; - mCapEvt.mFrameHeight = h; - mCapEvt.mFrameNum = 1; - mCapEvt.mFrameSize = iDataSize; - } else { - mCapEvt.mFrameWide = 0; - mCapEvt.mFrameHeight = 0; - mCapEvt.mFrameNum = 0; - mCapEvt.mFrameSize = 0; - } - - if (NULL != mpObserver) { - mpObserver->onTvEvent(mCapEvt); - } - } while (FALSE); - - return iOutRet;*/ - return 0; + /* + int iOutRet = SUCCEED, iRet; + int ibufSize, iDataSize = 0; + int w, h; + + do { + ibufSize = width * height * 4; + w = width; + h = height; + + iRet = AmvideocapCapFrame(m_pData, ibufSize, &w, &h, &iDataSize); + if (SUCCEED != iRet) { + LOGD("AmvideocapCapFrame Cannt CapFram\n"); + iOutRet = iRet; + break; + } + + LOGD("GOT DDDDDDDDDAAAAAAAATTTTTTTTTTTAAAAAA Size : %d w:%d h: %d\n", iDataSize, w, h); + + if (iDataSize > 0) { + mCapEvt.mFrameWide = w; + mCapEvt.mFrameHeight = h; + mCapEvt.mFrameNum = 1; + mCapEvt.mFrameSize = iDataSize; + } else { + mCapEvt.mFrameWide = 0; + mCapEvt.mFrameHeight = 0; + mCapEvt.mFrameNum = 0; + mCapEvt.mFrameSize = 0; + } + + if (NULL != mpObserver) { + mpObserver->onTvEvent(mCapEvt); + } + } while (FALSE); + + return iOutRet;*/ + return 0; } CTvScreenCapture::CTvScreenCapture() { - /* - m_capNumBuffers = 0; - memset(&m_capV4l2Cam, 0x00, sizeof(camera)); - mpObserver = NULL;*/ - return ; + /* + m_capNumBuffers = 0; + memset(&m_capV4l2Cam, 0x00, sizeof(camera)); + mpObserver = NULL;*/ + return ; } CTvScreenCapture::~CTvScreenCapture() { - /* - memset(&m_capV4l2Cam, 0x00, sizeof(camera)); - m_pData = NULL;*/ + /* + memset(&m_capV4l2Cam, 0x00, sizeof(camera)); + m_pData = NULL;*/ } diff --git a/tvapi/libtv/tv/CTvScreenCapture.h b/tvapi/libtv/tv/CTvScreenCapture.h index 194fa44..7bbf57e 100644 --- a/tvapi/libtv/tv/CTvScreenCapture.h +++ b/tvapi/libtv/tv/CTvScreenCapture.h @@ -22,25 +22,25 @@ using namespace android; struct buffer { - void *start; - size_t length; + void *start; + size_t length; }; struct camera { - char *device_name; - int fd; - int width; - int height; - int display_depth; - int image_size; - int frame_number; //fps - int bitrate ; // bitrate - struct v4l2_capability v4l2_cap; - struct v4l2_cropcap v4l2_cropcap; - struct v4l2_format v4l2_fmt; - struct v4l2_crop crop; - struct buffer *buffers; + char *device_name; + int fd; + int width; + int height; + int display_depth; + int image_size; + int frame_number; //fps + int bitrate ; // bitrate + struct v4l2_capability v4l2_cap; + struct v4l2_cropcap v4l2_cropcap; + struct v4l2_format v4l2_fmt; + struct v4l2_crop crop; + struct buffer *buffers; }; /* @@ -107,71 +107,71 @@ GE2D_FORMAT_S24_RGB #define AMVIDEOCAP_IOR_SET_SRC_HEIGHT _IOR(AMVIDEOCAP_IOC_MAGIC, 0x43, int) enum amvideocap_state { - AMVIDEOCAP_STATE_INIT = 0, - AMVIDEOCAP_STATE_ON_CAPTURE = 200, - AMVIDEOCAP_STATE_FINISHED_CAPTURE = 300, - AMVIDEOCAP_STATE_ERROR = 0xffff, + AMVIDEOCAP_STATE_INIT = 0, + AMVIDEOCAP_STATE_ON_CAPTURE = 200, + AMVIDEOCAP_STATE_FINISHED_CAPTURE = 300, + AMVIDEOCAP_STATE_ERROR = 0xffff, }; class CTvScreenCapture { public: - CTvScreenCapture(); - ~CTvScreenCapture(); - - int InitVCap(sp Mem); - int SetVideoParameter(int width, int height, int frame); - int VideoStart(); - int GetVideoData( int *length); - int VideoStop(); - int DeinitVideoCap(); - int CapMediaPlayerVideoLayerOnly(int width, int height); - int CapOsdAndVideoLayer(int width, int height); - class CapEvent : public CTvEv { - public: - CapEvent(): CTvEv(CTvEv::TV_EVENT_HDMI_IN_CAP) {}; - ~CapEvent() {}; - - int mFrameNum; - int mFrameWide; - int mFrameHeight; - int mFrameSize; - }; - - class TvIObserver { - public: - TvIObserver() {}; - virtual ~TvIObserver() {}; - virtual void onTvEvent ( const CTvEv &ev ) = 0; - }; - - int setObserver(TvIObserver *ob) - { - mpObserver = ob; - return 0; - } + CTvScreenCapture(); + ~CTvScreenCapture(); + + int InitVCap(sp Mem); + int SetVideoParameter(int width, int height, int frame); + int VideoStart(); + int GetVideoData( int *length); + int VideoStop(); + int DeinitVideoCap(); + int CapMediaPlayerVideoLayerOnly(int width, int height); + int CapOsdAndVideoLayer(int width, int height); + class CapEvent : public CTvEv { + public: + CapEvent(): CTvEv(CTvEv::TV_EVENT_HDMI_IN_CAP) {}; + ~CapEvent() {}; + + int mFrameNum; + int mFrameWide; + int mFrameHeight; + int mFrameSize; + }; + + class TvIObserver { + public: + TvIObserver() {}; + virtual ~TvIObserver() {}; + virtual void onTvEvent ( const CTvEv &ev ) = 0; + }; + + int setObserver(TvIObserver *ob) + { + mpObserver = ob; + return 0; + } private: - int xioctl(int fd, int request, void *arg); - int OpenCamera(struct camera *pCameraDev); - int InitMmap(struct camera *cam) ; - //int SetFrameRate( struct camera *cam); - int InitCamera(struct camera *cam) ; - int StartCapturing(struct camera *cam); - int StopCapturing(struct camera *cam); - int UninitCamera(struct camera *cam); - int CloseCamera(struct camera *cam); - void yuv_to_rgb32(unsigned char y, unsigned char u, unsigned char v, unsigned char *rgb); - void nv21_to_rgb32(unsigned char *buf, unsigned char *rgb, int width, int height, int *len); - int AmvideocapCapFrame(char *buf, int size, int *w, int *h, int *ret_size); + int xioctl(int fd, int request, void *arg); + int OpenCamera(struct camera *pCameraDev); + int InitMmap(struct camera *cam) ; + //int SetFrameRate( struct camera *cam); + int InitCamera(struct camera *cam) ; + int StartCapturing(struct camera *cam); + int StopCapturing(struct camera *cam); + int UninitCamera(struct camera *cam); + int CloseCamera(struct camera *cam); + void yuv_to_rgb32(unsigned char y, unsigned char u, unsigned char v, unsigned char *rgb); + void nv21_to_rgb32(unsigned char *buf, unsigned char *rgb, int width, int height, int *len); + int AmvideocapCapFrame(char *buf, int size, int *w, int *h, int *ret_size); private: - sp m_pMem; - camera m_capV4l2Cam; - unsigned int m_capNumBuffers; + sp m_pMem; + camera m_capV4l2Cam; + unsigned int m_capNumBuffers; - char *m_pData; - TvIObserver *mpObserver; - CapEvent mCapEvt; + char *m_pData; + TvIObserver *mpObserver; + CapEvent mCapEvt; }; #endif diff --git a/tvapi/libtv/tv/CTvSubtitle.cpp b/tvapi/libtv/tv/CTvSubtitle.cpp index 4ee991c..bd84703 100644 --- a/tvapi/libtv/tv/CTvSubtitle.cpp +++ b/tvapi/libtv/tv/CTvSubtitle.cpp @@ -12,21 +12,21 @@ #include "am_dmx.h" CTvSubtitle::CTvSubtitle() { - mpObser = NULL; + mpObser = NULL; } CTvSubtitle::~CTvSubtitle() { } void CTvSubtitle::setObserver(IObserver *pObser) { - isSubOpen = false; - mpObser = pObser; + isSubOpen = false; + mpObser = pObser; } void CTvSubtitle::setBuffer(char *share_mem) { - pthread_mutex_lock(&lock); - buffer = (unsigned char *)share_mem; - pthread_mutex_unlock(&lock); + pthread_mutex_lock(&lock); + buffer = (unsigned char *)share_mem; + pthread_mutex_unlock(&lock); } void CTvSubtitle::stopDecoder() { @@ -121,360 +121,360 @@ void CTvSubtitle::searchPrevious() int CTvSubtitle::sub_init(int bmp_width, int bmp_height) { - pthread_mutex_init(&lock, NULL); - bmp_w = bmp_width; - bmp_h = bmp_height; - sub_w = 720; - sub_h = 576; - bmp_pitch = bmp_w * 4; - return 0; + pthread_mutex_init(&lock, NULL); + bmp_w = bmp_width; + bmp_h = bmp_height; + sub_w = 720; + sub_h = 576; + bmp_pitch = bmp_w * 4; + return 0; } int CTvSubtitle::sub_destroy() { - return 0; + return 0; } int CTvSubtitle::sub_lock() { - pthread_mutex_lock(&lock); - return 0; + pthread_mutex_lock(&lock); + return 0; } int CTvSubtitle::sub_unlock() { - pthread_mutex_unlock(&lock); - return 0; + pthread_mutex_unlock(&lock); + return 0; } int CTvSubtitle::sub_clear() { - return 0; + return 0; } static void clear_bitmap(CTvSubtitle *pSub) { - unsigned char *ptr = pSub->buffer; - int y = pSub->bmp_h; + unsigned char *ptr = pSub->buffer; + int y = pSub->bmp_h; - while (y--) { - memset(ptr, 0, pSub->bmp_pitch); - ptr += pSub->bmp_pitch; - } + while (y--) { + memset(ptr, 0, pSub->bmp_pitch); + ptr += pSub->bmp_pitch; + } } static void show_sub_cb(AM_SUB2_Handle_t handle, AM_SUB2_Picture_t *pic) { - LOGD("dvb callback-----------"); - - CTvSubtitle *pSub = ((CTvSubtitle *) AM_SUB2_GetUserData(handle)); - pthread_mutex_lock(&pSub->lock); - clear_bitmap(pSub); - - if (pic) { - AM_SUB2_Region_t *rgn = pic->p_region; - pSub->sub_w = pic->original_width; - pSub->sub_h = pic->original_height; - while (rgn) { - int sx, sy, dx, dy, rw, rh; - - // ensure we have a valid buffer - if (! rgn->p_buf) { - rgn = rgn->p_next; - continue; - } - - sx = 0; - sy = 0; - dx = pic->original_x + rgn->left; - dy = pic->original_y + rgn->top; - rw = rgn->width; - rh = rgn->height; - - if (dx < 0) { - sx = -dx; - dx = 0; - rw += dx; - } - - if (dx + rw > pSub->bmp_w) { - rw = pSub->bmp_w - dx; - } - - if (dy < 0) { - sy = -dy; - dy = 0; - rh += dy; - } - - if (dy + rh > pSub->bmp_h) { - rh = pSub->bmp_h - dy; - } - - if ((rw > 0) && (rh > 0)) { - unsigned char *sbegin = (unsigned char *)rgn->p_buf + sy * rgn->width + sx; - unsigned char *dbegin = pSub->buffer + dy * pSub->bmp_pitch + dx * 4; - unsigned char *src, *dst; - int size; - - while (rh) { - src = sbegin; - dst = dbegin; - size = rw; - while (size--) { - int c = src[0]; - - if (c < (int)rgn->entry) { - if (rgn->clut[c].a) { - *dst++ = rgn->clut[c].r; - *dst++ = rgn->clut[c].g; - *dst++ = rgn->clut[c].b; - } else { - dst += 3; - } - *dst++ = rgn->clut[c].a; - } else { - dst += 4; - } - src ++; - } - sbegin += rgn->width; - dbegin += pSub->bmp_pitch; - rh--; - } - } - - rgn = rgn->p_next; - } - pSub->mpObser->updateSubtitle(pic->original_width, pic->original_height); - } - pthread_mutex_unlock(&pSub->lock); + LOGD("dvb callback-----------"); + + CTvSubtitle *pSub = ((CTvSubtitle *) AM_SUB2_GetUserData(handle)); + pthread_mutex_lock(&pSub->lock); + clear_bitmap(pSub); + + if (pic) { + AM_SUB2_Region_t *rgn = pic->p_region; + pSub->sub_w = pic->original_width; + pSub->sub_h = pic->original_height; + while (rgn) { + int sx, sy, dx, dy, rw, rh; + + // ensure we have a valid buffer + if (! rgn->p_buf) { + rgn = rgn->p_next; + continue; + } + + sx = 0; + sy = 0; + dx = pic->original_x + rgn->left; + dy = pic->original_y + rgn->top; + rw = rgn->width; + rh = rgn->height; + + if (dx < 0) { + sx = -dx; + dx = 0; + rw += dx; + } + + if (dx + rw > pSub->bmp_w) { + rw = pSub->bmp_w - dx; + } + + if (dy < 0) { + sy = -dy; + dy = 0; + rh += dy; + } + + if (dy + rh > pSub->bmp_h) { + rh = pSub->bmp_h - dy; + } + + if ((rw > 0) && (rh > 0)) { + unsigned char *sbegin = (unsigned char *)rgn->p_buf + sy * rgn->width + sx; + unsigned char *dbegin = pSub->buffer + dy * pSub->bmp_pitch + dx * 4; + unsigned char *src, *dst; + int size; + + while (rh) { + src = sbegin; + dst = dbegin; + size = rw; + while (size--) { + int c = src[0]; + + if (c < (int)rgn->entry) { + if (rgn->clut[c].a) { + *dst++ = rgn->clut[c].r; + *dst++ = rgn->clut[c].g; + *dst++ = rgn->clut[c].b; + } else { + dst += 3; + } + *dst++ = rgn->clut[c].a; + } else { + dst += 4; + } + src ++; + } + sbegin += rgn->width; + dbegin += pSub->bmp_pitch; + rh--; + } + } + + rgn = rgn->p_next; + } + pSub->mpObser->updateSubtitle(pic->original_width, pic->original_height); + } + pthread_mutex_unlock(&pSub->lock); } static uint64_t get_pts_cb(void *handle, uint64_t pts) { - char buf[32]; - AM_ErrorCode_t ret; - uint32_t v; - uint64_t r; + char buf[32]; + AM_ErrorCode_t ret; + uint32_t v; + uint64_t r; - ret = AM_FileRead("/sys/class/tsync/pts_pcrscr", buf, sizeof(buf)); - if (!ret) { - v = strtoul(buf, 0, 16); - if (pts & (1LL << 32)) { - r = ((uint64_t)v) | (1LL << 32); - } else { - r = (uint64_t)v; - } - } else { - r = 0LL; - } + ret = AM_FileRead("/sys/class/tsync/pts_pcrscr", buf, sizeof(buf)); + if (!ret) { + v = strtoul(buf, 0, 16); + if (pts & (1LL << 32)) { + r = ((uint64_t)v) | (1LL << 32); + } else { + r = (uint64_t)v; + } + } else { + r = 0LL; + } - return r; + return r; } static void pes_data_cb(int dev_no, int fhandle, const uint8_t *data, int len, void *user_data) { - CTvSubtitle *pSub = ((CTvSubtitle *) user_data); - AM_PES_Decode(pSub->pes_handle, (uint8_t *)data, len); + CTvSubtitle *pSub = ((CTvSubtitle *) user_data); + AM_PES_Decode(pSub->pes_handle, (uint8_t *)data, len); } static int close_dmx(CTvSubtitle *pSub) { - AM_DMX_FreeFilter(pSub->dmx_id, pSub->filter_handle); - AM_DMX_Close(pSub->dmx_id); - pSub->dmx_id = -1; - pSub->filter_handle = -1; + AM_DMX_FreeFilter(pSub->dmx_id, pSub->filter_handle); + AM_DMX_Close(pSub->dmx_id); + pSub->dmx_id = -1; + pSub->filter_handle = -1; - return 0; + return 0; } static int open_dmx(CTvSubtitle *pSub, int dmx_id, int pid) { - close_dmx(pSub); - AM_DMX_OpenPara_t op; - struct dmx_pes_filter_params pesp; - AM_ErrorCode_t ret; - - pSub->dmx_id = -1; - pSub->filter_handle = -1; - memset(&op, 0, sizeof(op)); - - ret = AM_DMX_Open(dmx_id, &op); - if (ret != AM_SUCCESS) { - LOGD("error AM_DMX_Open != AM_SUCCESS"); - goto error; - } - pSub->dmx_id = dmx_id; - - ret = AM_DMX_AllocateFilter(dmx_id, &pSub->filter_handle); - if (ret != AM_SUCCESS) { - LOGD("error AM_DMX_AllocateFilter != AM_SUCCESS"); - goto error; - } - - ret = AM_DMX_SetBufferSize(dmx_id, pSub->filter_handle, 0x80000); - if (ret != AM_SUCCESS) { - LOGD("error AM_DMX_SetBufferSize != AM_SUCCESS"); - goto error; - } - - memset(&pesp, 0, sizeof(pesp)); - pesp.pid = pid; - pesp.output = DMX_OUT_TAP; - pesp.pes_type = DMX_PES_TELETEXT0; - - ret = AM_DMX_SetPesFilter(dmx_id, pSub->filter_handle, &pesp); - if (ret != AM_SUCCESS) { - LOGD("error AM_DMX_SetPesFilter != AM_SUCCESS, err = %d", strerror(errno)); - goto error; - } - - ret = AM_DMX_SetCallback(dmx_id, pSub->filter_handle, pes_data_cb, pSub); - if (ret != AM_SUCCESS) { - LOGD("error AM_DMX_SetCallback != AM_SUCCESS"); - goto error; - } - - ret = AM_DMX_StartFilter(dmx_id, pSub->filter_handle); - if (ret != AM_SUCCESS) { - LOGD("error AM_DMX_StartFilter != AM_SUCCESS,dmx_id=%d,filter_handle=%d, ret = %d", dmx_id, pSub->filter_handle, ret); - goto error; - } - - return 0; + close_dmx(pSub); + AM_DMX_OpenPara_t op; + struct dmx_pes_filter_params pesp; + AM_ErrorCode_t ret; + + pSub->dmx_id = -1; + pSub->filter_handle = -1; + memset(&op, 0, sizeof(op)); + + ret = AM_DMX_Open(dmx_id, &op); + if (ret != AM_SUCCESS) { + LOGD("error AM_DMX_Open != AM_SUCCESS"); + goto error; + } + pSub->dmx_id = dmx_id; + + ret = AM_DMX_AllocateFilter(dmx_id, &pSub->filter_handle); + if (ret != AM_SUCCESS) { + LOGD("error AM_DMX_AllocateFilter != AM_SUCCESS"); + goto error; + } + + ret = AM_DMX_SetBufferSize(dmx_id, pSub->filter_handle, 0x80000); + if (ret != AM_SUCCESS) { + LOGD("error AM_DMX_SetBufferSize != AM_SUCCESS"); + goto error; + } + + memset(&pesp, 0, sizeof(pesp)); + pesp.pid = pid; + pesp.output = DMX_OUT_TAP; + pesp.pes_type = DMX_PES_TELETEXT0; + + ret = AM_DMX_SetPesFilter(dmx_id, pSub->filter_handle, &pesp); + if (ret != AM_SUCCESS) { + LOGD("error AM_DMX_SetPesFilter != AM_SUCCESS, err = %d", strerror(errno)); + goto error; + } + + ret = AM_DMX_SetCallback(dmx_id, pSub->filter_handle, pes_data_cb, pSub); + if (ret != AM_SUCCESS) { + LOGD("error AM_DMX_SetCallback != AM_SUCCESS"); + goto error; + } + + ret = AM_DMX_StartFilter(dmx_id, pSub->filter_handle); + if (ret != AM_SUCCESS) { + LOGD("error AM_DMX_StartFilter != AM_SUCCESS,dmx_id=%d,filter_handle=%d, ret = %d", dmx_id, pSub->filter_handle, ret); + goto error; + } + + return 0; error: - if (pSub->filter_handle != -1) { - AM_DMX_FreeFilter(dmx_id, pSub->filter_handle); - } - if (pSub->dmx_id != -1) { - AM_DMX_Close(dmx_id); - } + if (pSub->filter_handle != -1) { + AM_DMX_FreeFilter(dmx_id, pSub->filter_handle); + } + if (pSub->dmx_id != -1) { + AM_DMX_Close(dmx_id); + } - return -1; + return -1; } static void pes_sub_cb(AM_PES_Handle_t handle, uint8_t *buf, int size) { - CTvSubtitle *pSub = ((CTvSubtitle *) AM_SUB2_GetUserData(handle)); - AM_SUB2_Decode(pSub->sub_handle, buf, size); + CTvSubtitle *pSub = ((CTvSubtitle *) AM_SUB2_GetUserData(handle)); + AM_SUB2_Decode(pSub->sub_handle, buf, size); } int CTvSubtitle::sub_switch_status() { - return isSubOpen ? 1 : 0; + return isSubOpen ? 1 : 0; } int CTvSubtitle::sub_start_dvb_sub(int dmx_id, int pid, int page_id, int anc_page_id) { - LOGD("start dvb subtitle=----------------"); - - AM_PES_Para_t pesp; - AM_SUB2_Para_t subp; - int ret; - - memset(&pesp, 0, sizeof(pesp)); - pesp.packet = pes_sub_cb; - pesp.user_data = this; - ret = AM_PES_Create(&pes_handle, &pesp); - if (ret != AM_SUCCESS) { - LOGD("error AM_PES_Create != AM_SUCCESS"); - goto error; - } - - memset(&subp, 0, sizeof(subp)); - subp.show = show_sub_cb; - subp.get_pts = get_pts_cb; - subp.composition_id = page_id; - subp.ancillary_id = anc_page_id; - subp.user_data = this; - ret = AM_SUB2_Create(&sub_handle, &subp); - if (ret != AM_SUCCESS) { - LOGD("error AM_SUB2_Create != AM_SUCCESS"); - goto error; - } - - ret = AM_SUB2_Start(sub_handle); - if (ret != AM_SUCCESS) { - LOGD("error AM_SUB2_Start != AM_SUCCESS"); - goto error; - } - - ret = open_dmx(this, dmx_id, pid); - if (ret < 0) { - LOGD("error open_dmx != AM_SUCCESS"); - goto error; - } - isSubOpen = true; - return 0; + LOGD("start dvb subtitle=----------------"); + + AM_PES_Para_t pesp; + AM_SUB2_Para_t subp; + int ret; + + memset(&pesp, 0, sizeof(pesp)); + pesp.packet = pes_sub_cb; + pesp.user_data = this; + ret = AM_PES_Create(&pes_handle, &pesp); + if (ret != AM_SUCCESS) { + LOGD("error AM_PES_Create != AM_SUCCESS"); + goto error; + } + + memset(&subp, 0, sizeof(subp)); + subp.show = show_sub_cb; + subp.get_pts = get_pts_cb; + subp.composition_id = page_id; + subp.ancillary_id = anc_page_id; + subp.user_data = this; + ret = AM_SUB2_Create(&sub_handle, &subp); + if (ret != AM_SUCCESS) { + LOGD("error AM_SUB2_Create != AM_SUCCESS"); + goto error; + } + + ret = AM_SUB2_Start(sub_handle); + if (ret != AM_SUCCESS) { + LOGD("error AM_SUB2_Start != AM_SUCCESS"); + goto error; + } + + ret = open_dmx(this, dmx_id, pid); + if (ret < 0) { + LOGD("error open_dmx != AM_SUCCESS"); + goto error; + } + isSubOpen = true; + return 0; error: - if (sub_handle) { - AM_SUB2_Destroy(sub_handle); - sub_handle = NULL; - } - if (pes_handle) { - AM_PES_Destroy(pes_handle); - pes_handle = NULL; - } - return -1; + if (sub_handle) { + AM_SUB2_Destroy(sub_handle); + sub_handle = NULL; + } + if (pes_handle) { + AM_PES_Destroy(pes_handle); + pes_handle = NULL; + } + return -1; } int CTvSubtitle::sub_start_dtv_tt(int dmx_id, int region_id, int pid, int page, int sub_page, bool is_sub) { - return 0; + return 0; } int CTvSubtitle::sub_stop_dvb_sub() { - pthread_mutex_lock(&lock); - close_dmx(this); - AM_SUB2_Destroy(sub_handle); - AM_PES_Destroy(pes_handle); + pthread_mutex_lock(&lock); + close_dmx(this); + AM_SUB2_Destroy(sub_handle); + AM_PES_Destroy(pes_handle); - clear_bitmap(this); - mpObser->updateSubtitle(0, 0); + clear_bitmap(this); + mpObser->updateSubtitle(0, 0); - sub_handle = NULL; - pes_handle = NULL; - isSubOpen = false; - pthread_mutex_unlock(&lock); - return 0; + sub_handle = NULL; + pes_handle = NULL; + isSubOpen = false; + pthread_mutex_unlock(&lock); + return 0; } int CTvSubtitle::sub_stop_dtv_tt() { - return 0; + return 0; } int CTvSubtitle::sub_tt_goto(int page) { - return 0; + return 0; } int CTvSubtitle::sub_tt_color_link(int color) { - return 0; + return 0; } int CTvSubtitle::sub_tt_home_link() { - return 0; + return 0; } int CTvSubtitle::sub_tt_next(int dir) { - return 0; + return 0; } int CTvSubtitle::sub_tt_set_search_pattern(char *pattern, bool casefold) { - return 0; + return 0; } int CTvSubtitle::sub_tt_search(int dir) { - return 0; + return 0; } /* @@ -524,92 +524,92 @@ program, no signal, blocked...*/ //else != 0 int CTvSubtitle::sub_start_atsc_cc(enum cc_param_country country, enum cc_param_source_type src_type, int channel_num, enum cc_param_caption_type caption_type) { - LOGD("----sub_start_atsc_cc-1--- country=%d,src=%d,ctype=%d", country, src_type, caption_type); - switch (country) { - case CC_PARAM_COUNTRY_USA: - AM_CC_Cmd(CMD_SET_COUNTRY_USA); - break; - case CC_PARAM_COUNTRY_KOREA: - AM_CC_Cmd(CMD_SET_COUNTRY_KOREA); - break; - default: - AM_CC_Cmd(CMD_SET_COUNTRY_USA); - break; - } - - switch (src_type) { - case CC_PARAM_SOURCE_VBIDATA: - AM_CC_Cmd(CMD_CC_SET_VBIDATA); - break; - case CC_PARAM_SOURCE_USERDATA: - AM_CC_Cmd(CMD_CC_SET_USERDATA); - break; - default: - AM_CC_Cmd(CMD_CC_SET_USERDATA); - break; - } - - //just for test - if (channel_num == 0) { - } else { - //AM_CC_Cmd(CMD_CC_SET_CHAN_NUM); - } - - AM_CLOSECAPTION_cmd_t cc_t_cmd; - switch (caption_type) { - case CC_PARAM_ANALOG_CAPTION_TYPE_CC1: - cc_t_cmd = CMD_CC_1; - break; - case CC_PARAM_ANALOG_CAPTION_TYPE_CC2: - cc_t_cmd = CMD_CC_2; - break; - case CC_PARAM_ANALOG_CAPTION_TYPE_CC3: - cc_t_cmd = CMD_CC_3; - break; - case CC_PARAM_ANALOG_CAPTION_TYPE_CC4: - cc_t_cmd = CMD_CC_4; - break; - case CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE1: - cc_t_cmd = CMD_SERVICE_1; - break; - case CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE2: - cc_t_cmd = CMD_SERVICE_2; - break; - case CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE3: - cc_t_cmd = CMD_SERVICE_3; - break; - case CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE4: - cc_t_cmd = CMD_SERVICE_4; - break; - default: - cc_t_cmd = CMD_SERVICE_1; - break; - } - AM_CC_Cmd(cc_t_cmd); - - AM_CC_Set_CallBack(close_caption_callback, this); - AM_VCHIP_Set_CallBack(atv_vchip_callback, this); - //start - AM_CC_Cmd(CMD_CC_START); - LOGD("----sub_start_atsc_cc-2--- country=%d,src=%d,ctype=%d", country, src_type, caption_type); - return 0; + LOGD("----sub_start_atsc_cc-1--- country=%d,src=%d,ctype=%d", country, src_type, caption_type); + switch (country) { + case CC_PARAM_COUNTRY_USA: + AM_CC_Cmd(CMD_SET_COUNTRY_USA); + break; + case CC_PARAM_COUNTRY_KOREA: + AM_CC_Cmd(CMD_SET_COUNTRY_KOREA); + break; + default: + AM_CC_Cmd(CMD_SET_COUNTRY_USA); + break; + } + + switch (src_type) { + case CC_PARAM_SOURCE_VBIDATA: + AM_CC_Cmd(CMD_CC_SET_VBIDATA); + break; + case CC_PARAM_SOURCE_USERDATA: + AM_CC_Cmd(CMD_CC_SET_USERDATA); + break; + default: + AM_CC_Cmd(CMD_CC_SET_USERDATA); + break; + } + + //just for test + if (channel_num == 0) { + } else { + //AM_CC_Cmd(CMD_CC_SET_CHAN_NUM); + } + + AM_CLOSECAPTION_cmd_t cc_t_cmd; + switch (caption_type) { + case CC_PARAM_ANALOG_CAPTION_TYPE_CC1: + cc_t_cmd = CMD_CC_1; + break; + case CC_PARAM_ANALOG_CAPTION_TYPE_CC2: + cc_t_cmd = CMD_CC_2; + break; + case CC_PARAM_ANALOG_CAPTION_TYPE_CC3: + cc_t_cmd = CMD_CC_3; + break; + case CC_PARAM_ANALOG_CAPTION_TYPE_CC4: + cc_t_cmd = CMD_CC_4; + break; + case CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE1: + cc_t_cmd = CMD_SERVICE_1; + break; + case CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE2: + cc_t_cmd = CMD_SERVICE_2; + break; + case CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE3: + cc_t_cmd = CMD_SERVICE_3; + break; + case CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE4: + cc_t_cmd = CMD_SERVICE_4; + break; + default: + cc_t_cmd = CMD_SERVICE_1; + break; + } + AM_CC_Cmd(cc_t_cmd); + + AM_CC_Set_CallBack(close_caption_callback, this); + AM_VCHIP_Set_CallBack(atv_vchip_callback, this); + //start + AM_CC_Cmd(CMD_CC_START); + LOGD("----sub_start_atsc_cc-2--- country=%d,src=%d,ctype=%d", country, src_type, caption_type); + return 0; } int CTvSubtitle::sub_stop_atsc_cc() { - LOGD("----sub_stop_atsc_cc----"); - AM_CC_Cmd(CMD_CC_STOP); - return 0; + LOGD("----sub_stop_atsc_cc----"); + AM_CC_Cmd(CMD_CC_STOP); + return 0; } int CTvSubtitle::ResetVchipChgStat() { - avchip_chg = 0; - AM_CC_Cmd(CMD_VCHIP_RST_CHGSTAT); - return 0; + avchip_chg = 0; + AM_CC_Cmd(CMD_VCHIP_RST_CHGSTAT); + return 0; } int CTvSubtitle::IsVchipChange() { - return avchip_chg; + return avchip_chg; } //cnt :data buf len //databuf len is max 512 @@ -617,27 +617,27 @@ int CTvSubtitle::IsVchipChange() void CTvSubtitle::close_caption_callback(char *str, int cnt, int data_buf[], int cmd_buf[], void *user_data) { - /* - CTvSubtitle *pSub = (CTvSubtitle *)user_data; + /* + CTvSubtitle *pSub = (CTvSubtitle *)user_data; - if (pSub == NULL) - { - LOGD("sub cc callback is null user data for this"); - return; - } + if (pSub == NULL) + { + LOGD("sub cc callback is null user data for this"); + return; + } - if (pSub->mpObser == NULL) return; + if (pSub->mpObser == NULL) return; - pSub->mCurCCEv.mDataBufSize = cnt; - pSub->mCurCCEv.mpDataBuffer = data_buf; - pSub->mCurCCEv.mCmdBufSize = 128;//max - pSub->mCurCCEv.mpCmdBuffer = cmd_buf; + pSub->mCurCCEv.mDataBufSize = cnt; + pSub->mCurCCEv.mpDataBuffer = data_buf; + pSub->mCurCCEv.mCmdBufSize = 128;//max + pSub->mCurCCEv.mpCmdBuffer = cmd_buf; - pSub->mpObser->onEvent(pSub->mCurCCEv); - */ + pSub->mpObser->onEvent(pSub->mCurCCEv); + */ } void CTvSubtitle::atv_vchip_callback(int Is_chg, void *user_data) { - CTvSubtitle *pSub = (CTvSubtitle *)user_data; - pSub->avchip_chg = Is_chg; + CTvSubtitle *pSub = (CTvSubtitle *)user_data; + pSub->avchip_chg = Is_chg; } diff --git a/tvapi/libtv/tv/CTvSubtitle.h b/tvapi/libtv/tv/CTvSubtitle.h index 8acd48a..ee8e9e6 100644 --- a/tvapi/libtv/tv/CTvSubtitle.h +++ b/tvapi/libtv/tv/CTvSubtitle.h @@ -21,231 +21,231 @@ using namespace android; typedef enum cc_param_country { - CC_PARAM_COUNTRY_USA = 0, - CC_PARAM_COUNTRY_KOREA, + CC_PARAM_COUNTRY_USA = 0, + CC_PARAM_COUNTRY_KOREA, }; typedef enum cc_param_source_type { - CC_PARAM_SOURCE_VBIDATA = 0, - CC_PARAM_SOURCE_USERDATA, + CC_PARAM_SOURCE_VBIDATA = 0, + CC_PARAM_SOURCE_USERDATA, }; typedef enum cc_param_caption_type { - CC_PARAM_ANALOG_CAPTION_TYPE_CC1 = 0, - CC_PARAM_ANALOG_CAPTION_TYPE_CC2, - CC_PARAM_ANALOG_CAPTION_TYPE_CC3, - CC_PARAM_ANALOG_CAPTION_TYPE_CC4, - CC_PARAM_ANALOG_CAPTION_TYPE_TEXT1, - CC_PARAM_ANALOG_CAPTION_TYPE_TEXT2, - CC_PARAM_ANALOG_CAPTION_TYPE_TEXT3, - CC_PARAM_ANALOG_CAPTION_TYPE_TEXT4, - // - CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE1, - CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE2, - CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE3, - CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE4, - CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE5, - CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE6, + CC_PARAM_ANALOG_CAPTION_TYPE_CC1 = 0, + CC_PARAM_ANALOG_CAPTION_TYPE_CC2, + CC_PARAM_ANALOG_CAPTION_TYPE_CC3, + CC_PARAM_ANALOG_CAPTION_TYPE_CC4, + CC_PARAM_ANALOG_CAPTION_TYPE_TEXT1, + CC_PARAM_ANALOG_CAPTION_TYPE_TEXT2, + CC_PARAM_ANALOG_CAPTION_TYPE_TEXT3, + CC_PARAM_ANALOG_CAPTION_TYPE_TEXT4, + // + CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE1, + CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE2, + CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE3, + CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE4, + CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE5, + CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE6, }; class CTvSubtitle { public: - class IObserver { - public: - IObserver() {}; - virtual ~IObserver() {}; - //virtual void onEvent(const CloseCaptionEvent &ev); - virtual void updateSubtitle(int, int) {}; - }; - - AM_SUB2_Handle_t sub_handle; - AM_PES_Handle_t pes_handle; - int dmx_id; - int filter_handle; - int bmp_w; - int bmp_h; - int bmp_pitch; - unsigned char *buffer; - int sub_w; - int sub_h; - pthread_mutex_t lock; - - IObserver *mpObser; - CTvSubtitle(); - ~CTvSubtitle(); - - class CloseCaptionEvent: public CTvEv { - public: - //static const int CC_CMD_LEN = 128; - //static const int CC_DATA_LEN = 512; - CloseCaptionEvent(): CTvEv(CTvEv::TV_EVENT_CC) - { - } - ~CloseCaptionEvent() - { - } - public: - int mCmdBufSize; - int *mpCmdBuffer; - int mDataBufSize; - int *mpDataBuffer; - }; - - void setObserver(IObserver *pObser); - void setBuffer(char *share_mem); - void stopDecoder(); - /** - * 开始字幕信æ¯è§£æžshowboz sync - */ - void startSub(); - /** - * åœæ­¢å›¾æ–‡/字幕信æ¯è§£æž - */ - void stop(); - - /** - * åœæ­¢å›¾æ–‡/字幕信æ¯è§£æžå¹¶æ¸…é™¤ç¼“å­˜æ•°æ® - */ - void clear(); - /** - * 在图文模å¼ä¸‹è¿›å…¥ä¸‹ä¸€é¡µ - */ - void nextPage(); - /** - * 在图文模å¼ä¸‹è¿›å…¥ä¸Šä¸€é¡µ - */ - void previousPage(); - /** - * 在图文模å¼ä¸‹è·³è½¬åˆ°æŒ‡å®šé¡µ - * @param page è¦è·³è½¬åˆ°çš„é¡µå· - */ - void gotoPage(int page); - - /** - * 在图文模å¼ä¸‹è·³è½¬åˆ°home页 - */ - void goHome(); - /** - * 在图文模å¼ä¸‹æ ¹æ®é¢œè‰²è·³è½¬åˆ°æŒ‡å®šé“¾æŽ¥ - * @param color 颜色,COLOR_RED/COLOR_GREEN/COLOR_YELLOW/COLOR_BLUE - */ - void colorLink(int color); - - /** - * 在图文模å¼ä¸‹è®¾å®šæœç´¢å­—符串 - * @param pattern æœç´¢åŒ¹é…字符串 - * @param casefold 是å¦åŒºåˆ†å¤§å°å†™ - */ - void setSearchPattern(char *pattern, bool casefold); - /** - * æœç´¢ä¸‹ä¸€é¡µ - */ - void searchNext(); - /** - * æœç´¢ä¸Šä¸€é¡µ - */ - void searchPrevious(); - - int sub_init(int, int); - // - int sub_destroy(); - // - int sub_lock(); - // - int sub_unlock(); - // - int sub_clear(); - // - int sub_switch_status(); - int sub_start_dvb_sub(int dmx_id, int pid, int page_id, int anc_page_id); - // - int sub_start_dtv_tt(int dmx_id, int region_id, int pid, int page, int sub_page, bool is_sub); - // - int sub_stop_dvb_sub(); - // - int sub_stop_dtv_tt(); - // - int sub_tt_goto(int page); - // - int sub_tt_color_link(int color); - // - int sub_tt_home_link(); - // - int sub_tt_next(int dir); - // - int sub_tt_set_search_pattern(char *pattern, bool casefold); - // - int sub_tt_search(int dir); - // - int sub_start_atsc_cc(enum cc_param_country country, enum cc_param_source_type src_type, int channel_num, enum cc_param_caption_type caption_type); - // - int sub_stop_atsc_cc(); - static void close_caption_callback(char *str, int cnt, int data_buf[], int cmd_buf[], void *user_data); - static void atv_vchip_callback(int Is_chg, void *user_data); - int IsVchipChange(); - int ResetVchipChgStat(); + class IObserver { + public: + IObserver() {}; + virtual ~IObserver() {}; + //virtual void onEvent(const CloseCaptionEvent &ev); + virtual void updateSubtitle(int, int) {}; + }; + + AM_SUB2_Handle_t sub_handle; + AM_PES_Handle_t pes_handle; + int dmx_id; + int filter_handle; + int bmp_w; + int bmp_h; + int bmp_pitch; + unsigned char *buffer; + int sub_w; + int sub_h; + pthread_mutex_t lock; + + IObserver *mpObser; + CTvSubtitle(); + ~CTvSubtitle(); + + class CloseCaptionEvent: public CTvEv { + public: + //static const int CC_CMD_LEN = 128; + //static const int CC_DATA_LEN = 512; + CloseCaptionEvent(): CTvEv(CTvEv::TV_EVENT_CC) + { + } + ~CloseCaptionEvent() + { + } + public: + int mCmdBufSize; + int *mpCmdBuffer; + int mDataBufSize; + int *mpDataBuffer; + }; + + void setObserver(IObserver *pObser); + void setBuffer(char *share_mem); + void stopDecoder(); + /** + * 开始字幕信æ¯è§£æžshowboz sync + */ + void startSub(); + /** + * åœæ­¢å›¾æ–‡/字幕信æ¯è§£æž + */ + void stop(); + + /** + * åœæ­¢å›¾æ–‡/字幕信æ¯è§£æžå¹¶æ¸…é™¤ç¼“å­˜æ•°æ® + */ + void clear(); + /** + * 在图文模å¼ä¸‹è¿›å…¥ä¸‹ä¸€é¡µ + */ + void nextPage(); + /** + * 在图文模å¼ä¸‹è¿›å…¥ä¸Šä¸€é¡µ + */ + void previousPage(); + /** + * 在图文模å¼ä¸‹è·³è½¬åˆ°æŒ‡å®šé¡µ + * @param page è¦è·³è½¬åˆ°çš„é¡µå· + */ + void gotoPage(int page); + + /** + * 在图文模å¼ä¸‹è·³è½¬åˆ°home页 + */ + void goHome(); + /** + * 在图文模å¼ä¸‹æ ¹æ®é¢œè‰²è·³è½¬åˆ°æŒ‡å®šé“¾æŽ¥ + * @param color 颜色,COLOR_RED/COLOR_GREEN/COLOR_YELLOW/COLOR_BLUE + */ + void colorLink(int color); + + /** + * 在图文模å¼ä¸‹è®¾å®šæœç´¢å­—符串 + * @param pattern æœç´¢åŒ¹é…字符串 + * @param casefold 是å¦åŒºåˆ†å¤§å°å†™ + */ + void setSearchPattern(char *pattern, bool casefold); + /** + * æœç´¢ä¸‹ä¸€é¡µ + */ + void searchNext(); + /** + * æœç´¢ä¸Šä¸€é¡µ + */ + void searchPrevious(); + + int sub_init(int, int); + // + int sub_destroy(); + // + int sub_lock(); + // + int sub_unlock(); + // + int sub_clear(); + // + int sub_switch_status(); + int sub_start_dvb_sub(int dmx_id, int pid, int page_id, int anc_page_id); + // + int sub_start_dtv_tt(int dmx_id, int region_id, int pid, int page, int sub_page, bool is_sub); + // + int sub_stop_dvb_sub(); + // + int sub_stop_dtv_tt(); + // + int sub_tt_goto(int page); + // + int sub_tt_color_link(int color); + // + int sub_tt_home_link(); + // + int sub_tt_next(int dir); + // + int sub_tt_set_search_pattern(char *pattern, bool casefold); + // + int sub_tt_search(int dir); + // + int sub_start_atsc_cc(enum cc_param_country country, enum cc_param_source_type src_type, int channel_num, enum cc_param_caption_type caption_type); + // + int sub_stop_atsc_cc(); + static void close_caption_callback(char *str, int cnt, int data_buf[], int cmd_buf[], void *user_data); + static void atv_vchip_callback(int Is_chg, void *user_data); + int IsVchipChange(); + int ResetVchipChgStat(); private: - /** - * DVB subtitle å‚æ•° - */ - struct DVBSubParams { - int mDmx_id; - int mPid; - int mComposition_page_id; - int mAncillary_page_id; - - /** - * 创建DVB subtitleå‚æ•° - * @param dmx_id 接收使用demux设备的ID - * @param pid subtitleæµçš„PID - * @param page_id 字幕的page_id - * @param anc_page_id 字幕的ancillary_page_id - */ - DVBSubParams() - { - } - DVBSubParams(int dmx_id, int pid, int page_id, int anc_page_id) - { - mDmx_id = dmx_id; - mPid = pid; - mComposition_page_id = page_id; - mAncillary_page_id = anc_page_id; - } - }; - - /** - * 数字电视teletext图文å‚æ•° - */ - struct DTVTTParams { - int mDmx_id; - int mPid; - int mPage_no; - int mSub_page_no; - int mRegion_id; - - DTVTTParams() - { - } - /** - * 创建数字电视teletext图文å‚æ•° - * @param dmx_id 接收使用demux设备的ID - * @param pid 图文信æ¯æµçš„PID - * @param page_no è¦æ˜¾ç¤ºé¡µå· - * @param sub_page_no è¦æ˜¾ç¤ºçš„å­é¡µå· - */ - DTVTTParams(int dmx_id, int pid, int page_no, int sub_page_no, int region_id) - { - mDmx_id = dmx_id; - mPid = pid; - mPage_no = page_no; - mSub_page_no = sub_page_no; - mRegion_id = region_id; - } - }; - - int mSubType; - CloseCaptionEvent mCurCCEv; - int avchip_chg; - bool isSubOpen; + /** + * DVB subtitle å‚æ•° + */ + struct DVBSubParams { + int mDmx_id; + int mPid; + int mComposition_page_id; + int mAncillary_page_id; + + /** + * 创建DVB subtitleå‚æ•° + * @param dmx_id 接收使用demux设备的ID + * @param pid subtitleæµçš„PID + * @param page_id 字幕的page_id + * @param anc_page_id 字幕的ancillary_page_id + */ + DVBSubParams() + { + } + DVBSubParams(int dmx_id, int pid, int page_id, int anc_page_id) + { + mDmx_id = dmx_id; + mPid = pid; + mComposition_page_id = page_id; + mAncillary_page_id = anc_page_id; + } + }; + + /** + * 数字电视teletext图文å‚æ•° + */ + struct DTVTTParams { + int mDmx_id; + int mPid; + int mPage_no; + int mSub_page_no; + int mRegion_id; + + DTVTTParams() + { + } + /** + * 创建数字电视teletext图文å‚æ•° + * @param dmx_id 接收使用demux设备的ID + * @param pid 图文信æ¯æµçš„PID + * @param page_no è¦æ˜¾ç¤ºé¡µå· + * @param sub_page_no è¦æ˜¾ç¤ºçš„å­é¡µå· + */ + DTVTTParams(int dmx_id, int pid, int page_no, int sub_page_no, int region_id) + { + mDmx_id = dmx_id; + mPid = pid; + mPage_no = page_no; + mSub_page_no = sub_page_no; + mRegion_id = region_id; + } + }; + + int mSubType; + CloseCaptionEvent mCurCCEv; + int avchip_chg; + bool isSubOpen; }; #endif //_CTVSUBTITLE_H diff --git a/tvapi/libtv/tv/CTvTime.h b/tvapi/libtv/tv/CTvTime.h index 12a5334..7588704 100644 --- a/tvapi/libtv/tv/CTvTime.h +++ b/tvapi/libtv/tv/CTvTime.h @@ -21,81 +21,81 @@ */ class CTvTime { public: - CTvTime() - { - mDiff = 0; - mHZ = sysconf( _SC_CLK_TCK ); - } + CTvTime() + { + mDiff = 0; + mHZ = sysconf( _SC_CLK_TCK ); + } - /** - *设定当å‰æ—¶é—´ - *@param time 当å‰æ—¶é—´ï¼ˆæ¯«ç§’å•ä½ï¼‰ - */ - long getSysUTCTime() - { - //struct tm tm; - //time_t t; - //int64_t r = mktime_tz(&(tm), NULL); - //time_t t = time(NULL); - //LOGD("---------utc t = %ld time t=%ld", r, t); - return 0; - } - void setTime(long t) - { - //long utcMS; - //time(&utcMS); - //nsecs_t ns = systemTime(CLOCK_REALTIME); - //nsecs_t tm = ns2s(ns); - //unsigned long ticks = times(NULL); - //long tm = ticks/mHZ; - struct sysinfo s_info; - int error; - error = sysinfo(&s_info); + /** + *设定当å‰æ—¶é—´ + *@param time 当å‰æ—¶é—´ï¼ˆæ¯«ç§’å•ä½ï¼‰ + */ + long getSysUTCTime() + { + //struct tm tm; + //time_t t; + //int64_t r = mktime_tz(&(tm), NULL); + //time_t t = time(NULL); + //LOGD("---------utc t = %ld time t=%ld", r, t); + return 0; + } + void setTime(long t) + { + //long utcMS; + //time(&utcMS); + //nsecs_t ns = systemTime(CLOCK_REALTIME); + //nsecs_t tm = ns2s(ns); + //unsigned long ticks = times(NULL); + //long tm = ticks/mHZ; + struct sysinfo s_info; + int error; + error = sysinfo(&s_info); - mDiff = t - s_info.uptime; - LOGD("--- mDiff=%ld", mDiff); - } + mDiff = t - s_info.uptime; + LOGD("--- mDiff=%ld", mDiff); + } - /** - *å–得当å‰æ—¶é—´ - *@return 返回当å‰æ—¶é—´ - */ - long getTime() - { - //long utcMS; - //time(&utcMS); - //nsecs_t ns = systemTime(CLOCK_REALTIME); - //nsecs_t sec = ns2s(ns); + /** + *å–得当å‰æ—¶é—´ + *@return 返回当å‰æ—¶é—´ + */ + long getTime() + { + //long utcMS; + //time(&utcMS); + //nsecs_t ns = systemTime(CLOCK_REALTIME); + //nsecs_t sec = ns2s(ns); - //unsigned long ticks = times(NULL); - //long sec = ticks/mHZ; - struct sysinfo s_info; - int error; - error = sysinfo(&s_info); + //unsigned long ticks = times(NULL); + //long sec = ticks/mHZ; + struct sysinfo s_info; + int error; + error = sysinfo(&s_info); - LOGD("--- mDiff=%ld, sec=%ld", mDiff, s_info.uptime); - return s_info.uptime + mDiff; - } + LOGD("--- mDiff=%ld, sec=%ld", mDiff, s_info.uptime); + return s_info.uptime + mDiff; + } - /** - *å–å¾—TDT/STT与系统时间的差值 - *@return 返回差值时间 - */ - long getDiffTime() - { - return mDiff; - } + /** + *å–å¾—TDT/STT与系统时间的差值 + *@return 返回差值时间 + */ + long getDiffTime() + { + return mDiff; + } - /** - *设置TDT/STT与系统时间的差值 - */ - void setDiffTime(long diff) - { - this->mDiff = diff; - } + /** + *设置TDT/STT与系统时间的差值 + */ + void setDiffTime(long diff) + { + this->mDiff = diff; + } private: - long mDiff; - unsigned long mHZ; + long mDiff; + unsigned long mHZ; }; diff --git a/tvapi/libtv/tv/CTvVchipCheck.cpp b/tvapi/libtv/tv/CTvVchipCheck.cpp index 9573e76..2eb81dd 100644 --- a/tvapi/libtv/tv/CTvVchipCheck.cpp +++ b/tvapi/libtv/tv/CTvVchipCheck.cpp @@ -7,155 +7,155 @@ CTvVchipCheck:: ~CTvVchipCheck() } bool CTvVchipCheck::CheckProgramBlock(int id) { - bool lock = false; - CTvProgram prog; - CTvEvent ev; - int ret = 0; - - ret = CTvProgram::selectByID(id, prog); - if (ret != 0) return false; - - int type = prog.getProgType(); - - if (type == CTvProgram::TYPE_ATV) { - ret = ev.getATVProgEvent(prog.getSrc(), prog.getID(), ev); - } else { - //long epgtime = mDmTime.getTime(); - //ret = ev.getProgPresentEvent(prog.getSrc(),prog.getSourceId(), epgtime, ev); - } - if (ret == 0) { - if (prog.isATSCMode()) { - // ATSC V-Chip - Vector definedRatings = ev.getVChipRatings(); - for (int i = 0; i < definedRatings.size(); i++) { - CTvDimension dm; - if (dm.isBlocked(dm, definedRatings[i])) { - lock = true; - { - /*CurvchipDimension = dm.getName(); - CurvchipAbbrev = dm.getAbbrev(definedRatings[i]->getValue()); - CurvchipText= dm.getText(definedRatings[i]->getValue()); - LOGD("%s, %d Dimension:%s, Abbrev: %s, idx:%d","TV",__LINE__,CurvchipDimension.string(), - CurvchipAbbrev.string(),definedRatings[i]->getValue());*/ - } - break; - } - } - } - } else { - LOGD("Present event of playing program not received yet, will unblock this program."); - } - - return lock; + bool lock = false; + CTvProgram prog; + CTvEvent ev; + int ret = 0; + + ret = CTvProgram::selectByID(id, prog); + if (ret != 0) return false; + + int type = prog.getProgType(); + + if (type == CTvProgram::TYPE_ATV) { + ret = ev.getATVProgEvent(prog.getSrc(), prog.getID(), ev); + } else { + //long epgtime = mDmTime.getTime(); + //ret = ev.getProgPresentEvent(prog.getSrc(),prog.getSourceId(), epgtime, ev); + } + if (ret == 0) { + if (prog.isATSCMode()) { + // ATSC V-Chip + Vector definedRatings = ev.getVChipRatings(); + for (int i = 0; i < definedRatings.size(); i++) { + CTvDimension dm; + if (dm.isBlocked(dm, definedRatings[i])) { + lock = true; + { + /*CurvchipDimension = dm.getName(); + CurvchipAbbrev = dm.getAbbrev(definedRatings[i]->getValue()); + CurvchipText= dm.getText(definedRatings[i]->getValue()); + LOGD("%s, %d Dimension:%s, Abbrev: %s, idx:%d","TV",__LINE__,CurvchipDimension.string(), + CurvchipAbbrev.string(),definedRatings[i]->getValue());*/ + } + break; + } + } + } + } else { + LOGD("Present event of playing program not received yet, will unblock this program."); + } + + return lock; } void *CTvVchipCheck::VchipCheckingThread ( void *arg ) { - /*CTv *pt = static_cast ( arg ); - - if ( !pt->IsVchipEnable() ) { - return NULL; - } - - while ( pt->mvchip_running ) { - bool lock = 0; - String8 curdm; - String8 curabbrev; - tvin_info_t siginfo = pt->Tv_GetCurrentSignalInfo(); - - //if ( TVIN_SIG_STATUS_STABLE == siginfo.status ) { - lock = pt->mTvVchip.CheckProgramBlock ( pt->getDTVProgramID() ); - curdm = pt->mTvVchip.getCurdimension(); - curabbrev = pt->mTvVchip.getCurAbbr(); - - if ( ( lock != pt->mlastlockstatus ) || ( pt->mlastdm != curdm ) || ( pt->mlastabbrev != curabbrev ) ) { - pt->mlastlockstatus = lock; - pt->mlastdm = curdm; - pt->mlastabbrev = curabbrev; - BlockEvent evt; - - if ( lock ) { - evt.programBlockType = 0; - evt.block_status = 1; - evt.vchipDimension = curdm; - evt.vchipAbbrev = curdm; - LOGD ( "%s, %d block the program by type %s, %s", "TV", __LINE__, curdm.string(), curabbrev.string() ); - } else { - LOGD ( "unblock the program" ); - evt.programBlockType = 0; - evt.block_status = 0; - } - - pt->sendTvEvent ( evt ); - pt->Programblock ( lock ); - } - - usleep ( 1000 * 1000 ); - //} else { - //usleep ( 500 * 1000 ); - //} - }*/ - - return NULL; + /*CTv *pt = static_cast ( arg ); + + if ( !pt->IsVchipEnable() ) { + return NULL; + } + + while ( pt->mvchip_running ) { + bool lock = 0; + String8 curdm; + String8 curabbrev; + tvin_info_t siginfo = pt->Tv_GetCurrentSignalInfo(); + + //if ( TVIN_SIG_STATUS_STABLE == siginfo.status ) { + lock = pt->mTvVchip.CheckProgramBlock ( pt->getDTVProgramID() ); + curdm = pt->mTvVchip.getCurdimension(); + curabbrev = pt->mTvVchip.getCurAbbr(); + + if ( ( lock != pt->mlastlockstatus ) || ( pt->mlastdm != curdm ) || ( pt->mlastabbrev != curabbrev ) ) { + pt->mlastlockstatus = lock; + pt->mlastdm = curdm; + pt->mlastabbrev = curabbrev; + BlockEvent evt; + + if ( lock ) { + evt.programBlockType = 0; + evt.block_status = 1; + evt.vchipDimension = curdm; + evt.vchipAbbrev = curdm; + LOGD ( "%s, %d block the program by type %s, %s", "TV", __LINE__, curdm.string(), curabbrev.string() ); + } else { + LOGD ( "unblock the program" ); + evt.programBlockType = 0; + evt.block_status = 0; + } + + pt->sendTvEvent ( evt ); + pt->Programblock ( lock ); + } + + usleep ( 1000 * 1000 ); + //} else { + //usleep ( 500 * 1000 ); + //} + }*/ + + return NULL; } int CTvVchipCheck::stopVChipCheck() { - CMutex::Autolock _l ( mLock ); - LOGD ( "stopVChipCheck() and exit thread" ); - requestExit(); - return 0; + CMutex::Autolock _l ( mLock ); + LOGD ( "stopVChipCheck() and exit thread" ); + requestExit(); + return 0; } int CTvVchipCheck::pauseVChipCheck() { - CMutex::Autolock _l ( mLock ); - LOGD ( "pauseVChipCheck() set request pause flag, when flag true, thread loop go pause on condition" ); - m_request_pause_detect = true; - return 0; + CMutex::Autolock _l ( mLock ); + LOGD ( "pauseVChipCheck() set request pause flag, when flag true, thread loop go pause on condition" ); + m_request_pause_detect = true; + return 0; } int CTvVchipCheck::requestAndWaitPauseVChipCheck() { - CMutex::Autolock _l ( mLock ); - LOGD ( "requestAndWaitPauseVChipCheck(),first set pause flag to true, and wait when loop run to pause code segment" ); - m_request_pause_detect = true; + CMutex::Autolock _l ( mLock ); + LOGD ( "requestAndWaitPauseVChipCheck(),first set pause flag to true, and wait when loop run to pause code segment" ); + m_request_pause_detect = true; - if ( mDetectState == STATE_RUNNING ) { - mRequestPauseCondition.wait ( mLock ); - } + if ( mDetectState == STATE_RUNNING ) { + mRequestPauseCondition.wait ( mLock ); + } - return 0; + return 0; } int CTvVchipCheck::resumeVChipCheck() { - CMutex::Autolock _l ( mLock ); - LOGD ( "resumeVChipCheck() first set flag false, and signal to paused condition, let run loop" ); - m_request_pause_detect = false; - mDetectPauseCondition.signal(); - return 0; + CMutex::Autolock _l ( mLock ); + LOGD ( "resumeVChipCheck() first set flag false, and signal to paused condition, let run loop" ); + m_request_pause_detect = false; + mDetectPauseCondition.signal(); + return 0; } bool CTvVchipCheck::threadLoop() { - while ( !exitPending() ) { //requietexit() or requietexitWait() not call - while ( m_request_pause_detect ) { - mRequestPauseCondition.broadcast(); - mLock.lock(); - mDetectState = STATE_PAUSE; - mDetectPauseCondition.wait ( mLock ); //first unlock,when return,lock again,so need,call unlock - mDetectState = STATE_RUNNING; - mLock.unlock(); - } - //loop codes - - if ( !m_request_pause_detect ) { //not request pause, sleep 1s which loop - usleep ( 1000 * 1000 ); - } - } - //exit - mDetectState = STATE_STOPED; - //return true, run again, return false,not run. - return false; + while ( !exitPending() ) { //requietexit() or requietexitWait() not call + while ( m_request_pause_detect ) { + mRequestPauseCondition.broadcast(); + mLock.lock(); + mDetectState = STATE_PAUSE; + mDetectPauseCondition.wait ( mLock ); //first unlock,when return,lock again,so need,call unlock + mDetectState = STATE_RUNNING; + mLock.unlock(); + } + //loop codes + + if ( !m_request_pause_detect ) { //not request pause, sleep 1s which loop + usleep ( 1000 * 1000 ); + } + } + //exit + mDetectState = STATE_STOPED; + //return true, run again, return false,not run. + return false; } diff --git a/tvapi/libtv/tv/CTvVchipCheck.h b/tvapi/libtv/tv/CTvVchipCheck.h index 1a33d23..d254c6c 100644 --- a/tvapi/libtv/tv/CTvVchipCheck.h +++ b/tvapi/libtv/tv/CTvVchipCheck.h @@ -24,26 +24,26 @@ // TV ATSC rating dimension class CTvVchipCheck: public CThread { public: - CTvVchipCheck(); - ~CTvVchipCheck(); - bool CheckProgramBlock(int id); - static void *VchipCheckingThread ( void *arg ); - int startVChipCheck(); - int stopVChipCheck(); - int pauseVChipCheck(); - int resumeVChipCheck(); - int requestAndWaitPauseVChipCheck(); + CTvVchipCheck(); + ~CTvVchipCheck(); + bool CheckProgramBlock(int id); + static void *VchipCheckingThread ( void *arg ); + int startVChipCheck(); + int stopVChipCheck(); + int pauseVChipCheck(); + int resumeVChipCheck(); + int requestAndWaitPauseVChipCheck(); private: - bool threadLoop(); - mutable CMutex mLock; - CCondition mDetectPauseCondition; - CCondition mRequestPauseCondition; - volatile bool m_request_pause_detect; - enum DetectState { - STATE_STOPED = 0, - STATE_RUNNING, - STATE_PAUSE - }; - int mDetectState; + bool threadLoop(); + mutable CMutex mLock; + CCondition mDetectPauseCondition; + CCondition mRequestPauseCondition; + volatile bool m_request_pause_detect; + enum DetectState { + STATE_STOPED = 0, + STATE_RUNNING, + STATE_PAUSE + }; + int mDetectState; }; #endif //_CTVDIMENSION_H diff --git a/tvapi/libtv/tv/CUpgradeFBC.cpp b/tvapi/libtv/tv/CUpgradeFBC.cpp index 6710217..0adad5a 100644 --- a/tvapi/libtv/tv/CUpgradeFBC.cpp +++ b/tvapi/libtv/tv/CUpgradeFBC.cpp @@ -17,540 +17,540 @@ CUpgradeFBC::CUpgradeFBC() { - mUpgradeMode = CC_UPGRADE_MODE_MAIN; - mFileName[0] = 0; - - mOPTotalSize = 0; - mBinFileSize = 0; - mBinFileBuf = NULL; - mUpgradeBlockSize = 0x10000; - - mpObserver = NULL; - mState = STATE_STOPED; - mCfbcIns = GetSingletonFBC(); - mCfbcIns->SetUpgradeFlag(0); + mUpgradeMode = CC_UPGRADE_MODE_MAIN; + mFileName[0] = 0; + + mOPTotalSize = 0; + mBinFileSize = 0; + mBinFileBuf = NULL; + mUpgradeBlockSize = 0x10000; + + mpObserver = NULL; + mState = STATE_STOPED; + mCfbcIns = GetSingletonFBC(); + mCfbcIns->SetUpgradeFlag(0); } CUpgradeFBC::~CUpgradeFBC() { - if (mBinFileBuf != NULL) { - delete mBinFileBuf; - mBinFileBuf = NULL; - } + if (mBinFileBuf != NULL) { + delete mBinFileBuf; + mBinFileBuf = NULL; + } } int CUpgradeFBC::start() { - if (mState == STATE_STOPED || mState == STATE_ABORT || mState == STATE_FINISHED) { - mCfbcIns->SetUpgradeFlag(1); + if (mState == STATE_STOPED || mState == STATE_ABORT || mState == STATE_FINISHED) { + mCfbcIns->SetUpgradeFlag(1); - this->run(); - } + this->run(); + } - return 0; + return 0; } int CUpgradeFBC::stop() { - requestExit(); - mState = STATE_STOPED; + requestExit(); + mState = STATE_STOPED; - return 0; + return 0; } int CUpgradeFBC::GetUpgradeFBCProgress() { - return 0; + return 0; } int CUpgradeFBC::SetUpgradeFileName(char *file_name) { - if (file_name == NULL) { - return -1; - } + if (file_name == NULL) { + return -1; + } - strcpy(mFileName, file_name); + strcpy(mFileName, file_name); - return 0; + return 0; } int CUpgradeFBC::SetUpgradeFileSize(int file_size) { - mBinFileSize = file_size; - return 0; + mBinFileSize = file_size; + return 0; } int CUpgradeFBC::SetUpgradeBlockSize(int block_size) { - mUpgradeBlockSize = block_size; - return 0; + mUpgradeBlockSize = block_size; + return 0; } int CUpgradeFBC::SetUpgradeMode(int mode) { - int tmp_val = 0; + int tmp_val = 0; - tmp_val = mUpgradeMode; - mUpgradeMode = mode; + tmp_val = mUpgradeMode; + mUpgradeMode = mode; - return tmp_val; + return tmp_val; } int CUpgradeFBC::AddCRCToDataBuf(unsigned char data_buf[], int data_len) { - unsigned int tmp_crc = 0; + unsigned int tmp_crc = 0; - tmp_crc = mCfbcIns->Calcrc32(0, data_buf, data_len); - data_buf[data_len + 0] = (tmp_crc >> 0) & 0xFF; - data_buf[data_len + 1] = (tmp_crc >> 8) & 0xFF; - data_buf[data_len + 2] = (tmp_crc >> 16) & 0xFF; - data_buf[data_len + 3] = (tmp_crc >> 24) & 0xFF; + tmp_crc = mCfbcIns->Calcrc32(0, data_buf, data_len); + data_buf[data_len + 0] = (tmp_crc >> 0) & 0xFF; + data_buf[data_len + 1] = (tmp_crc >> 8) & 0xFF; + data_buf[data_len + 2] = (tmp_crc >> 16) & 0xFF; + data_buf[data_len + 3] = (tmp_crc >> 24) & 0xFF; - return 0; + return 0; } bool CUpgradeFBC::threadLoop() { - int file_handle = -1; - int i = 0, tmp_flag = 0, cmd_len = 0, tmp_prog = 0, total_item = 0; - int start_off = 0, end_off = 0, cur_off = 0, old_off = 0, rw_size = 0; - int upgrade_version = 0, upgrade_flag = 0, upgrade_err_code = 0, upgrade_try_cnt = 0; - int upgrade_pq_wb_flag = 0; - unsigned char tmp_buf[128] = {0}; - - if (mpObserver == NULL) { - return false; - } - - LOGD("%s, entering...\n", "TV"); - - prctl(PR_SET_NAME, (unsigned long)"CUpgradeFBC thread loop"); - - mState = STATE_RUNNING; - - LOGD("%s, upgrade mode = %d\n", __FUNCTION__, mUpgradeMode); - if (mUpgradeMode != CC_UPGRADE_MODE_BOOT_MAIN && mUpgradeMode != CC_UPGRADE_MODE_BOOT && - mUpgradeMode != CC_UPGRADE_MODE_MAIN && mUpgradeMode != CC_UPGRADE_MODE_COMPACT_BOOT && - mUpgradeMode != CC_UPGRADE_MODE_ALL && mUpgradeMode != CC_UPGRADE_MODE_MAIN_PQ_WB && - mUpgradeMode != CC_UPGRADE_MODE_ALL_PQ_WB && mUpgradeMode != CC_UPGRADE_MODE_MAIN_WB && - mUpgradeMode != CC_UPGRADE_MODE_ALL_WB && mUpgradeMode != CC_UPGRADE_MODE_MAIN_PQ && - mUpgradeMode != CC_UPGRADE_MODE_ALL_PQ && mUpgradeMode != CC_UPGRADE_MODE_PQ_WB_ONLY && - mUpgradeMode != CC_UPGRADE_MODE_WB_ONLY && mUpgradeMode != CC_UPGRADE_MODE_PQ_ONLY && - mUpgradeMode != CC_UPGRADE_MODE_CUR_PQ_BIN && mUpgradeMode != CC_UPGRADE_MODE_BURN && - mUpgradeMode != CC_UPGRADE_MODE_DUMMY) { - mState = STATE_ABORT; - upgrade_err_code = ERR_NOT_SUPPORT_UPGRADE_MDOE; - mpObserver->onUpgradeStatus(mState, upgrade_err_code); - mCfbcIns->SetUpgradeFlag(0); - - return false; - } - - if (mUpgradeBlockSize % 0x1000 != 0) { - mState = STATE_ABORT; - upgrade_err_code = ERR_NOT_CORRECT_UPGRADE_BLKSIZE; - mpObserver->onUpgradeStatus(mState, upgrade_err_code); - mCfbcIns->SetUpgradeFlag(0); - - return false; - } - - struct stat tmp_st; - stat(mFileName, &tmp_st); - if (tmp_st.st_size == CC_FBC_V01_FILE_SIZE) { - upgrade_version = CC_FBC_V01_00_VAL; - mOPTotalSize = CC_UPGRADE_V01_ALL_LENGTH; - mBinFileSize = CC_FBC_V01_FILE_SIZE; - } else if (tmp_st.st_size == CC_FBC_V02_FILE_SIZE) { - upgrade_version = CC_FBC_V02_00_VAL; - mOPTotalSize = CC_UPGRADE_V02_ALL_LENGTH; - mBinFileSize = CC_FBC_V02_FILE_SIZE; - } else if (tmp_st.st_size == CC_FBC_V02_CUR_PQ_BIN_FILE_SIZE) { - upgrade_version = CC_FBC_V02_01_VAL; - mOPTotalSize = CC_UPGRADE_V02_ALL_LENGTH; - mBinFileSize = CC_FBC_V02_CUR_PQ_BIN_FILE_SIZE; - } else if (tmp_st.st_size == CC_FBC_V03_FILE_SIZE) { - upgrade_version = CC_FBC_V03_00_VAL; - mOPTotalSize = CC_UPGRADE_V03_ALL_LENGTH; - mBinFileSize = CC_FBC_V03_FILE_SIZE; - } else if (tmp_st.st_size == CC_FBC_V03_CUR_PQ_BIN_FILE_SIZE) { - upgrade_version = CC_FBC_V03_01_VAL; - mOPTotalSize = CC_UPGRADE_V03_ALL_LENGTH; - mBinFileSize = CC_FBC_V03_CUR_PQ_BIN_FILE_SIZE; - } else { - upgrade_version = 0; - mOPTotalSize = 0; - mBinFileSize = 0; - mState = STATE_ABORT; - upgrade_err_code = ERR_BIN_FILE_SIZE; - mpObserver->onUpgradeStatus(mState, upgrade_err_code); - mCfbcIns->SetUpgradeFlag(0); - return false; - } - - //open upgrade source file and read it to temp buffer. - file_handle = open(mFileName, O_RDONLY); - if (file_handle < 0) { - LOGE("%s, Can't Open file %s\n", __FUNCTION__, mFileName); - mState = STATE_ABORT; - upgrade_err_code = ERR_OPEN_BIN_FILE; - mpObserver->onUpgradeStatus(mState, upgrade_err_code); - mCfbcIns->SetUpgradeFlag(0); - return false; - } - - lseek(file_handle, 0, SEEK_SET); - - mBinFileBuf = new unsigned char[mOPTotalSize]; - - memset(mBinFileBuf, 0, mOPTotalSize); - rw_size = read(file_handle, mBinFileBuf, mBinFileSize); - if (rw_size != mBinFileSize || rw_size <= 0) { - LOGE("%s, read file %s error(%d, %d)\n", __FUNCTION__, mFileName, mBinFileSize, rw_size); - mState = STATE_ABORT; - upgrade_err_code = ERR_READ_BIN_FILE; - mpObserver->onUpgradeStatus(mState, upgrade_err_code); - mCfbcIns->SetUpgradeFlag(0); - - if (mBinFileBuf != NULL) { - delete mBinFileBuf; - mBinFileBuf = NULL; - } - return false; - } - - close(file_handle); - file_handle = -1; - - if (upgrade_version == CC_FBC_V02_00_VAL) { - memcpy((void *)(mBinFileBuf + CC_UPGRADE_V02_BOOT_BAK_OFFSET), (void *)(mBinFileBuf + CC_UPGRADE_V02_BOOT_OFFSET), CC_UPGRADE_V02_BOOT_LEN); - memcpy((void *)(mBinFileBuf + CC_UPGRADE_V02_MAIN_BAK_OFFSET), (void *)(mBinFileBuf + CC_UPGRADE_V02_MAIN_OFFSET), CC_UPGRADE_V02_MAIN_LEN); - } else if (upgrade_version == CC_FBC_V02_01_VAL) { - memcpy((void *)(mBinFileBuf + CC_UPGRADE_V02_CUR_PQ_OFFSET), (void *)(mBinFileBuf + 0), CC_FBC_V02_CUR_PQ_BIN_FILE_SIZE); - } else if (upgrade_version == CC_FBC_V03_01_VAL) { - memcpy((void *)(mBinFileBuf + CC_UPGRADE_V03_CUR_PQ_OFFSET), (void *)(mBinFileBuf + 0), CC_FBC_V03_CUR_PQ_BIN_FILE_SIZE); - } - - //calculate start addr - if (upgrade_version == CC_FBC_V01_00_VAL) { - start_off = CC_UPGRADE_V01_MAIN_OFFSET; - end_off = 0; - if (mUpgradeMode == CC_UPGRADE_MODE_ALL || mUpgradeMode == CC_UPGRADE_MODE_BOOT_MAIN) { - start_off = CC_UPGRADE_V01_BOOT_OFFSET; - end_off = CC_UPGRADE_V01_BOOT_OFFSET + CC_UPGRADE_V01_ALL_LENGTH; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_BOOT) { - start_off = CC_UPGRADE_V01_BOOT_OFFSET; - end_off = CC_UPGRADE_V01_BOOT_OFFSET + CC_UPGRADE_V01_BOOT_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_MAIN) { - start_off = CC_UPGRADE_V01_MAIN_OFFSET; - end_off = CC_UPGRADE_V01_MAIN_OFFSET + CC_UPGRADE_V01_MAIN_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } - } else if (upgrade_version == CC_FBC_V02_00_VAL) { - start_off = CC_UPGRADE_V02_MAIN_OFFSET; - end_off = 0; - if (mUpgradeMode == CC_UPGRADE_MODE_ALL || mUpgradeMode == CC_UPGRADE_MODE_ALL_PQ_WB || - mUpgradeMode == CC_UPGRADE_MODE_ALL_WB || mUpgradeMode == CC_UPGRADE_MODE_ALL_PQ) { - start_off = CC_UPGRADE_V02_COMPACT_BOOT_OFFSET; - end_off = CC_UPGRADE_V02_COMPACT_BOOT_OFFSET + CC_UPGRADE_V02_ALL_LENGTH; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_BOOT) { - start_off = CC_UPGRADE_V02_BOOT_OFFSET; - end_off = CC_UPGRADE_V02_BOOT_OFFSET + CC_UPGRADE_V02_BOOT_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_MAIN || mUpgradeMode == CC_UPGRADE_MODE_MAIN_PQ_WB || - mUpgradeMode == CC_UPGRADE_MODE_MAIN_WB || mUpgradeMode == CC_UPGRADE_MODE_MAIN_PQ ) { - start_off = CC_UPGRADE_V02_MAIN_OFFSET; - end_off = CC_UPGRADE_V02_MAIN_OFFSET + CC_UPGRADE_V02_MAIN_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_COMPACT_BOOT) { - start_off = CC_UPGRADE_V02_COMPACT_BOOT_OFFSET; - end_off = CC_UPGRADE_V02_COMPACT_BOOT_OFFSET + CC_UPGRADE_V02_COMPACT_BOOT_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_BOOT_MAIN) { - start_off = CC_UPGRADE_V02_BOOT_OFFSET; - end_off = CC_UPGRADE_V02_BOOT_OFFSET + CC_UPGRADE_V02_BOOT_LEN + CC_UPGRADE_V02_MAIN_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } - } else if (upgrade_version == CC_FBC_V02_01_VAL) { - start_off = CC_UPGRADE_V02_CUR_PQ_OFFSET; - end_off = 0; - if (mUpgradeMode == CC_UPGRADE_MODE_CUR_PQ_BIN) { - start_off = CC_UPGRADE_V02_CUR_PQ_OFFSET; - end_off = CC_UPGRADE_V02_CUR_PQ_OFFSET + CC_FBC_V02_CUR_PQ_BIN_FILE_SIZE; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } - } else if (upgrade_version == CC_FBC_V03_00_VAL) { - start_off = CC_UPGRADE_V03_MAIN_OFFSET; - end_off = 0; - if (mUpgradeMode == CC_UPGRADE_MODE_ALL || mUpgradeMode == CC_UPGRADE_MODE_ALL_PQ_WB || - mUpgradeMode == CC_UPGRADE_MODE_ALL_WB || mUpgradeMode == CC_UPGRADE_MODE_ALL_PQ) { - start_off = CC_UPGRADE_V03_COMPACT_BOOT_OFFSET; - end_off = CC_UPGRADE_V03_COMPACT_BOOT_OFFSET + CC_UPGRADE_V03_ALL_LENGTH; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_BOOT) { - start_off = CC_UPGRADE_V03_BOOT_OFFSET; - end_off = CC_UPGRADE_V03_BOOT_OFFSET + CC_UPGRADE_V03_BOOT_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_MAIN || mUpgradeMode == CC_UPGRADE_MODE_MAIN_PQ_WB || - mUpgradeMode == CC_UPGRADE_MODE_MAIN_WB || mUpgradeMode == CC_UPGRADE_MODE_MAIN_PQ ) { - start_off = CC_UPGRADE_V03_MAIN_OFFSET; - end_off = CC_UPGRADE_V03_MAIN_OFFSET + CC_UPGRADE_V03_MAIN_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_COMPACT_BOOT) { - start_off = CC_UPGRADE_V03_COMPACT_BOOT_OFFSET; - end_off = CC_UPGRADE_V03_COMPACT_BOOT_OFFSET + CC_UPGRADE_V03_COMPACT_BOOT_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_BOOT_MAIN) { - start_off = CC_UPGRADE_V03_BOOT_OFFSET; - end_off = CC_UPGRADE_V03_BOOT_OFFSET + CC_UPGRADE_V03_BOOT_LEN + CC_UPGRADE_V03_MAIN_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_BURN) { - start_off = CC_UPGRADE_V03_COMPACT_BOOT_OFFSET; - end_off = CC_UPGRADE_V03_COMPACT_BOOT_OFFSET + CC_FBC_V03_FILE_SIZE; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } - } else if (upgrade_version == CC_FBC_V03_01_VAL) { - start_off = CC_UPGRADE_V03_CUR_PQ_OFFSET; - end_off = 0; - if (mUpgradeMode == CC_UPGRADE_MODE_CUR_PQ_BIN) { - start_off = CC_UPGRADE_V03_CUR_PQ_OFFSET; - end_off = CC_UPGRADE_V03_CUR_PQ_OFFSET + CC_FBC_V03_CUR_PQ_BIN_FILE_SIZE; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } - } - - //let's try set default pq & wb - if (upgrade_version == CC_FBC_V02_00_VAL || upgrade_version == CC_FBC_V03_00_VAL) { - if (mUpgradeMode == CC_UPGRADE_MODE_ALL_PQ_WB || mUpgradeMode == CC_UPGRADE_MODE_MAIN_PQ_WB || - mUpgradeMode == CC_UPGRADE_MODE_PQ_WB_ONLY) { - mDataBuf[6] = 3; - upgrade_pq_wb_flag = 1; - } else if (mUpgradeMode == CC_UPGRADE_MODE_MAIN_WB || mUpgradeMode == CC_UPGRADE_MODE_ALL_WB || - mUpgradeMode == CC_UPGRADE_MODE_WB_ONLY) { - mDataBuf[6] = 2; - upgrade_pq_wb_flag = 1; - } else if (mUpgradeMode == CC_UPGRADE_MODE_MAIN_PQ || mUpgradeMode == CC_UPGRADE_MODE_ALL_PQ || - mUpgradeMode == CC_UPGRADE_MODE_PQ_ONLY) { - mDataBuf[6] = 1; - upgrade_pq_wb_flag = 1; - } else { - upgrade_pq_wb_flag = 0; - } - - if (upgrade_pq_wb_flag == 1) { - cmd_len = 7; - mDataBuf[0] = 0x5A; - mDataBuf[1] = 0x5A; - mDataBuf[2] = cmd_len + 4; - mDataBuf[3] = 0x00; - mDataBuf[4] = 0x00; - mDataBuf[5] = CMD_CLR_SETTINGS_DEFAULT; - - AddCRCToDataBuf(mDataBuf, cmd_len); - if (mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, mDataBuf, cmd_len + 4, 0) <= 0) { - mState = STATE_ABORT; - upgrade_err_code = ERR_SERIAL_CONNECT; - mpObserver->onUpgradeStatus(mState, upgrade_err_code); - mCfbcIns->SetUpgradeFlag(0); - - if (mBinFileBuf != NULL) { - delete mBinFileBuf; - mBinFileBuf = NULL; - } - return false; - } - - usleep(3000 * 1000); - - if (mUpgradeMode == CC_UPGRADE_MODE_PQ_WB_ONLY || mUpgradeMode == CC_UPGRADE_MODE_WB_ONLY || - mUpgradeMode == CC_UPGRADE_MODE_PQ_ONLY) { - system("reboot"); - return false; - } - } - } - - //send upgrade command - cmd_len = 10; - mDataBuf[0] = 0x5A; - mDataBuf[1] = 0x5A; - mDataBuf[2] = cmd_len + 4; - mDataBuf[3] = 0x00; - mDataBuf[4] = 0x00; - mDataBuf[5] = 0x01; - mDataBuf[6] = 0x88; - mDataBuf[7] = 0x88; - mDataBuf[8] = 0x88; - mDataBuf[9] = 0x88; - AddCRCToDataBuf(mDataBuf, cmd_len); - if (mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, mDataBuf, cmd_len + 4, 0) <= 0) { - mState = STATE_ABORT; - upgrade_err_code = ERR_SERIAL_CONNECT; - mpObserver->onUpgradeStatus(mState, upgrade_err_code); - mCfbcIns->SetUpgradeFlag(0); - - if (mBinFileBuf != NULL) { - delete mBinFileBuf; - mBinFileBuf = NULL; - } - return false; - } - - //waiting fbc restart - usleep(5000 * 1000); - - if (mUpgradeMode == CC_UPGRADE_MODE_DUMMY) { - //dummy test mode - - //wait 10 second - usleep(10000 * 1000); - - //send reboot command to reboot fbc - sprintf((char *)tmp_buf, "reboot\n"); - cmd_len = strlen((char *)tmp_buf); - mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, tmp_buf, cmd_len, 0); - usleep(400 * 1000); - - mpObserver->onUpgradeStatus(mState, 100); - - usleep(100 * 1000); - mState = STATE_FINISHED; - mpObserver->onUpgradeStatus(mState, 0); - - if (mBinFileBuf != NULL) { - delete mBinFileBuf; - mBinFileBuf = NULL; - } - return false; - } - - tmp_prog += 1; - mpObserver->onUpgradeStatus(mState, tmp_prog * 100 / total_item); - - cur_off = start_off; - old_off = cur_off; - - upgrade_flag = 0; - while (!exitPending()) { //requietexit() or requietexitWait() not call - if (cur_off >= end_off) { - upgrade_flag = 1; - break; - } - - //copy data from file temp buffer - if (end_off - cur_off < mUpgradeBlockSize) { - rw_size = end_off - cur_off; - } else { - rw_size = mUpgradeBlockSize; - } - - memcpy(mDataBuf, mBinFileBuf + cur_off, rw_size); - - //send upgrade start addr and write size - sprintf((char *)tmp_buf, "upgrade 0x%x 0x%x\n", cur_off, rw_size); - LOGD("\n\n%s, %s\n", __FUNCTION__, tmp_buf); - cmd_len = strlen((char *)tmp_buf); - if (mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, tmp_buf, cmd_len, 0) <= 0) { - mState = STATE_ABORT; - upgrade_err_code = ERR_SERIAL_CONNECT; - upgrade_flag = 0; - break; - } - usleep(500 * 1000); - - //send upgrade data - if (mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, mDataBuf, rw_size, 0) <= 0) { - mState = STATE_ABORT; - upgrade_err_code = ERR_SERIAL_CONNECT; - upgrade_flag = 0; - break; - } - - //send upgrade data crc - AddCRCToDataBuf(mDataBuf, rw_size); - if (mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, mDataBuf + rw_size, 4, 0) <= 0) { - mState = STATE_ABORT; - upgrade_err_code = ERR_SERIAL_CONNECT; - upgrade_flag = 0; - break; - } - - old_off = cur_off; - cur_off += rw_size; - - //deal with fbc response - tmp_flag = 0; - memset(mDataBuf, 0, CC_UPGRADE_DATA_BUF_SIZE); - rw_size = mCfbcIns->uartReadStream(mDataBuf, CC_UPGRADE_DATA_BUF_SIZE, 2000); - for (i = 0; i < rw_size - 3; i++) { - if ((0x5A == mDataBuf[i]) && (0x5A == mDataBuf[i + 1]) && (0x5A == mDataBuf[i + 2])) { - LOGD("%s, fbc write data at 0x%x ok!\n", __FUNCTION__, old_off); - tmp_flag = 1; - break; - } - } - - if (tmp_flag == 0) { - LOGE("%s, fbc write data at 0x%x error! rewrite!\n", __FUNCTION__, old_off); - if (upgrade_try_cnt < 6) { - cur_off = old_off; - upgrade_try_cnt += 1; - - mpObserver->onUpgradeStatus(mState, ERR_DATA_CRC_ERROR); - } else { - LOGE("%s, we have rewrite more than %d times, abort.\n", __FUNCTION__, upgrade_try_cnt); - mState = STATE_ABORT; - upgrade_err_code = ERR_SERIAL_CONNECT; - upgrade_flag = 0; - break; - } - } else { - tmp_prog += 1; - upgrade_try_cnt = 0; - } - - usleep(3000 * 1000); - - mpObserver->onUpgradeStatus(mState, tmp_prog * 100 / total_item); - } - - if (mState == STATE_ABORT) { - mpObserver->onUpgradeStatus(mState, upgrade_err_code); - } else if (mState == STATE_RUNNING) { - if (upgrade_flag == 1) { - sprintf((char *)tmp_buf, "reboot\n"); - cmd_len = strlen((char *)tmp_buf); - mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, tmp_buf, cmd_len, 0); - usleep(400 * 1000); - - tmp_prog += 1; - mpObserver->onUpgradeStatus(mState, tmp_prog * 100 / total_item); - - usleep(100 * 1000); - mState = STATE_FINISHED; - mpObserver->onUpgradeStatus(mState, 0); - } - } else { - if (upgrade_flag == 1) { - tmp_prog += 1; - mpObserver->onUpgradeStatus(mState, tmp_prog * 100 / total_item); - } - } - - mState = STATE_STOPED; - - mCfbcIns->SetUpgradeFlag(0); - - if (mBinFileBuf != NULL) { - delete mBinFileBuf; - mBinFileBuf = NULL; - } - - LOGD("%s, exiting...\n", "TV"); - system("reboot"); - //return true, run again, return false,not run. - return false; + int file_handle = -1; + int i = 0, tmp_flag = 0, cmd_len = 0, tmp_prog = 0, total_item = 0; + int start_off = 0, end_off = 0, cur_off = 0, old_off = 0, rw_size = 0; + int upgrade_version = 0, upgrade_flag = 0, upgrade_err_code = 0, upgrade_try_cnt = 0; + int upgrade_pq_wb_flag = 0; + unsigned char tmp_buf[128] = {0}; + + if (mpObserver == NULL) { + return false; + } + + LOGD("%s, entering...\n", "TV"); + + prctl(PR_SET_NAME, (unsigned long)"CUpgradeFBC thread loop"); + + mState = STATE_RUNNING; + + LOGD("%s, upgrade mode = %d\n", __FUNCTION__, mUpgradeMode); + if (mUpgradeMode != CC_UPGRADE_MODE_BOOT_MAIN && mUpgradeMode != CC_UPGRADE_MODE_BOOT && + mUpgradeMode != CC_UPGRADE_MODE_MAIN && mUpgradeMode != CC_UPGRADE_MODE_COMPACT_BOOT && + mUpgradeMode != CC_UPGRADE_MODE_ALL && mUpgradeMode != CC_UPGRADE_MODE_MAIN_PQ_WB && + mUpgradeMode != CC_UPGRADE_MODE_ALL_PQ_WB && mUpgradeMode != CC_UPGRADE_MODE_MAIN_WB && + mUpgradeMode != CC_UPGRADE_MODE_ALL_WB && mUpgradeMode != CC_UPGRADE_MODE_MAIN_PQ && + mUpgradeMode != CC_UPGRADE_MODE_ALL_PQ && mUpgradeMode != CC_UPGRADE_MODE_PQ_WB_ONLY && + mUpgradeMode != CC_UPGRADE_MODE_WB_ONLY && mUpgradeMode != CC_UPGRADE_MODE_PQ_ONLY && + mUpgradeMode != CC_UPGRADE_MODE_CUR_PQ_BIN && mUpgradeMode != CC_UPGRADE_MODE_BURN && + mUpgradeMode != CC_UPGRADE_MODE_DUMMY) { + mState = STATE_ABORT; + upgrade_err_code = ERR_NOT_SUPPORT_UPGRADE_MDOE; + mpObserver->onUpgradeStatus(mState, upgrade_err_code); + mCfbcIns->SetUpgradeFlag(0); + + return false; + } + + if (mUpgradeBlockSize % 0x1000 != 0) { + mState = STATE_ABORT; + upgrade_err_code = ERR_NOT_CORRECT_UPGRADE_BLKSIZE; + mpObserver->onUpgradeStatus(mState, upgrade_err_code); + mCfbcIns->SetUpgradeFlag(0); + + return false; + } + + struct stat tmp_st; + stat(mFileName, &tmp_st); + if (tmp_st.st_size == CC_FBC_V01_FILE_SIZE) { + upgrade_version = CC_FBC_V01_00_VAL; + mOPTotalSize = CC_UPGRADE_V01_ALL_LENGTH; + mBinFileSize = CC_FBC_V01_FILE_SIZE; + } else if (tmp_st.st_size == CC_FBC_V02_FILE_SIZE) { + upgrade_version = CC_FBC_V02_00_VAL; + mOPTotalSize = CC_UPGRADE_V02_ALL_LENGTH; + mBinFileSize = CC_FBC_V02_FILE_SIZE; + } else if (tmp_st.st_size == CC_FBC_V02_CUR_PQ_BIN_FILE_SIZE) { + upgrade_version = CC_FBC_V02_01_VAL; + mOPTotalSize = CC_UPGRADE_V02_ALL_LENGTH; + mBinFileSize = CC_FBC_V02_CUR_PQ_BIN_FILE_SIZE; + } else if (tmp_st.st_size == CC_FBC_V03_FILE_SIZE) { + upgrade_version = CC_FBC_V03_00_VAL; + mOPTotalSize = CC_UPGRADE_V03_ALL_LENGTH; + mBinFileSize = CC_FBC_V03_FILE_SIZE; + } else if (tmp_st.st_size == CC_FBC_V03_CUR_PQ_BIN_FILE_SIZE) { + upgrade_version = CC_FBC_V03_01_VAL; + mOPTotalSize = CC_UPGRADE_V03_ALL_LENGTH; + mBinFileSize = CC_FBC_V03_CUR_PQ_BIN_FILE_SIZE; + } else { + upgrade_version = 0; + mOPTotalSize = 0; + mBinFileSize = 0; + mState = STATE_ABORT; + upgrade_err_code = ERR_BIN_FILE_SIZE; + mpObserver->onUpgradeStatus(mState, upgrade_err_code); + mCfbcIns->SetUpgradeFlag(0); + return false; + } + + //open upgrade source file and read it to temp buffer. + file_handle = open(mFileName, O_RDONLY); + if (file_handle < 0) { + LOGE("%s, Can't Open file %s\n", __FUNCTION__, mFileName); + mState = STATE_ABORT; + upgrade_err_code = ERR_OPEN_BIN_FILE; + mpObserver->onUpgradeStatus(mState, upgrade_err_code); + mCfbcIns->SetUpgradeFlag(0); + return false; + } + + lseek(file_handle, 0, SEEK_SET); + + mBinFileBuf = new unsigned char[mOPTotalSize]; + + memset(mBinFileBuf, 0, mOPTotalSize); + rw_size = read(file_handle, mBinFileBuf, mBinFileSize); + if (rw_size != mBinFileSize || rw_size <= 0) { + LOGE("%s, read file %s error(%d, %d)\n", __FUNCTION__, mFileName, mBinFileSize, rw_size); + mState = STATE_ABORT; + upgrade_err_code = ERR_READ_BIN_FILE; + mpObserver->onUpgradeStatus(mState, upgrade_err_code); + mCfbcIns->SetUpgradeFlag(0); + + if (mBinFileBuf != NULL) { + delete mBinFileBuf; + mBinFileBuf = NULL; + } + return false; + } + + close(file_handle); + file_handle = -1; + + if (upgrade_version == CC_FBC_V02_00_VAL) { + memcpy((void *)(mBinFileBuf + CC_UPGRADE_V02_BOOT_BAK_OFFSET), (void *)(mBinFileBuf + CC_UPGRADE_V02_BOOT_OFFSET), CC_UPGRADE_V02_BOOT_LEN); + memcpy((void *)(mBinFileBuf + CC_UPGRADE_V02_MAIN_BAK_OFFSET), (void *)(mBinFileBuf + CC_UPGRADE_V02_MAIN_OFFSET), CC_UPGRADE_V02_MAIN_LEN); + } else if (upgrade_version == CC_FBC_V02_01_VAL) { + memcpy((void *)(mBinFileBuf + CC_UPGRADE_V02_CUR_PQ_OFFSET), (void *)(mBinFileBuf + 0), CC_FBC_V02_CUR_PQ_BIN_FILE_SIZE); + } else if (upgrade_version == CC_FBC_V03_01_VAL) { + memcpy((void *)(mBinFileBuf + CC_UPGRADE_V03_CUR_PQ_OFFSET), (void *)(mBinFileBuf + 0), CC_FBC_V03_CUR_PQ_BIN_FILE_SIZE); + } + + //calculate start addr + if (upgrade_version == CC_FBC_V01_00_VAL) { + start_off = CC_UPGRADE_V01_MAIN_OFFSET; + end_off = 0; + if (mUpgradeMode == CC_UPGRADE_MODE_ALL || mUpgradeMode == CC_UPGRADE_MODE_BOOT_MAIN) { + start_off = CC_UPGRADE_V01_BOOT_OFFSET; + end_off = CC_UPGRADE_V01_BOOT_OFFSET + CC_UPGRADE_V01_ALL_LENGTH; + total_item = (end_off - start_off) / mUpgradeBlockSize + 2; + } else if (mUpgradeMode == CC_UPGRADE_MODE_BOOT) { + start_off = CC_UPGRADE_V01_BOOT_OFFSET; + end_off = CC_UPGRADE_V01_BOOT_OFFSET + CC_UPGRADE_V01_BOOT_LEN; + total_item = (end_off - start_off) / mUpgradeBlockSize + 2; + } else if (mUpgradeMode == CC_UPGRADE_MODE_MAIN) { + start_off = CC_UPGRADE_V01_MAIN_OFFSET; + end_off = CC_UPGRADE_V01_MAIN_OFFSET + CC_UPGRADE_V01_MAIN_LEN; + total_item = (end_off - start_off) / mUpgradeBlockSize + 2; + } + } else if (upgrade_version == CC_FBC_V02_00_VAL) { + start_off = CC_UPGRADE_V02_MAIN_OFFSET; + end_off = 0; + if (mUpgradeMode == CC_UPGRADE_MODE_ALL || mUpgradeMode == CC_UPGRADE_MODE_ALL_PQ_WB || + mUpgradeMode == CC_UPGRADE_MODE_ALL_WB || mUpgradeMode == CC_UPGRADE_MODE_ALL_PQ) { + start_off = CC_UPGRADE_V02_COMPACT_BOOT_OFFSET; + end_off = CC_UPGRADE_V02_COMPACT_BOOT_OFFSET + CC_UPGRADE_V02_ALL_LENGTH; + total_item = (end_off - start_off) / mUpgradeBlockSize + 2; + } else if (mUpgradeMode == CC_UPGRADE_MODE_BOOT) { + start_off = CC_UPGRADE_V02_BOOT_OFFSET; + end_off = CC_UPGRADE_V02_BOOT_OFFSET + CC_UPGRADE_V02_BOOT_LEN; + total_item = (end_off - start_off) / mUpgradeBlockSize + 2; + } else if (mUpgradeMode == CC_UPGRADE_MODE_MAIN || mUpgradeMode == CC_UPGRADE_MODE_MAIN_PQ_WB || + mUpgradeMode == CC_UPGRADE_MODE_MAIN_WB || mUpgradeMode == CC_UPGRADE_MODE_MAIN_PQ ) { + start_off = CC_UPGRADE_V02_MAIN_OFFSET; + end_off = CC_UPGRADE_V02_MAIN_OFFSET + CC_UPGRADE_V02_MAIN_LEN; + total_item = (end_off - start_off) / mUpgradeBlockSize + 2; + } else if (mUpgradeMode == CC_UPGRADE_MODE_COMPACT_BOOT) { + start_off = CC_UPGRADE_V02_COMPACT_BOOT_OFFSET; + end_off = CC_UPGRADE_V02_COMPACT_BOOT_OFFSET + CC_UPGRADE_V02_COMPACT_BOOT_LEN; + total_item = (end_off - start_off) / mUpgradeBlockSize + 2; + } else if (mUpgradeMode == CC_UPGRADE_MODE_BOOT_MAIN) { + start_off = CC_UPGRADE_V02_BOOT_OFFSET; + end_off = CC_UPGRADE_V02_BOOT_OFFSET + CC_UPGRADE_V02_BOOT_LEN + CC_UPGRADE_V02_MAIN_LEN; + total_item = (end_off - start_off) / mUpgradeBlockSize + 2; + } + } else if (upgrade_version == CC_FBC_V02_01_VAL) { + start_off = CC_UPGRADE_V02_CUR_PQ_OFFSET; + end_off = 0; + if (mUpgradeMode == CC_UPGRADE_MODE_CUR_PQ_BIN) { + start_off = CC_UPGRADE_V02_CUR_PQ_OFFSET; + end_off = CC_UPGRADE_V02_CUR_PQ_OFFSET + CC_FBC_V02_CUR_PQ_BIN_FILE_SIZE; + total_item = (end_off - start_off) / mUpgradeBlockSize + 2; + } + } else if (upgrade_version == CC_FBC_V03_00_VAL) { + start_off = CC_UPGRADE_V03_MAIN_OFFSET; + end_off = 0; + if (mUpgradeMode == CC_UPGRADE_MODE_ALL || mUpgradeMode == CC_UPGRADE_MODE_ALL_PQ_WB || + mUpgradeMode == CC_UPGRADE_MODE_ALL_WB || mUpgradeMode == CC_UPGRADE_MODE_ALL_PQ) { + start_off = CC_UPGRADE_V03_COMPACT_BOOT_OFFSET; + end_off = CC_UPGRADE_V03_COMPACT_BOOT_OFFSET + CC_UPGRADE_V03_ALL_LENGTH; + total_item = (end_off - start_off) / mUpgradeBlockSize + 2; + } else if (mUpgradeMode == CC_UPGRADE_MODE_BOOT) { + start_off = CC_UPGRADE_V03_BOOT_OFFSET; + end_off = CC_UPGRADE_V03_BOOT_OFFSET + CC_UPGRADE_V03_BOOT_LEN; + total_item = (end_off - start_off) / mUpgradeBlockSize + 2; + } else if (mUpgradeMode == CC_UPGRADE_MODE_MAIN || mUpgradeMode == CC_UPGRADE_MODE_MAIN_PQ_WB || + mUpgradeMode == CC_UPGRADE_MODE_MAIN_WB || mUpgradeMode == CC_UPGRADE_MODE_MAIN_PQ ) { + start_off = CC_UPGRADE_V03_MAIN_OFFSET; + end_off = CC_UPGRADE_V03_MAIN_OFFSET + CC_UPGRADE_V03_MAIN_LEN; + total_item = (end_off - start_off) / mUpgradeBlockSize + 2; + } else if (mUpgradeMode == CC_UPGRADE_MODE_COMPACT_BOOT) { + start_off = CC_UPGRADE_V03_COMPACT_BOOT_OFFSET; + end_off = CC_UPGRADE_V03_COMPACT_BOOT_OFFSET + CC_UPGRADE_V03_COMPACT_BOOT_LEN; + total_item = (end_off - start_off) / mUpgradeBlockSize + 2; + } else if (mUpgradeMode == CC_UPGRADE_MODE_BOOT_MAIN) { + start_off = CC_UPGRADE_V03_BOOT_OFFSET; + end_off = CC_UPGRADE_V03_BOOT_OFFSET + CC_UPGRADE_V03_BOOT_LEN + CC_UPGRADE_V03_MAIN_LEN; + total_item = (end_off - start_off) / mUpgradeBlockSize + 2; + } else if (mUpgradeMode == CC_UPGRADE_MODE_BURN) { + start_off = CC_UPGRADE_V03_COMPACT_BOOT_OFFSET; + end_off = CC_UPGRADE_V03_COMPACT_BOOT_OFFSET + CC_FBC_V03_FILE_SIZE; + total_item = (end_off - start_off) / mUpgradeBlockSize + 2; + } + } else if (upgrade_version == CC_FBC_V03_01_VAL) { + start_off = CC_UPGRADE_V03_CUR_PQ_OFFSET; + end_off = 0; + if (mUpgradeMode == CC_UPGRADE_MODE_CUR_PQ_BIN) { + start_off = CC_UPGRADE_V03_CUR_PQ_OFFSET; + end_off = CC_UPGRADE_V03_CUR_PQ_OFFSET + CC_FBC_V03_CUR_PQ_BIN_FILE_SIZE; + total_item = (end_off - start_off) / mUpgradeBlockSize + 2; + } + } + + //let's try set default pq & wb + if (upgrade_version == CC_FBC_V02_00_VAL || upgrade_version == CC_FBC_V03_00_VAL) { + if (mUpgradeMode == CC_UPGRADE_MODE_ALL_PQ_WB || mUpgradeMode == CC_UPGRADE_MODE_MAIN_PQ_WB || + mUpgradeMode == CC_UPGRADE_MODE_PQ_WB_ONLY) { + mDataBuf[6] = 3; + upgrade_pq_wb_flag = 1; + } else if (mUpgradeMode == CC_UPGRADE_MODE_MAIN_WB || mUpgradeMode == CC_UPGRADE_MODE_ALL_WB || + mUpgradeMode == CC_UPGRADE_MODE_WB_ONLY) { + mDataBuf[6] = 2; + upgrade_pq_wb_flag = 1; + } else if (mUpgradeMode == CC_UPGRADE_MODE_MAIN_PQ || mUpgradeMode == CC_UPGRADE_MODE_ALL_PQ || + mUpgradeMode == CC_UPGRADE_MODE_PQ_ONLY) { + mDataBuf[6] = 1; + upgrade_pq_wb_flag = 1; + } else { + upgrade_pq_wb_flag = 0; + } + + if (upgrade_pq_wb_flag == 1) { + cmd_len = 7; + mDataBuf[0] = 0x5A; + mDataBuf[1] = 0x5A; + mDataBuf[2] = cmd_len + 4; + mDataBuf[3] = 0x00; + mDataBuf[4] = 0x00; + mDataBuf[5] = CMD_CLR_SETTINGS_DEFAULT; + + AddCRCToDataBuf(mDataBuf, cmd_len); + if (mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, mDataBuf, cmd_len + 4, 0) <= 0) { + mState = STATE_ABORT; + upgrade_err_code = ERR_SERIAL_CONNECT; + mpObserver->onUpgradeStatus(mState, upgrade_err_code); + mCfbcIns->SetUpgradeFlag(0); + + if (mBinFileBuf != NULL) { + delete mBinFileBuf; + mBinFileBuf = NULL; + } + return false; + } + + usleep(3000 * 1000); + + if (mUpgradeMode == CC_UPGRADE_MODE_PQ_WB_ONLY || mUpgradeMode == CC_UPGRADE_MODE_WB_ONLY || + mUpgradeMode == CC_UPGRADE_MODE_PQ_ONLY) { + system("reboot"); + return false; + } + } + } + + //send upgrade command + cmd_len = 10; + mDataBuf[0] = 0x5A; + mDataBuf[1] = 0x5A; + mDataBuf[2] = cmd_len + 4; + mDataBuf[3] = 0x00; + mDataBuf[4] = 0x00; + mDataBuf[5] = 0x01; + mDataBuf[6] = 0x88; + mDataBuf[7] = 0x88; + mDataBuf[8] = 0x88; + mDataBuf[9] = 0x88; + AddCRCToDataBuf(mDataBuf, cmd_len); + if (mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, mDataBuf, cmd_len + 4, 0) <= 0) { + mState = STATE_ABORT; + upgrade_err_code = ERR_SERIAL_CONNECT; + mpObserver->onUpgradeStatus(mState, upgrade_err_code); + mCfbcIns->SetUpgradeFlag(0); + + if (mBinFileBuf != NULL) { + delete mBinFileBuf; + mBinFileBuf = NULL; + } + return false; + } + + //waiting fbc restart + usleep(5000 * 1000); + + if (mUpgradeMode == CC_UPGRADE_MODE_DUMMY) { + //dummy test mode + + //wait 10 second + usleep(10000 * 1000); + + //send reboot command to reboot fbc + sprintf((char *)tmp_buf, "reboot\n"); + cmd_len = strlen((char *)tmp_buf); + mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, tmp_buf, cmd_len, 0); + usleep(400 * 1000); + + mpObserver->onUpgradeStatus(mState, 100); + + usleep(100 * 1000); + mState = STATE_FINISHED; + mpObserver->onUpgradeStatus(mState, 0); + + if (mBinFileBuf != NULL) { + delete mBinFileBuf; + mBinFileBuf = NULL; + } + return false; + } + + tmp_prog += 1; + mpObserver->onUpgradeStatus(mState, tmp_prog * 100 / total_item); + + cur_off = start_off; + old_off = cur_off; + + upgrade_flag = 0; + while (!exitPending()) { //requietexit() or requietexitWait() not call + if (cur_off >= end_off) { + upgrade_flag = 1; + break; + } + + //copy data from file temp buffer + if (end_off - cur_off < mUpgradeBlockSize) { + rw_size = end_off - cur_off; + } else { + rw_size = mUpgradeBlockSize; + } + + memcpy(mDataBuf, mBinFileBuf + cur_off, rw_size); + + //send upgrade start addr and write size + sprintf((char *)tmp_buf, "upgrade 0x%x 0x%x\n", cur_off, rw_size); + LOGD("\n\n%s, %s\n", __FUNCTION__, tmp_buf); + cmd_len = strlen((char *)tmp_buf); + if (mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, tmp_buf, cmd_len, 0) <= 0) { + mState = STATE_ABORT; + upgrade_err_code = ERR_SERIAL_CONNECT; + upgrade_flag = 0; + break; + } + usleep(500 * 1000); + + //send upgrade data + if (mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, mDataBuf, rw_size, 0) <= 0) { + mState = STATE_ABORT; + upgrade_err_code = ERR_SERIAL_CONNECT; + upgrade_flag = 0; + break; + } + + //send upgrade data crc + AddCRCToDataBuf(mDataBuf, rw_size); + if (mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, mDataBuf + rw_size, 4, 0) <= 0) { + mState = STATE_ABORT; + upgrade_err_code = ERR_SERIAL_CONNECT; + upgrade_flag = 0; + break; + } + + old_off = cur_off; + cur_off += rw_size; + + //deal with fbc response + tmp_flag = 0; + memset(mDataBuf, 0, CC_UPGRADE_DATA_BUF_SIZE); + rw_size = mCfbcIns->uartReadStream(mDataBuf, CC_UPGRADE_DATA_BUF_SIZE, 2000); + for (i = 0; i < rw_size - 3; i++) { + if ((0x5A == mDataBuf[i]) && (0x5A == mDataBuf[i + 1]) && (0x5A == mDataBuf[i + 2])) { + LOGD("%s, fbc write data at 0x%x ok!\n", __FUNCTION__, old_off); + tmp_flag = 1; + break; + } + } + + if (tmp_flag == 0) { + LOGE("%s, fbc write data at 0x%x error! rewrite!\n", __FUNCTION__, old_off); + if (upgrade_try_cnt < 6) { + cur_off = old_off; + upgrade_try_cnt += 1; + + mpObserver->onUpgradeStatus(mState, ERR_DATA_CRC_ERROR); + } else { + LOGE("%s, we have rewrite more than %d times, abort.\n", __FUNCTION__, upgrade_try_cnt); + mState = STATE_ABORT; + upgrade_err_code = ERR_SERIAL_CONNECT; + upgrade_flag = 0; + break; + } + } else { + tmp_prog += 1; + upgrade_try_cnt = 0; + } + + usleep(3000 * 1000); + + mpObserver->onUpgradeStatus(mState, tmp_prog * 100 / total_item); + } + + if (mState == STATE_ABORT) { + mpObserver->onUpgradeStatus(mState, upgrade_err_code); + } else if (mState == STATE_RUNNING) { + if (upgrade_flag == 1) { + sprintf((char *)tmp_buf, "reboot\n"); + cmd_len = strlen((char *)tmp_buf); + mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, tmp_buf, cmd_len, 0); + usleep(400 * 1000); + + tmp_prog += 1; + mpObserver->onUpgradeStatus(mState, tmp_prog * 100 / total_item); + + usleep(100 * 1000); + mState = STATE_FINISHED; + mpObserver->onUpgradeStatus(mState, 0); + } + } else { + if (upgrade_flag == 1) { + tmp_prog += 1; + mpObserver->onUpgradeStatus(mState, tmp_prog * 100 / total_item); + } + } + + mState = STATE_STOPED; + + mCfbcIns->SetUpgradeFlag(0); + + if (mBinFileBuf != NULL) { + delete mBinFileBuf; + mBinFileBuf = NULL; + } + + LOGD("%s, exiting...\n", "TV"); + system("reboot"); + //return true, run again, return false,not run. + return false; } diff --git a/tvapi/libtv/tv/CUpgradeFBC.h b/tvapi/libtv/tv/CUpgradeFBC.h index 67eb115..70b8057 100644 --- a/tvapi/libtv/tv/CUpgradeFBC.h +++ b/tvapi/libtv/tv/CUpgradeFBC.h @@ -82,60 +82,60 @@ class CUpgradeFBC: public CThread { public: - CUpgradeFBC(); - ~CUpgradeFBC(); - - int start(); - int stop(); - int GetUpgradeFBCProgress(); - int SetUpgradeFileName(char *file_name); - int SetUpgradeFileSize(int file_size); - int SetUpgradeBlockSize(int block_size); - int SetUpgradeMode(int mode); - - class IUpgradeFBCObserver { - public: - IUpgradeFBCObserver() {}; - virtual ~IUpgradeFBCObserver() {}; - virtual void onUpgradeStatus(int state, int param) {}; - }; - void setObserver(IUpgradeFBCObserver *pOb) - { - mpObserver = pOb; - }; + CUpgradeFBC(); + ~CUpgradeFBC(); + + int start(); + int stop(); + int GetUpgradeFBCProgress(); + int SetUpgradeFileName(char *file_name); + int SetUpgradeFileSize(int file_size); + int SetUpgradeBlockSize(int block_size); + int SetUpgradeMode(int mode); + + class IUpgradeFBCObserver { + public: + IUpgradeFBCObserver() {}; + virtual ~IUpgradeFBCObserver() {}; + virtual void onUpgradeStatus(int state, int param) {}; + }; + void setObserver(IUpgradeFBCObserver *pOb) + { + mpObserver = pOb; + }; private: - bool threadLoop(); - - int AddCRCToDataBuf(unsigned char data_buf[], int data_len); - - int mState; - int mUpgradeMode; - int mOPTotalSize; - int mBinFileSize; - int mUpgradeBlockSize; - unsigned char *mBinFileBuf; - char mFileName[256]; - unsigned char mDataBuf[CC_UPGRADE_DATA_BUF_SIZE]; - IUpgradeFBCObserver *mpObserver; - CFbcCommunication *mCfbcIns; - - enum UpgradeState { - STATE_STOPED = 0, - STATE_RUNNING, - STATE_FINISHED, - STATE_ABORT, - }; - - enum FBCUpgradeErrorCode { - ERR_SERIAL_CONNECT = -1, - ERR_OPEN_BIN_FILE = -2, - ERR_BIN_FILE_SIZE = -3, - ERR_READ_BIN_FILE = -4, - ERR_NOT_SUPPORT_UPGRADE_MDOE = -5, - ERR_NOT_CORRECT_UPGRADE_BLKSIZE = -6, - ERR_DATA_CRC_ERROR = -7, - }; + bool threadLoop(); + + int AddCRCToDataBuf(unsigned char data_buf[], int data_len); + + int mState; + int mUpgradeMode; + int mOPTotalSize; + int mBinFileSize; + int mUpgradeBlockSize; + unsigned char *mBinFileBuf; + char mFileName[256]; + unsigned char mDataBuf[CC_UPGRADE_DATA_BUF_SIZE]; + IUpgradeFBCObserver *mpObserver; + CFbcCommunication *mCfbcIns; + + enum UpgradeState { + STATE_STOPED = 0, + STATE_RUNNING, + STATE_FINISHED, + STATE_ABORT, + }; + + enum FBCUpgradeErrorCode { + ERR_SERIAL_CONNECT = -1, + ERR_OPEN_BIN_FILE = -2, + ERR_BIN_FILE_SIZE = -3, + ERR_READ_BIN_FILE = -4, + ERR_NOT_SUPPORT_UPGRADE_MDOE = -5, + ERR_NOT_CORRECT_UPGRADE_BLKSIZE = -6, + ERR_DATA_CRC_ERROR = -7, + }; }; #endif //__TV_UPGRADE_FBC_H__ diff --git a/tvapi/libtv/tv/ScreenCatch.cpp b/tvapi/libtv/tv/ScreenCatch.cpp index 0ed084e..971ac91 100644 --- a/tvapi/libtv/tv/ScreenCatch.cpp +++ b/tvapi/libtv/tv/ScreenCatch.cpp @@ -56,324 +56,324 @@ namespace android { - struct ScreenCatch::ScreenCatchClient : public BnScreenMediaSourceClient { - ScreenCatchClient(void *user) - { - mUser = user; - ALOGE("[%s %d] user:%x", __FUNCTION__, __LINE__, user); - } - - virtual void notify(int msg, int ext1, int ext2, const Parcel *obj) - { - ALOGI("notify %d, %d, %d", msg, ext1, ext2); - } - - virtual int dataCallback(const sp &data) - { - return 0; - } - - protected: - void *mUser; - virtual ~ScreenCatchClient() {} - - private: - DISALLOW_EVIL_CONSTRUCTORS(ScreenCatchClient); - }; - - ScreenCatch::ScreenCatch(uint32_t bufferWidth, uint32_t bufferHeight, uint32_t bitSize) : - mWidth(ALIGN(bufferWidth)), - mHeight(bufferHeight), - mScreenMediaSourceService(NULL), - mColorFormat(OMX_COLOR_Format32bitARGB8888), - mBitSize(bitSize) - { - ALOGE("ScreenCatch: %dx%d", bufferWidth, bufferHeight); - - if (bufferWidth <= 0 || bufferHeight <= 0 || bufferWidth > 1920 || bufferHeight > 1080) { - ALOGE("Invalid dimensions %dx%d", bufferWidth, bufferHeight); - } - - if (bitSize != 24 || bitSize != 32) - bitSize = 32; - - mCorpX = -1; - mCorpY = -1; - mCorpWidth = -1; - mCorpHeight = -1; - - } - - ScreenCatch::~ScreenCatch() - { - ALOGE("~ScreenCatch"); - } - - void ScreenCatch::setVideoRotation(int degree) - { - int angle; - - ALOGI("[%s %d] setVideoRotation degree:%x", __FUNCTION__, __LINE__, degree); - - } - - void ScreenCatch::setVideoCrop(int x, int y, int width, int height) - { - mCorpX = x; - mCorpY = y; - mCorpWidth = width; - mCorpHeight = height; - } - - static inline void yuv_to_rgb32(unsigned char y, unsigned char u, unsigned char v, unsigned char *rgb) - { - register int r, g, b; - - r = (1192 * (y - 16) + 1634 * (v - 128) ) >> 10; - g = (1192 * (y - 16) - 833 * (v - 128) - 400 * (u - 128) ) >> 10; - b = (1192 * (y - 16) + 2066 * (u - 128) ) >> 10; - - r = r > 255 ? 255 : r < 0 ? 0 : r; - g = g > 255 ? 255 : g < 0 ? 0 : g; - b = b > 255 ? 255 : b < 0 ? 0 : b; - - /*ARGB*/ - *rgb = (unsigned char)r; - rgb++; - *rgb = (unsigned char)g; - rgb++; - *rgb = (unsigned char)b; - rgb++; - *rgb = 0xff; - - } - - void nv21_to_rgb32(unsigned char *buf, unsigned char *rgb, int width, int height) - { - int x, y, z = 0; - int h, w; - int blocks; - unsigned char Y1, Y2, U, V; - - blocks = (width * height) * 2; - - for (h = 0, z = 0; h < height; h += 2) { - for (y = 0; y < width * 2; y += 2) { - - Y1 = buf[ h * width + y + 0]; - V = buf[ blocks / 2 + h * width / 2 + y % width + 0 ]; - Y2 = buf[ h * width + y + 1]; - U = buf[ blocks / 2 + h * width / 2 + y % width + 1 ]; - - yuv_to_rgb32(Y1, U, V, &rgb[z]); - yuv_to_rgb32(Y2, U, V, &rgb[z + 4]); - z += 8; - } - } - } - - static inline void yuv_to_rgb24(unsigned char y, unsigned char u, unsigned char v, unsigned char *rgb) - { - register int r, g, b; - - r = (1192 * (y - 16) + 1634 * (v - 128) ) >> 10; - g = (1192 * (y - 16) - 833 * (v - 128) - 400 * (u - 128) ) >> 10; - b = (1192 * (y - 16) + 2066 * (u - 128) ) >> 10; - - r = r > 255 ? 255 : r < 0 ? 0 : r; - g = g > 255 ? 255 : g < 0 ? 0 : g; - b = b > 255 ? 255 : b < 0 ? 0 : b; - - /*ARGB*/ - *rgb = (unsigned char)r; - rgb++; - *rgb = (unsigned char)g; - rgb++; - *rgb = (unsigned char)b; - } - - void nv21_to_rgb24(unsigned char *buf, unsigned char *rgb, int width, int height) - { - int x, y, z = 0; - int h, w; - int blocks; - unsigned char Y1, Y2, U, V; - - blocks = (width * height) * 2; - - for (h = 0, z = 0; h < height; h += 2) { - for (y = 0; y < width * 2; y += 2) { - - Y1 = buf[ h * width + y + 0]; - V = buf[ blocks / 2 + h * width / 2 + y % width + 0 ]; - Y2 = buf[ h * width + y + 1]; - U = buf[ blocks / 2 + h * width / 2 + y % width + 1 ]; - - yuv_to_rgb24(Y1, U, V, &rgb[z]); - yuv_to_rgb24(Y2, U, V, &rgb[z + 3]); - z += 6; - } - } - } - - int ScreenCatch::threadFunc() - { - int64_t pts; - int status; - - sp newMemoryHeap = new MemoryHeapBase(mWidth * mHeight * 3 / 2); - sp buffer = new MemoryBase(newMemoryHeap, 0, mWidth * mHeight * 3 / 2); - - ALOGV("[%s %d] empty:%d", __FUNCTION__, __LINE__, mRawBufferQueue.empty()); - - while (mStart == true) { - - status = mScreenMediaSourceService->readBuffer(mClientId, buffer, &pts); - - if (status != OK && mStart == true) { - usleep(10000); - continue; - } - - if (mStart != true) - break; - - MediaBuffer *accessUnit; - - if (OMX_COLOR_Format24bitRGB888 == mColorFormat) { //rgb 24bit - accessUnit = new MediaBuffer(mWidth * mHeight * 3); - nv21_to_rgb24((unsigned char *)buffer->pointer(), (unsigned char *)accessUnit->data(), mWidth, mHeight); - accessUnit->set_range(0, mWidth * mHeight * 3); - } else if (OMX_COLOR_Format32bitARGB8888 == mColorFormat) { //rgba 32bit - accessUnit = new MediaBuffer(mWidth * mHeight * 4); - nv21_to_rgb32((unsigned char *)buffer->pointer(), (unsigned char *)accessUnit->data(), mWidth, mHeight); - accessUnit->set_range(0, mWidth * mHeight * 4); - } else if (OMX_COLOR_FormatYUV420SemiPlanar == mColorFormat) { //nv21 - accessUnit = new MediaBuffer(mWidth * mHeight * 3 / 2); - memcpy((unsigned char *)accessUnit->data(), (unsigned char *)buffer->pointer(), mWidth * mHeight * 3 / 2); - accessUnit->set_range(0, mWidth * mHeight * 3 / 2); - } - mRawBufferQueue.push_back(accessUnit); - } - - ALOGE("[%s %d] thread out", __FUNCTION__, __LINE__); - - mThreadOutCondition.signal(); - - return 0; - } - - void *ScreenCatch::ThreadWrapper(void *me) - { - - ScreenCatch *Convertor = static_cast(me); - Convertor->threadFunc(); - return NULL; - } - - status_t ScreenCatch::start(MetaData *params) - { - ALOGE("[%s %d] mWidth:%d mHeight:%d", __FUNCTION__, __LINE__, mWidth, mHeight); - Mutex::Autolock autoLock(mLock); - - status_t status; - int64_t pts; - int client_id; - - sp sm = defaultServiceManager(); - sp binder = sm->getService(String16("media.screenmediasource")); - mScreenMediaSourceService = interface_cast(binder); - - sp mIScreenSourceClient = new ScreenCatchClient(this); - - ALOGE("[%s %d] mWidth:%d mHeight:%d", __FUNCTION__, __LINE__, mWidth, mHeight); - - mScreenMediaSourceService->registerClient(mIScreenSourceClient, mWidth, mHeight, 1, SCREENMEDIASOURC_RAWDATA_TYPE, &client_id, NULL); - - ALOGE("[%s %d] client_id:%d", __FUNCTION__, __LINE__, client_id); - - mClientId = client_id; - - if (status != OK) { - ALOGE("setResolutionRatio fail"); - return !OK; - } - - ALOGV("[%s %d] mCorpX:%d mCorpY:%d mCorpWidth:%d mCorpHeight:%d", __FUNCTION__, __LINE__, mCorpX, mCorpY, mCorpWidth, mCorpHeight); - - if (mCorpX != -1) - mScreenMediaSourceService->setVideoCrop(client_id, mCorpX, mCorpY, mCorpWidth, mCorpHeight); - - - status = mScreenMediaSourceService->start(client_id); - - if (status != OK) { - mScreenMediaSourceService->unregisterClient(mClientId); - ALOGE("ScreenMediaSourceService start fail"); - return !OK; - } - - if (!(params->findInt32(kKeyColorFormat, &mColorFormat) - && (mColorFormat != OMX_COLOR_FormatYUV420SemiPlanar - || mColorFormat != OMX_COLOR_Format24bitRGB888 - || mColorFormat != OMX_COLOR_Format32bitARGB8888))) - mColorFormat = OMX_COLOR_Format32bitARGB8888; - - pthread_attr_t attr; - pthread_attr_init(&attr); - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); - pthread_create(&mThread, &attr, ThreadWrapper, this); - pthread_attr_destroy(&attr); - - mStart = true; - - ALOGV("[%s %d]", __FUNCTION__, __LINE__); - return OK; - } - - status_t ScreenCatch::stop() - { - ALOGV("[%s %d]", __FUNCTION__, __LINE__); - Mutex::Autolock autoLock(mLock); - mStart = false; - - mThreadOutCondition.waitRelative(mLock, 1000000000000); - ALOGV("[%s %d]", __FUNCTION__, __LINE__); - - while (!mRawBufferQueue.empty()) { - - ALOGV("[%s %d] free buffer", __FUNCTION__, __LINE__); - - MediaBuffer *rawBuffer = *mRawBufferQueue.begin(); - mRawBufferQueue.erase(mRawBufferQueue.begin()); - rawBuffer->release(); - } - - mScreenMediaSourceService->stop(mClientId); - mScreenMediaSourceService->unregisterClient(mClientId); - - return OK; - } - - status_t ScreenCatch::read(MediaBuffer **buffer) - { - Mutex::Autolock autoLock(mLock); - - if (!mRawBufferQueue.empty()) { - MediaBuffer *rawBuffer = *mRawBufferQueue.begin(); - mRawBufferQueue.erase(mRawBufferQueue.begin()); - *buffer = rawBuffer; - return OK; - } - - return !OK; - } - - status_t ScreenCatch::free(MediaBuffer *buffer) - { - Mutex::Autolock autoLock(mLock); - buffer->release(); - return OK; - } + struct ScreenCatch::ScreenCatchClient : public BnScreenMediaSourceClient { + ScreenCatchClient(void *user) + { + mUser = user; + ALOGE("[%s %d] user:%x", __FUNCTION__, __LINE__, user); + } + + virtual void notify(int msg, int ext1, int ext2, const Parcel *obj) + { + ALOGI("notify %d, %d, %d", msg, ext1, ext2); + } + + virtual int dataCallback(const sp &data) + { + return 0; + } + + protected: + void *mUser; + virtual ~ScreenCatchClient() {} + + private: + DISALLOW_EVIL_CONSTRUCTORS(ScreenCatchClient); + }; + + ScreenCatch::ScreenCatch(uint32_t bufferWidth, uint32_t bufferHeight, uint32_t bitSize) : + mWidth(ALIGN(bufferWidth)), + mHeight(bufferHeight), + mScreenMediaSourceService(NULL), + mColorFormat(OMX_COLOR_Format32bitARGB8888), + mBitSize(bitSize) + { + ALOGE("ScreenCatch: %dx%d", bufferWidth, bufferHeight); + + if (bufferWidth <= 0 || bufferHeight <= 0 || bufferWidth > 1920 || bufferHeight > 1080) { + ALOGE("Invalid dimensions %dx%d", bufferWidth, bufferHeight); + } + + if (bitSize != 24 || bitSize != 32) + bitSize = 32; + + mCorpX = -1; + mCorpY = -1; + mCorpWidth = -1; + mCorpHeight = -1; + + } + + ScreenCatch::~ScreenCatch() + { + ALOGE("~ScreenCatch"); + } + + void ScreenCatch::setVideoRotation(int degree) + { + int angle; + + ALOGI("[%s %d] setVideoRotation degree:%x", __FUNCTION__, __LINE__, degree); + + } + + void ScreenCatch::setVideoCrop(int x, int y, int width, int height) + { + mCorpX = x; + mCorpY = y; + mCorpWidth = width; + mCorpHeight = height; + } + + static inline void yuv_to_rgb32(unsigned char y, unsigned char u, unsigned char v, unsigned char *rgb) + { + register int r, g, b; + + r = (1192 * (y - 16) + 1634 * (v - 128) ) >> 10; + g = (1192 * (y - 16) - 833 * (v - 128) - 400 * (u - 128) ) >> 10; + b = (1192 * (y - 16) + 2066 * (u - 128) ) >> 10; + + r = r > 255 ? 255 : r < 0 ? 0 : r; + g = g > 255 ? 255 : g < 0 ? 0 : g; + b = b > 255 ? 255 : b < 0 ? 0 : b; + + /*ARGB*/ + *rgb = (unsigned char)r; + rgb++; + *rgb = (unsigned char)g; + rgb++; + *rgb = (unsigned char)b; + rgb++; + *rgb = 0xff; + + } + + void nv21_to_rgb32(unsigned char *buf, unsigned char *rgb, int width, int height) + { + int x, y, z = 0; + int h, w; + int blocks; + unsigned char Y1, Y2, U, V; + + blocks = (width * height) * 2; + + for (h = 0, z = 0; h < height; h += 2) { + for (y = 0; y < width * 2; y += 2) { + + Y1 = buf[ h * width + y + 0]; + V = buf[ blocks / 2 + h * width / 2 + y % width + 0 ]; + Y2 = buf[ h * width + y + 1]; + U = buf[ blocks / 2 + h * width / 2 + y % width + 1 ]; + + yuv_to_rgb32(Y1, U, V, &rgb[z]); + yuv_to_rgb32(Y2, U, V, &rgb[z + 4]); + z += 8; + } + } + } + + static inline void yuv_to_rgb24(unsigned char y, unsigned char u, unsigned char v, unsigned char *rgb) + { + register int r, g, b; + + r = (1192 * (y - 16) + 1634 * (v - 128) ) >> 10; + g = (1192 * (y - 16) - 833 * (v - 128) - 400 * (u - 128) ) >> 10; + b = (1192 * (y - 16) + 2066 * (u - 128) ) >> 10; + + r = r > 255 ? 255 : r < 0 ? 0 : r; + g = g > 255 ? 255 : g < 0 ? 0 : g; + b = b > 255 ? 255 : b < 0 ? 0 : b; + + /*ARGB*/ + *rgb = (unsigned char)r; + rgb++; + *rgb = (unsigned char)g; + rgb++; + *rgb = (unsigned char)b; + } + + void nv21_to_rgb24(unsigned char *buf, unsigned char *rgb, int width, int height) + { + int x, y, z = 0; + int h, w; + int blocks; + unsigned char Y1, Y2, U, V; + + blocks = (width * height) * 2; + + for (h = 0, z = 0; h < height; h += 2) { + for (y = 0; y < width * 2; y += 2) { + + Y1 = buf[ h * width + y + 0]; + V = buf[ blocks / 2 + h * width / 2 + y % width + 0 ]; + Y2 = buf[ h * width + y + 1]; + U = buf[ blocks / 2 + h * width / 2 + y % width + 1 ]; + + yuv_to_rgb24(Y1, U, V, &rgb[z]); + yuv_to_rgb24(Y2, U, V, &rgb[z + 3]); + z += 6; + } + } + } + + int ScreenCatch::threadFunc() + { + int64_t pts; + int status; + + sp newMemoryHeap = new MemoryHeapBase(mWidth * mHeight * 3 / 2); + sp buffer = new MemoryBase(newMemoryHeap, 0, mWidth * mHeight * 3 / 2); + + ALOGV("[%s %d] empty:%d", __FUNCTION__, __LINE__, mRawBufferQueue.empty()); + + while (mStart == true) { + + status = mScreenMediaSourceService->readBuffer(mClientId, buffer, &pts); + + if (status != OK && mStart == true) { + usleep(10000); + continue; + } + + if (mStart != true) + break; + + MediaBuffer *accessUnit; + + if (OMX_COLOR_Format24bitRGB888 == mColorFormat) { //rgb 24bit + accessUnit = new MediaBuffer(mWidth * mHeight * 3); + nv21_to_rgb24((unsigned char *)buffer->pointer(), (unsigned char *)accessUnit->data(), mWidth, mHeight); + accessUnit->set_range(0, mWidth * mHeight * 3); + } else if (OMX_COLOR_Format32bitARGB8888 == mColorFormat) { //rgba 32bit + accessUnit = new MediaBuffer(mWidth * mHeight * 4); + nv21_to_rgb32((unsigned char *)buffer->pointer(), (unsigned char *)accessUnit->data(), mWidth, mHeight); + accessUnit->set_range(0, mWidth * mHeight * 4); + } else if (OMX_COLOR_FormatYUV420SemiPlanar == mColorFormat) { //nv21 + accessUnit = new MediaBuffer(mWidth * mHeight * 3 / 2); + memcpy((unsigned char *)accessUnit->data(), (unsigned char *)buffer->pointer(), mWidth * mHeight * 3 / 2); + accessUnit->set_range(0, mWidth * mHeight * 3 / 2); + } + mRawBufferQueue.push_back(accessUnit); + } + + ALOGE("[%s %d] thread out", __FUNCTION__, __LINE__); + + mThreadOutCondition.signal(); + + return 0; + } + + void *ScreenCatch::ThreadWrapper(void *me) + { + + ScreenCatch *Convertor = static_cast(me); + Convertor->threadFunc(); + return NULL; + } + + status_t ScreenCatch::start(MetaData *params) + { + ALOGE("[%s %d] mWidth:%d mHeight:%d", __FUNCTION__, __LINE__, mWidth, mHeight); + Mutex::Autolock autoLock(mLock); + + status_t status; + int64_t pts; + int client_id; + + sp sm = defaultServiceManager(); + sp binder = sm->getService(String16("media.screenmediasource")); + mScreenMediaSourceService = interface_cast(binder); + + sp mIScreenSourceClient = new ScreenCatchClient(this); + + ALOGE("[%s %d] mWidth:%d mHeight:%d", __FUNCTION__, __LINE__, mWidth, mHeight); + + mScreenMediaSourceService->registerClient(mIScreenSourceClient, mWidth, mHeight, 1, SCREENMEDIASOURC_RAWDATA_TYPE, &client_id, NULL); + + ALOGE("[%s %d] client_id:%d", __FUNCTION__, __LINE__, client_id); + + mClientId = client_id; + + if (status != OK) { + ALOGE("setResolutionRatio fail"); + return !OK; + } + + ALOGV("[%s %d] mCorpX:%d mCorpY:%d mCorpWidth:%d mCorpHeight:%d", __FUNCTION__, __LINE__, mCorpX, mCorpY, mCorpWidth, mCorpHeight); + + if (mCorpX != -1) + mScreenMediaSourceService->setVideoCrop(client_id, mCorpX, mCorpY, mCorpWidth, mCorpHeight); + + + status = mScreenMediaSourceService->start(client_id); + + if (status != OK) { + mScreenMediaSourceService->unregisterClient(mClientId); + ALOGE("ScreenMediaSourceService start fail"); + return !OK; + } + + if (!(params->findInt32(kKeyColorFormat, &mColorFormat) + && (mColorFormat != OMX_COLOR_FormatYUV420SemiPlanar + || mColorFormat != OMX_COLOR_Format24bitRGB888 + || mColorFormat != OMX_COLOR_Format32bitARGB8888))) + mColorFormat = OMX_COLOR_Format32bitARGB8888; + + pthread_attr_t attr; + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); + pthread_create(&mThread, &attr, ThreadWrapper, this); + pthread_attr_destroy(&attr); + + mStart = true; + + ALOGV("[%s %d]", __FUNCTION__, __LINE__); + return OK; + } + + status_t ScreenCatch::stop() + { + ALOGV("[%s %d]", __FUNCTION__, __LINE__); + Mutex::Autolock autoLock(mLock); + mStart = false; + + mThreadOutCondition.waitRelative(mLock, 1000000000000); + ALOGV("[%s %d]", __FUNCTION__, __LINE__); + + while (!mRawBufferQueue.empty()) { + + ALOGV("[%s %d] free buffer", __FUNCTION__, __LINE__); + + MediaBuffer *rawBuffer = *mRawBufferQueue.begin(); + mRawBufferQueue.erase(mRawBufferQueue.begin()); + rawBuffer->release(); + } + + mScreenMediaSourceService->stop(mClientId); + mScreenMediaSourceService->unregisterClient(mClientId); + + return OK; + } + + status_t ScreenCatch::read(MediaBuffer **buffer) + { + Mutex::Autolock autoLock(mLock); + + if (!mRawBufferQueue.empty()) { + MediaBuffer *rawBuffer = *mRawBufferQueue.begin(); + mRawBufferQueue.erase(mRawBufferQueue.begin()); + *buffer = rawBuffer; + return OK; + } + + return !OK; + } + + status_t ScreenCatch::free(MediaBuffer *buffer) + { + Mutex::Autolock autoLock(mLock); + buffer->release(); + return OK; + } } // end of namespace android diff --git a/tvapi/libtv/tvconfig/CIniFile.cpp b/tvapi/libtv/tvconfig/CIniFile.cpp index 2461a68..da448a5 100644 --- a/tvapi/libtv/tvconfig/CIniFile.cpp +++ b/tvapi/libtv/tvconfig/CIniFile.cpp @@ -8,346 +8,346 @@ CIniFile::CIniFile() { - mpFirstSection = NULL; - mpFileName[0] = '\0'; - m_pIniFile = NULL; - mpFirstLine = NULL; + mpFirstSection = NULL; + mpFileName[0] = '\0'; + m_pIniFile = NULL; + mpFirstLine = NULL; } CIniFile::~CIniFile() { - LOGD("CIniFile::~CIniFile()"); - FreeAllMem(); + LOGD("CIniFile::~CIniFile()"); + FreeAllMem(); } int CIniFile::LoadFromFile(const char *filename) { - char lineStr[MAX_INI_FILE_LINE_LEN]; - char *pStr; - LINE *pCurLINE = NULL; - SECTION *pCurSection = NULL; - - FreeAllMem(); - - int Len; - if (filename == NULL) { - return -1; - } - - strcpy(mpFileName, filename); - LOGD("LoadFromFile 2name = %s", mpFileName); - if ((m_pIniFile = fopen (mpFileName, "r")) == NULL) { - return -1; - } - - while (fgets (lineStr, MAX_INI_FILE_LINE_LEN, m_pIniFile) != NULL) { - //去掉多余字符 - allTrim(lineStr); - - LINE *pLINE = new LINE(); - pLINE->pKeyStart = pLINE->Text; - pLINE->pKeyEnd = pLINE->Text; - pLINE->pValueStart = pLINE->Text; - pLINE->pValueEnd = pLINE->Text; - pLINE->pNext = NULL; - pLINE->type = getLineType(lineStr); - //LOGD("getline=%s len=%d type=%d", lineStr, strlen(lineStr), pLINE->type); - strcpy(pLINE->Text, lineStr); - pLINE->LineLen = strlen(pLINE->Text); - - //head - if (mpFirstLine == NULL) { - mpFirstLine = pLINE; - } else { - pCurLINE->pNext = pLINE; - } - - pCurLINE = pLINE; - - switch (pCurLINE->type) { - case LINE_TYPE_SECTION: { - SECTION *pSec = new SECTION(); - pSec->pLine = pLINE; - pSec->pNext = NULL; - if (mpFirstSection == NULL) { //first section - mpFirstSection = pSec; - } else { - pCurSection->pNext = pSec; - } - pCurSection = pSec; - break; - } - case LINE_TYPE_KEY: { - char *pM = strchr(pCurLINE->Text, '='); - pCurLINE->pKeyStart = pCurLINE->Text; - pCurLINE->pKeyEnd = pM - 1; - pCurLINE->pValueStart = pM + 1; - pCurLINE->pValueEnd = pCurLINE->Text + pCurLINE->LineLen - 1; - break; - } - case LINE_TYPE_COMMENT: { - break; - } - default: { - break; - } - } - } - - fclose (m_pIniFile); - m_pIniFile = NULL; - - return 0; + char lineStr[MAX_INI_FILE_LINE_LEN]; + char *pStr; + LINE *pCurLINE = NULL; + SECTION *pCurSection = NULL; + + FreeAllMem(); + + int Len; + if (filename == NULL) { + return -1; + } + + strcpy(mpFileName, filename); + LOGD("LoadFromFile 2name = %s", mpFileName); + if ((m_pIniFile = fopen (mpFileName, "r")) == NULL) { + return -1; + } + + while (fgets (lineStr, MAX_INI_FILE_LINE_LEN, m_pIniFile) != NULL) { + //去掉多余字符 + allTrim(lineStr); + + LINE *pLINE = new LINE(); + pLINE->pKeyStart = pLINE->Text; + pLINE->pKeyEnd = pLINE->Text; + pLINE->pValueStart = pLINE->Text; + pLINE->pValueEnd = pLINE->Text; + pLINE->pNext = NULL; + pLINE->type = getLineType(lineStr); + //LOGD("getline=%s len=%d type=%d", lineStr, strlen(lineStr), pLINE->type); + strcpy(pLINE->Text, lineStr); + pLINE->LineLen = strlen(pLINE->Text); + + //head + if (mpFirstLine == NULL) { + mpFirstLine = pLINE; + } else { + pCurLINE->pNext = pLINE; + } + + pCurLINE = pLINE; + + switch (pCurLINE->type) { + case LINE_TYPE_SECTION: { + SECTION *pSec = new SECTION(); + pSec->pLine = pLINE; + pSec->pNext = NULL; + if (mpFirstSection == NULL) { //first section + mpFirstSection = pSec; + } else { + pCurSection->pNext = pSec; + } + pCurSection = pSec; + break; + } + case LINE_TYPE_KEY: { + char *pM = strchr(pCurLINE->Text, '='); + pCurLINE->pKeyStart = pCurLINE->Text; + pCurLINE->pKeyEnd = pM - 1; + pCurLINE->pValueStart = pM + 1; + pCurLINE->pValueEnd = pCurLINE->Text + pCurLINE->LineLen - 1; + break; + } + case LINE_TYPE_COMMENT: { + break; + } + default: { + break; + } + } + } + + fclose (m_pIniFile); + m_pIniFile = NULL; + + return 0; } void CIniFile::printAll() { - //line - for (LINE *pline = mpFirstLine; pline != NULL; pline = pline->pNext) { - LOGD("line = %s type = %d", pline->Text, pline->type); - } - - //section - for (SECTION *psec = mpFirstSection; psec != NULL; psec = psec->pNext) { - LOGD("sec = %s", psec->pLine->Text); - } - return; + //line + for (LINE *pline = mpFirstLine; pline != NULL; pline = pline->pNext) { + LOGD("line = %s type = %d", pline->Text, pline->type); + } + + //section + for (SECTION *psec = mpFirstSection; psec != NULL; psec = psec->pNext) { + LOGD("sec = %s", psec->pLine->Text); + } + return; } int CIniFile::LoadFromString(const char *str) { - return 0; + return 0; } int CIniFile::SaveToFile(const char *filename) { - const char *file = NULL; - if (m_pIniFile != NULL) { - fclose (m_pIniFile); - } - - if (filename == NULL) { - if (strlen(mpFileName) == 0) { - LOGD("error save file is null"); - return -1; - } else { - file = mpFileName; - } - } else { - file = filename; - } - //LOGD("Save to file name = %s", file); - - if ((m_pIniFile = fopen (file, "wb")) == NULL) { - LOGD("Save to file open error = %s", file); - return -1; - } - - LINE *pCurLine = NULL; - for (pCurLine = mpFirstLine; pCurLine != NULL; pCurLine = pCurLine->pNext) { - fprintf (m_pIniFile, "%s\r\n", pCurLine->Text); - } - - fflush(m_pIniFile); - fsync(fileno(m_pIniFile)); - - fclose(m_pIniFile); - m_pIniFile = NULL; - return 0; + const char *file = NULL; + if (m_pIniFile != NULL) { + fclose (m_pIniFile); + } + + if (filename == NULL) { + if (strlen(mpFileName) == 0) { + LOGD("error save file is null"); + return -1; + } else { + file = mpFileName; + } + } else { + file = filename; + } + //LOGD("Save to file name = %s", file); + + if ((m_pIniFile = fopen (file, "wb")) == NULL) { + LOGD("Save to file open error = %s", file); + return -1; + } + + LINE *pCurLine = NULL; + for (pCurLine = mpFirstLine; pCurLine != NULL; pCurLine = pCurLine->pNext) { + fprintf (m_pIniFile, "%s\r\n", pCurLine->Text); + } + + fflush(m_pIniFile); + fsync(fileno(m_pIniFile)); + + fclose(m_pIniFile); + m_pIniFile = NULL; + return 0; } //æš‚ä¸æ’å…¥æ“作 int CIniFile::SetString(const char *section, const char *key, const char *value) { - SECTION *pNewSec = NULL; - LINE *pNewSecLine = NULL; - LINE *pNewKeyLine = NULL; - - SECTION *pSec = getSection(section); - if (pSec == NULL) { - pNewSec = new SECTION(); - pNewSecLine = new LINE(); - pNewKeyLine = new LINE(); - - pNewKeyLine->type = LINE_TYPE_KEY; - pNewSecLine->type = LINE_TYPE_SECTION; - - - sprintf(pNewSecLine->Text, "[%s]", section); - pNewSec->pLine = pNewSecLine; - - InsertSection(pNewSec); - - int keylen = strlen(key); - sprintf(pNewKeyLine->Text, "%s=%s", key, value); - pNewKeyLine->LineLen = strlen(pNewKeyLine->Text); - pNewKeyLine->pKeyStart = pNewKeyLine->Text; - pNewKeyLine->pKeyEnd = pNewKeyLine->pKeyStart + keylen - 1; - pNewKeyLine->pValueStart = pNewKeyLine->pKeyStart + keylen + 1; - pNewKeyLine->pValueEnd = pNewKeyLine->Text + pNewKeyLine->LineLen - 1; - - InsertKeyLine(pNewSec, pNewKeyLine); - - } else { //find section - LINE *pLine = getKeyLineAtSec(pSec, key); - if (pLine == NULL) { //, not find key - pNewKeyLine = new LINE(); - pNewKeyLine->type = LINE_TYPE_KEY; - - int keylen = strlen(key); - sprintf(pNewKeyLine->Text, "%s=%s", key, value); - pNewKeyLine->LineLen = strlen(pNewKeyLine->Text); - pNewKeyLine->pKeyStart = pNewKeyLine->Text; - pNewKeyLine->pKeyEnd = pNewKeyLine->pKeyStart + keylen - 1; - pNewKeyLine->pValueStart = pNewKeyLine->pKeyStart + keylen + 1; - pNewKeyLine->pValueEnd = pNewKeyLine->Text + pNewKeyLine->LineLen - 1; - - InsertKeyLine(pSec, pNewKeyLine); - } else { //all find, change it - sprintf(pLine->Text, "%s=%s", key, value); - pLine->LineLen = strlen(pLine->Text); - pLine->pValueEnd = pLine->Text + pLine->LineLen - 1; - } - } - - //save - SaveToFile(NULL); - return 0; + SECTION *pNewSec = NULL; + LINE *pNewSecLine = NULL; + LINE *pNewKeyLine = NULL; + + SECTION *pSec = getSection(section); + if (pSec == NULL) { + pNewSec = new SECTION(); + pNewSecLine = new LINE(); + pNewKeyLine = new LINE(); + + pNewKeyLine->type = LINE_TYPE_KEY; + pNewSecLine->type = LINE_TYPE_SECTION; + + + sprintf(pNewSecLine->Text, "[%s]", section); + pNewSec->pLine = pNewSecLine; + + InsertSection(pNewSec); + + int keylen = strlen(key); + sprintf(pNewKeyLine->Text, "%s=%s", key, value); + pNewKeyLine->LineLen = strlen(pNewKeyLine->Text); + pNewKeyLine->pKeyStart = pNewKeyLine->Text; + pNewKeyLine->pKeyEnd = pNewKeyLine->pKeyStart + keylen - 1; + pNewKeyLine->pValueStart = pNewKeyLine->pKeyStart + keylen + 1; + pNewKeyLine->pValueEnd = pNewKeyLine->Text + pNewKeyLine->LineLen - 1; + + InsertKeyLine(pNewSec, pNewKeyLine); + + } else { //find section + LINE *pLine = getKeyLineAtSec(pSec, key); + if (pLine == NULL) { //, not find key + pNewKeyLine = new LINE(); + pNewKeyLine->type = LINE_TYPE_KEY; + + int keylen = strlen(key); + sprintf(pNewKeyLine->Text, "%s=%s", key, value); + pNewKeyLine->LineLen = strlen(pNewKeyLine->Text); + pNewKeyLine->pKeyStart = pNewKeyLine->Text; + pNewKeyLine->pKeyEnd = pNewKeyLine->pKeyStart + keylen - 1; + pNewKeyLine->pValueStart = pNewKeyLine->pKeyStart + keylen + 1; + pNewKeyLine->pValueEnd = pNewKeyLine->Text + pNewKeyLine->LineLen - 1; + + InsertKeyLine(pSec, pNewKeyLine); + } else { //all find, change it + sprintf(pLine->Text, "%s=%s", key, value); + pLine->LineLen = strlen(pLine->Text); + pLine->pValueEnd = pLine->Text + pLine->LineLen - 1; + } + } + + //save + SaveToFile(NULL); + return 0; } int CIniFile::SetInt(const char *section, const char *key, int value) { - char tmp[64]; - sprintf(tmp, "%d", value); - SetString(section, key, tmp); - return 0; + char tmp[64]; + sprintf(tmp, "%d", value); + SetString(section, key, tmp); + return 0; } const char *CIniFile::GetString(const char *section, const char *key, const char *def_value) { - SECTION *pSec = getSection(section); - if (pSec == NULL) return def_value; - LINE *pLine = getKeyLineAtSec(pSec, key); - if (pLine == NULL) return def_value; + SECTION *pSec = getSection(section); + if (pSec == NULL) return def_value; + LINE *pLine = getKeyLineAtSec(pSec, key); + if (pLine == NULL) return def_value; - return pLine->pValueStart; + return pLine->pValueStart; } int CIniFile::GetInt(const char *section, const char *key, int def_value) { - const char *num = GetString(section, key, NULL); - if (num != NULL) { - return atoi(num); - } - return def_value; + const char *num = GetString(section, key, NULL); + if (num != NULL) { + return atoi(num); + } + return def_value; } LINE_TYPE CIniFile::getLineType(char *Str) { - LINE_TYPE type = LINE_TYPE_COMMENT; - //åªè¦æœ‰#,就是注释 - if (strchr(Str, '#') != NULL) { - type = LINE_TYPE_COMMENT; - } else if ( (strstr (Str, "[") != NULL) && (strstr (Str, "]") != NULL) ) { /* Is Section */ - type = LINE_TYPE_SECTION; - } else { - if (strstr (Str, "=") != NULL) { - type = LINE_TYPE_KEY; - } else { - type = LINE_TYPE_COMMENT; - } - } - return type; + LINE_TYPE type = LINE_TYPE_COMMENT; + //åªè¦æœ‰#,就是注释 + if (strchr(Str, '#') != NULL) { + type = LINE_TYPE_COMMENT; + } else if ( (strstr (Str, "[") != NULL) && (strstr (Str, "]") != NULL) ) { /* Is Section */ + type = LINE_TYPE_SECTION; + } else { + if (strstr (Str, "=") != NULL) { + type = LINE_TYPE_KEY; + } else { + type = LINE_TYPE_COMMENT; + } + } + return type; } void CIniFile::FreeAllMem() { - //line - LINE *pCurLine = NULL; - LINE *pNextLine = NULL; - for (pCurLine = mpFirstLine; pCurLine != NULL;) { - pNextLine = pCurLine->pNext; - delete pCurLine; - pCurLine = pNextLine; - } - mpFirstLine = NULL; - //section - SECTION *pCurSec = NULL; - SECTION *pNextSec = NULL; - for (pCurSec = mpFirstSection; pCurSec != NULL;) { - pNextSec = pCurSec->pNext; - delete pCurSec; - pCurSec = pNextSec; - } - mpFirstSection = NULL; + //line + LINE *pCurLine = NULL; + LINE *pNextLine = NULL; + for (pCurLine = mpFirstLine; pCurLine != NULL;) { + pNextLine = pCurLine->pNext; + delete pCurLine; + pCurLine = pNextLine; + } + mpFirstLine = NULL; + //section + SECTION *pCurSec = NULL; + SECTION *pNextSec = NULL; + for (pCurSec = mpFirstSection; pCurSec != NULL;) { + pNextSec = pCurSec->pNext; + delete pCurSec; + pCurSec = pNextSec; + } + mpFirstSection = NULL; } int CIniFile::InsertSection(SECTION *pSec) { - //insert it to sections list ,as first section - pSec->pNext = mpFirstSection; - mpFirstSection = pSec; - //insert it to lines list, at first - pSec->pLine->pNext = mpFirstLine; - mpFirstLine = pSec->pLine; - return 0; + //insert it to sections list ,as first section + pSec->pNext = mpFirstSection; + mpFirstSection = pSec; + //insert it to lines list, at first + pSec->pLine->pNext = mpFirstLine; + mpFirstLine = pSec->pLine; + return 0; } int CIniFile::InsertKeyLine(SECTION *pSec, LINE *line) { - LINE *line1 = pSec->pLine; - LINE *line2 = line1->pNext; - line1->pNext = line; - line->pNext = line2; - return 0; + LINE *line1 = pSec->pLine; + LINE *line2 = line1->pNext; + line1->pNext = line; + line->pNext = line2; + return 0; } SECTION *CIniFile::getSection(const char *section) { - //section - for (SECTION *psec = mpFirstSection; psec != NULL; psec = psec->pNext) { - if (strncmp((psec->pLine->Text) + 1, section, strlen(section)) == 0) - return psec; - } - return NULL; + //section + for (SECTION *psec = mpFirstSection; psec != NULL; psec = psec->pNext) { + if (strncmp((psec->pLine->Text) + 1, section, strlen(section)) == 0) + return psec; + } + return NULL; } LINE *CIniFile::getKeyLineAtSec(SECTION *pSec, const char *key) { - //line - for (LINE *pline = pSec->pLine->pNext; (pline != NULL && pline->type != LINE_TYPE_SECTION); pline = pline->pNext) { - if (pline->type == LINE_TYPE_KEY) { - if (strncmp(pline->Text, key, strlen(key)) == 0) - return pline; - } - } - return NULL; + //line + for (LINE *pline = pSec->pLine->pNext; (pline != NULL && pline->type != LINE_TYPE_SECTION); pline = pline->pNext) { + if (pline->type == LINE_TYPE_KEY) { + if (strncmp(pline->Text, key, strlen(key)) == 0) + return pline; + } + } + return NULL; } //去掉串里é¢çš„,空格,回车,æ¢è¡Œ,s指å‘转æ¢å¤„ç†åŽçš„串的开头 void CIniFile::allTrim(char *Str) { - //去掉æ¢è¡Œ - char *pStr; - pStr = strchr (Str, '\n'); - if (pStr != NULL) { - *pStr = 0; - } - //去掉尾部回车 - int Len = strlen(Str); - if ( Len > 0 ) { - if ( Str[Len - 1] == '\r' ) { - Str[Len - 1] = '\0'; - } - } - //去掉空格 - pStr = Str; - while (*pStr != '\0') { //没到尾部 - if (*pStr == ' ') { //é‡åˆ°ç©ºæ ¼ - char *pTmp = pStr;//从空格处开始 - while (*pTmp != '\0') { - *pTmp = *(pTmp + 1);//å‰ç§»,包括移最åŽç»“æŸç¬¦ - pTmp++; - } - } else { - pStr++; - } - } - return; + //去掉æ¢è¡Œ + char *pStr; + pStr = strchr (Str, '\n'); + if (pStr != NULL) { + *pStr = 0; + } + //去掉尾部回车 + int Len = strlen(Str); + if ( Len > 0 ) { + if ( Str[Len - 1] == '\r' ) { + Str[Len - 1] = '\0'; + } + } + //去掉空格 + pStr = Str; + while (*pStr != '\0') { //没到尾部 + if (*pStr == ' ') { //é‡åˆ°ç©ºæ ¼ + char *pTmp = pStr;//从空格处开始 + while (*pTmp != '\0') { + *pTmp = *(pTmp + 1);//å‰ç§»,包括移最åŽç»“æŸç¬¦ + pTmp++; + } + } else { + pStr++; + } + } + return; } diff --git a/tvapi/libtv/tvconfig/CIniFile.h b/tvapi/libtv/tvconfig/CIniFile.h index 00b45a2..9490123 100644 --- a/tvapi/libtv/tvconfig/CIniFile.h +++ b/tvapi/libtv/tvconfig/CIniFile.h @@ -8,65 +8,65 @@ static const int MAX_INI_FILE_LINE_LEN = 512; typedef enum _LINE_TYPE { - LINE_TYPE_SECTION = 0, - LINE_TYPE_KEY, - LINE_TYPE_COMMENT, + LINE_TYPE_SECTION = 0, + LINE_TYPE_KEY, + LINE_TYPE_COMMENT, } LINE_TYPE; //基于链表结构 //行链表,去掉多余的空格和回车,æ¢è¡ŒåŽ. typedef struct _LINE { - LINE_TYPE type;//类型 - char Text[MAX_INI_FILE_LINE_LEN];//内容 - int LineLen; - char *pKeyStart; - char *pKeyEnd; - char *pValueStart; - char *pValueEnd; - struct _LINE *pNext; + LINE_TYPE type;//类型 + char Text[MAX_INI_FILE_LINE_LEN];//内容 + int LineLen; + char *pKeyStart; + char *pKeyEnd; + char *pValueStart; + char *pValueEnd; + struct _LINE *pNext; } LINE; //段链表 typedef struct _SECTION { - LINE *pLine; - struct _SECTION *pNext; + LINE *pLine; + struct _SECTION *pNext; } SECTION; class CIniFile { public: - //const int MAX_SECTION_NAME_LEN = 16; - //const int MAX_KEY_NAME_LEN = 64; - //const int MAX_VALUE_LEN = 512; + //const int MAX_SECTION_NAME_LEN = 16; + //const int MAX_KEY_NAME_LEN = 64; + //const int MAX_VALUE_LEN = 512; - CIniFile(); - ~CIniFile(); - int LoadFromFile(const char *filename); - int LoadFromString(const char *str); + CIniFile(); + ~CIniFile(); + int LoadFromFile(const char *filename); + int LoadFromString(const char *str); - int SaveToFile(const char *filename = NULL); + int SaveToFile(const char *filename = NULL); - int SetString(const char *section, const char *key, const char *value); - int SetInt(const char *section, const char *key, int value); + int SetString(const char *section, const char *key, const char *value); + int SetInt(const char *section, const char *key, int value); - const char *GetString(const char *section, const char *key, const char *def_value); - int GetInt(const char *section, const char *key, int def_value); + const char *GetString(const char *section, const char *key, const char *def_value); + int GetInt(const char *section, const char *key, int def_value); - void printAll(); + void printAll(); private: - LINE_TYPE getLineType(char *Str); - //去掉串里é¢çš„,空格,回车,æ¢è¡Œ,s指å‘转æ¢å¤„ç†åŽçš„串的开头 - void allTrim(char *Str); + LINE_TYPE getLineType(char *Str); + //去掉串里é¢çš„,空格,回车,æ¢è¡Œ,s指å‘转æ¢å¤„ç†åŽçš„串的开头 + void allTrim(char *Str); - SECTION *getSection(const char *section); - LINE *getKeyLineAtSec(SECTION *pSec, const char *key); + SECTION *getSection(const char *section); + LINE *getKeyLineAtSec(SECTION *pSec, const char *key); - void FreeAllMem(); - int InsertSection(SECTION *pSec); - int InsertKeyLine(SECTION *pSec, LINE *line); - char mpFileName[256]; - FILE *m_pIniFile; - LINE *mpFirstLine; - SECTION *mpFirstSection; + void FreeAllMem(); + int InsertSection(SECTION *pSec); + int InsertKeyLine(SECTION *pSec, LINE *line); + char mpFileName[256]; + FILE *m_pIniFile; + LINE *mpFirstLine; + SECTION *mpFirstSection; }; #endif //end of INI_FILE_H_ diff --git a/tvapi/libtv/tvconfig/tvconfig.cpp b/tvapi/libtv/tvconfig/tvconfig.cpp index 02b0afa..4d45735 100644 --- a/tvapi/libtv/tvconfig/tvconfig.cpp +++ b/tvapi/libtv/tvconfig/tvconfig.cpp @@ -14,40 +14,40 @@ static char mpFilePath[256] = {0}; static CIniFile *pIniFile = NULL; int tv_config_load(const char *file_name) { - if (pIniFile != NULL) - delete pIniFile; + if (pIniFile != NULL) + delete pIniFile; - pIniFile = new CIniFile(); - pIniFile->LoadFromFile(file_name); - strcpy(mpFilePath, file_name); - return 0; + pIniFile = new CIniFile(); + pIniFile->LoadFromFile(file_name); + strcpy(mpFilePath, file_name); + return 0; } int tv_config_unload() { - if (pIniFile != NULL) - delete pIniFile; - return 0; + if (pIniFile != NULL) + delete pIniFile; + return 0; } int config_set_str(const char *section, const char *key, const char *value) { - return pIniFile->SetString(section, key, value); + return pIniFile->SetString(section, key, value); } const char *config_get_str(const char *section, const char *key, const char *def_value) { - return pIniFile->GetString(section, key, def_value); + return pIniFile->GetString(section, key, def_value); } int config_get_int(const char *section, const char *key, const int def_value) { - return pIniFile->GetInt(section, key, def_value); + return pIniFile->GetInt(section, key, def_value); } int config_set_int(const char *section, const char *key, const int value) { - pIniFile->SetInt(section, key, value); - return 0; + pIniFile->SetInt(section, key, value); + return 0; } diff --git a/tvapi/libtv/tvdb/CTvChannel.cpp b/tvapi/libtv/tvdb/CTvChannel.cpp index c8d8428..d39d025 100644 --- a/tvapi/libtv/tvdb/CTvChannel.cpp +++ b/tvapi/libtv/tvdb/CTvChannel.cpp @@ -19,91 +19,91 @@ void CTvChannel::createFromCursor(CTvDatabase::Cursor &c) { - int col; - int src, freq, mod, symb, bw, satid, satpolar; - - col = c.getColumnIndex("db_id"); - this->id = c.getInt(col); - - col = c.getColumnIndex("ts_id"); - this->dvbTSID = c.getInt(col); - - col = c.getColumnIndex("src"); - src = c.getInt(col); - - col = c.getColumnIndex("freq"); - freq = c.getInt(col); - - if (src == MODE_QAM) { - col = c.getColumnIndex("mod"); - mod = c.getInt(col); - - col = c.getColumnIndex("symb"); - symb = c.getInt(col); - - frequency = freq; - modulation = mod; - symbolRate = symb; - mode = MODE_QAM; - - } else if (src == MODE_OFDM) { - col = c.getColumnIndex("bw"); - bw = c.getInt(col); - - frequency = freq; - bandwidth = bw; - mode = MODE_OFDM; - - } else if (src == MODE_ATSC) { - col = c.getColumnIndex("mod"); - mod = c.getInt(col); - - frequency = freq; - modulation = mod; - mode = MODE_ATSC; - } else if (src == MODE_ANALOG) { - col = c.getColumnIndex("std"); - int std = c.getInt(col); - col = c.getColumnIndex("aud_mode"); - int aud_mode = c.getInt(col); - col = c.getColumnIndex("flags"); - int afc_flag = c.getInt(col); - - frequency = freq; - audio = aud_mode; - standard = std; - afc_data = afc_flag; - mode = MODE_ANALOG; - } else if (src == MODE_QPSK) { - col = c.getColumnIndex("symb"); - symb = c.getInt(col); - - col = c.getColumnIndex("db_sat_para_id"); - satid = c.getInt(col); - - col = c.getColumnIndex("polar"); - satpolar = c.getInt(col); - - frequency = freq; - symbolRate = symb; - sat_id = satid; - sat_polarisation = satpolar; - mode = MODE_QPSK; - - /*new tv_satparams*/ - //showboz - //TVSatellite sat = TVSatellite.tvSatelliteSelect(sat_id); - //tv_satparams = sat.getParams(); - } else if (src == MODE_DTMB) { - col = c.getColumnIndex("bw"); - bw = c.getInt(col); - - frequency = freq; - bandwidth = bw; - mode = MODE_DTMB; - } - - this->fendID = 0; + int col; + int src, freq, mod, symb, bw, satid, satpolar; + + col = c.getColumnIndex("db_id"); + this->id = c.getInt(col); + + col = c.getColumnIndex("ts_id"); + this->dvbTSID = c.getInt(col); + + col = c.getColumnIndex("src"); + src = c.getInt(col); + + col = c.getColumnIndex("freq"); + freq = c.getInt(col); + + if (src == MODE_QAM) { + col = c.getColumnIndex("mod"); + mod = c.getInt(col); + + col = c.getColumnIndex("symb"); + symb = c.getInt(col); + + frequency = freq; + modulation = mod; + symbolRate = symb; + mode = MODE_QAM; + + } else if (src == MODE_OFDM) { + col = c.getColumnIndex("bw"); + bw = c.getInt(col); + + frequency = freq; + bandwidth = bw; + mode = MODE_OFDM; + + } else if (src == MODE_ATSC) { + col = c.getColumnIndex("mod"); + mod = c.getInt(col); + + frequency = freq; + modulation = mod; + mode = MODE_ATSC; + } else if (src == MODE_ANALOG) { + col = c.getColumnIndex("std"); + int std = c.getInt(col); + col = c.getColumnIndex("aud_mode"); + int aud_mode = c.getInt(col); + col = c.getColumnIndex("flags"); + int afc_flag = c.getInt(col); + + frequency = freq; + audio = aud_mode; + standard = std; + afc_data = afc_flag; + mode = MODE_ANALOG; + } else if (src == MODE_QPSK) { + col = c.getColumnIndex("symb"); + symb = c.getInt(col); + + col = c.getColumnIndex("db_sat_para_id"); + satid = c.getInt(col); + + col = c.getColumnIndex("polar"); + satpolar = c.getInt(col); + + frequency = freq; + symbolRate = symb; + sat_id = satid; + sat_polarisation = satpolar; + mode = MODE_QPSK; + + /*new tv_satparams*/ + //showboz + //TVSatellite sat = TVSatellite.tvSatelliteSelect(sat_id); + //tv_satparams = sat.getParams(); + } else if (src == MODE_DTMB) { + col = c.getColumnIndex("bw"); + bw = c.getInt(col); + + frequency = freq; + bandwidth = bw; + mode = MODE_DTMB; + } + + this->fendID = 0; } @@ -114,37 +114,37 @@ CTvChannel::CTvChannel() CTvChannel::CTvChannel(int dbID, int mode, int freq, int bw, int mod, int symb, int ofdm, int channelNum) { - //other member not init,just a paras - if (mode == MODE_QAM) { - id = dbID; - frequency = freq; - modulation = mod; - symbolRate = symb; - mode = MODE_QAM; - } else if (mode == MODE_OFDM) { - id = dbID; - frequency = freq; - bandwidth = bw; - mode = MODE_OFDM; - } else if (mode == MODE_ATSC) { - id = dbID; - frequency = freq; - modulation = mod; - logicalChannelNum = channelNum; - mod = MODE_ATSC; - } else if (mode == MODE_ANALOG) { - id = dbID; - frequency = freq; - audio = 0; - standard = 0; - afc_data = 0; - mode = MODE_ANALOG; - } else if (mode == MODE_DTMB) { - id = dbID; - frequency = freq; - bandwidth = bw; - mode = MODE_DTMB; - } + //other member not init,just a paras + if (mode == MODE_QAM) { + id = dbID; + frequency = freq; + modulation = mod; + symbolRate = symb; + mode = MODE_QAM; + } else if (mode == MODE_OFDM) { + id = dbID; + frequency = freq; + bandwidth = bw; + mode = MODE_OFDM; + } else if (mode == MODE_ATSC) { + id = dbID; + frequency = freq; + modulation = mod; + logicalChannelNum = channelNum; + mod = MODE_ATSC; + } else if (mode == MODE_ANALOG) { + id = dbID; + frequency = freq; + audio = 0; + standard = 0; + afc_data = 0; + mode = MODE_ANALOG; + } else if (mode == MODE_DTMB) { + id = dbID; + frequency = freq; + bandwidth = bw; + mode = MODE_DTMB; + } } CTvChannel::~CTvChannel() @@ -154,118 +154,118 @@ CTvChannel::~CTvChannel() Vector CTvChannel::tvChannelList(int sat_id) { - Vector v_channel; - return v_channel; + Vector v_channel; + return v_channel; } int CTvChannel::selectByID(int cid, CTvChannel &channel) { - String8 cmd = String8("select * from ts_table where ts_table.db_id = ") + String8::format("%d", cid); - CTvDatabase::Cursor c; - CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - channel.createFromCursor(c); - } else { - c.close(); - return -1; - } - c.close(); - - return 0; + String8 cmd = String8("select * from ts_table where ts_table.db_id = ") + String8::format("%d", cid); + CTvDatabase::Cursor c; + CTvDatabase::GetTvDb()->select(cmd, c); + + if (c.moveToFirst()) { + channel.createFromCursor(c); + } else { + c.close(); + return -1; + } + c.close(); + + return 0; } int CTvChannel::SelectByFreq(int freq, CTvChannel &channel) { - String8 cmd ; - CTvDatabase::Cursor c; - int iOutRet = 0; - - do { - cmd = String8("select * from ts_table where ts_table.freq = ") + String8::format("%d", freq); - CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - channel.createFromCursor(c); - } else { - iOutRet = -1; - break; - } - - cmd = String8("delete from ts_table where ts_table.freq = ") + String8::format("%d", freq); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - } while (false); - - c.close(); - return iOutRet; + String8 cmd ; + CTvDatabase::Cursor c; + int iOutRet = 0; + + do { + cmd = String8("select * from ts_table where ts_table.freq = ") + String8::format("%d", freq); + CTvDatabase::GetTvDb()->select(cmd, c); + + if (c.moveToFirst()) { + channel.createFromCursor(c); + } else { + iOutRet = -1; + break; + } + + cmd = String8("delete from ts_table where ts_table.freq = ") + String8::format("%d", freq); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); + } while (false); + + c.close(); + return iOutRet; } int CTvChannel::DeleteBetweenFreq(int beginFreq, int endFreq) { - String8 cmd ; - CTvDatabase::Cursor c; - int iOutRet = 0; - CTvChannel channel; - - do { - cmd = String8("select * from ts_table where ts_table.freq >= ") + String8::format("%d", beginFreq) - + String8("and ts_table.freq <= ") + String8::format("%d", endFreq); - CTvDatabase::GetTvDb()->select(cmd, c); - if (c.moveToFirst()) { - do { - channel.createFromCursor(c); - cmd = String8("delete from ts_table where ts_table.freq = ") + String8::format("%d", channel.frequency); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - } while (c.moveToNext()); - } else { - iOutRet = -1; - break; - } - - } while (false); - - c.close(); - return iOutRet; + String8 cmd ; + CTvDatabase::Cursor c; + int iOutRet = 0; + CTvChannel channel; + + do { + cmd = String8("select * from ts_table where ts_table.freq >= ") + String8::format("%d", beginFreq) + + String8("and ts_table.freq <= ") + String8::format("%d", endFreq); + CTvDatabase::GetTvDb()->select(cmd, c); + if (c.moveToFirst()) { + do { + channel.createFromCursor(c); + cmd = String8("delete from ts_table where ts_table.freq = ") + String8::format("%d", channel.frequency); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); + } while (c.moveToNext()); + } else { + iOutRet = -1; + break; + } + + } while (false); + + c.close(); + return iOutRet; } int CTvChannel::CleanAllChannelBySrc(int src) { - String8 cmd = String8("delete from ts_table where src = ") + String8::format("%d", src); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - return 0; + String8 cmd = String8("delete from ts_table where src = ") + String8::format("%d", src); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); + return 0; } int CTvChannel::getChannelListBySrc(int src, Vector< sp > &v_channel) { - CTvDatabase::Cursor c; - CTvChannel *channel; - do { - String8 cmd = String8("select * from ts_table where src = ") + String8::format("%d", src); - CTvDatabase::GetTvDb()->select(cmd, c); - if (c.moveToFirst()) { - do { - channel = new CTvChannel(); - channel->createFromCursor(c); - v_channel.add(channel); - } while (c.moveToNext()); - } else { - break; - } - } while (false); - - return 0; + CTvDatabase::Cursor c; + CTvChannel *channel; + do { + String8 cmd = String8("select * from ts_table where src = ") + String8::format("%d", src); + CTvDatabase::GetTvDb()->select(cmd, c); + if (c.moveToFirst()) { + do { + channel = new CTvChannel(); + channel->createFromCursor(c); + v_channel.add(channel); + } while (c.moveToNext()); + } else { + break; + } + } while (false); + + return 0; } int CTvChannel::updateByID(int progID, int std, int freq, int fineFreq) { - String8 cmd = String8("update ts_table set std = ") + String8::format("%d", std) + - String8(", freq = ") + String8::format("%d", freq) + - String8(", flags = ") + String8::format("%d", fineFreq) + - String8(" where ts_table.db_id = ") + String8::format("%d", progID); - LOGD("%s, cmd = %s\n", "TV", cmd.string()); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); + String8 cmd = String8("update ts_table set std = ") + String8::format("%d", std) + + String8(", freq = ") + String8::format("%d", freq) + + String8(", flags = ") + String8::format("%d", fineFreq) + + String8(" where ts_table.db_id = ") + String8::format("%d", progID); + LOGD("%s, cmd = %s\n", "TV", cmd.string()); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); - return 0; + return 0; } @@ -281,7 +281,7 @@ void CTvChannel::tvChannelDelBySatID(int id) int CTvChannel::getDVBTSID() { - return dvbTSID; + return dvbTSID; } void CTvChannel::getDVBOrigNetID() diff --git a/tvapi/libtv/tvdb/CTvChannel.h b/tvapi/libtv/tvdb/CTvChannel.h index b1a4686..6b01f58 100644 --- a/tvapi/libtv/tvdb/CTvChannel.h +++ b/tvapi/libtv/tvdb/CTvChannel.h @@ -24,262 +24,262 @@ using namespace android; class CTvChannel: public LightRefBase { public : - static const int FE_HAS_SIGNAL = 0x01; - static const int FE_HAS_CARRIER = 0x02; - static const int FE_HAS_VITERBI = 0x04; - static const int FE_HAS_SYNC = 0x08; - /**Ëø¶¨*/ - static const int FE_HAS_LOCK = 0x10; - /**³¬Ê±*/ - static const int FE_TIMEDOUT = 0x20; - static const int FE_REINIT = 0x40; + static const int FE_HAS_SIGNAL = 0x01; + static const int FE_HAS_CARRIER = 0x02; + static const int FE_HAS_VITERBI = 0x04; + static const int FE_HAS_SYNC = 0x08; + /**Ëø¶¨*/ + static const int FE_HAS_LOCK = 0x10; + /**³¬Ê±*/ + static const int FE_TIMEDOUT = 0x20; + static const int FE_REINIT = 0x40; - /**QPSKģʽ*/ - static const int MODE_QPSK = 0; - /**QAMģʽ*/ - static const int MODE_QAM = 1; - /**OFDMģʽ*/ - static const int MODE_OFDM = 2; - /**ATSCģʽ*/ - static const int MODE_ATSC = 3; - /**Ä£Äâģʽ*/ - static const int MODE_ANALOG = 4; - /**DTMBģʽ*/ - static const int MODE_DTMB = 5; + /**QPSKģʽ*/ + static const int MODE_QPSK = 0; + /**QAMģʽ*/ + static const int MODE_QAM = 1; + /**OFDMģʽ*/ + static const int MODE_OFDM = 2; + /**ATSCģʽ*/ + static const int MODE_ATSC = 3; + /**Ä£Äâģʽ*/ + static const int MODE_ANALOG = 4; + /**DTMBģʽ*/ + static const int MODE_DTMB = 5; - /**8MHz´ø¿í*/ - static const int BANDWIDTH_8_MHZ = 0; - /**7MHz´ø¿í*/ - static const int BANDWIDTH_7_MHZ = 1; - /**6MHz´ø¿í*/ - static const int BANDWIDTH_6_MHZ = 2; - /**×Ô¶¯´ø¿í¼ì²â*/ - static const int BANDWIDTH_AUTO = 3; - /**5MHZ´ø¿í*/ - static const int BANDWIDTH_5_MHZ = 4; - /**10MHZ´ø¿í*/ - static const int BANDWIDTH_10_MHZ = 5; + /**8MHz´ø¿í*/ + static const int BANDWIDTH_8_MHZ = 0; + /**7MHz´ø¿í*/ + static const int BANDWIDTH_7_MHZ = 1; + /**6MHz´ø¿í*/ + static const int BANDWIDTH_6_MHZ = 2; + /**×Ô¶¯´ø¿í¼ì²â*/ + static const int BANDWIDTH_AUTO = 3; + /**5MHZ´ø¿í*/ + static const int BANDWIDTH_5_MHZ = 4; + /**10MHZ´ø¿í*/ + static const int BANDWIDTH_10_MHZ = 5; - /**QPSKµ÷ÖÆ*/ - static const int MODULATION_QPSK = 0; - /**QAM16µ÷ÖÆ*/ - static const int MODULATION_QAM_16 = 1; - /**QAM32µ÷ÖÆ*/ - static const int MODULATION_QAM_32 = 2; - /**QAM64µ÷ÖÆ*/ - static const int MODULATION_QAM_64 = 3; - /**QAM128µ÷ÖÆ*/ - static const int MODULATION_QAM_128 = 4; - /**QAM256µ÷ÖÆ*/ - static const int MODULATION_QAM_256 = 5; - /**QAMµ÷ÖÆ(×Ô¶¯¼ì²â)*/ - static const int MODULATION_QAM_AUTO = 6; - /**VSB8µ÷ÖÆ*/ - static const int MODULATION_VSB_8 = 7; - /**VSB16µ÷ÖÆ*/ - static const int MODULATION_VSB_16 = 8; - /**PSK8µ÷ÖÆ*/ - static const int MODULATION_PSK_8 = 9; - /**APSK16µ÷ÖÆ*/ - static const int MODULATION_APSK_16 = 10; - /**APSK32µ÷ÖÆ*/ - static const int MODULATION_APSK_32 = 11; - /**DQPSKµ÷ÖÆ*/ - static const int MODULATION_DQPSK = 12; + /**QPSKµ÷ÖÆ*/ + static const int MODULATION_QPSK = 0; + /**QAM16µ÷ÖÆ*/ + static const int MODULATION_QAM_16 = 1; + /**QAM32µ÷ÖÆ*/ + static const int MODULATION_QAM_32 = 2; + /**QAM64µ÷ÖÆ*/ + static const int MODULATION_QAM_64 = 3; + /**QAM128µ÷ÖÆ*/ + static const int MODULATION_QAM_128 = 4; + /**QAM256µ÷ÖÆ*/ + static const int MODULATION_QAM_256 = 5; + /**QAMµ÷ÖÆ(×Ô¶¯¼ì²â)*/ + static const int MODULATION_QAM_AUTO = 6; + /**VSB8µ÷ÖÆ*/ + static const int MODULATION_VSB_8 = 7; + /**VSB16µ÷ÖÆ*/ + static const int MODULATION_VSB_16 = 8; + /**PSK8µ÷ÖÆ*/ + static const int MODULATION_PSK_8 = 9; + /**APSK16µ÷ÖÆ*/ + static const int MODULATION_APSK_16 = 10; + /**APSK32µ÷ÖÆ*/ + static const int MODULATION_APSK_32 = 11; + /**DQPSKµ÷ÖÆ*/ + static const int MODULATION_DQPSK = 12; - /**µ¥ÉùµÀ*/ - static const int AUDIO_MONO = 0x0000; - /**Á¢ÌåÉù*/ - static const int AUDIO_STEREO = 0x0001; - /**ÓïÑÔ2*/ - static const int AUDIO_LANG2 = 0x0002; - /**SAP*/ - static const int AUDIO_SAP = 0x0002; - /**ÓïÑÔ1*/ - static const int AUDIO_LANG1 = 0x0003; - /**ÓïÑÔ1/2*/ - static const int AUDIO_LANG1_LANG2 = 0x0004; + /**µ¥ÉùµÀ*/ + static const int AUDIO_MONO = 0x0000; + /**Á¢ÌåÉù*/ + static const int AUDIO_STEREO = 0x0001; + /**ÓïÑÔ2*/ + static const int AUDIO_LANG2 = 0x0002; + /**SAP*/ + static const int AUDIO_SAP = 0x0002; + /**ÓïÑÔ1*/ + static const int AUDIO_LANG1 = 0x0003; + /**ÓïÑÔ1/2*/ + static const int AUDIO_LANG1_LANG2 = 0x0004; - /**PAL B*/ - static const int STD_PAL_B = 0x00000001; - /**PAL B1*/ - static const int STD_PAL_B1 = 0x00000002; - /**PAL G*/ - static const int STD_PAL_G = 0x00000004; - /**PAL H*/ - static const int STD_PAL_H = 0x00000008; - /**PAL I*/ - static const int STD_PAL_I = 0x00000010; - /**PAL D*/ - static const int STD_PAL_D = 0x00000020; - /**PAL D1*/ - static const int STD_PAL_D1 = 0x00000040; - /**PAL K*/ - static const int STD_PAL_K = 0x00000080; - /**PAL M*/ - static const int STD_PAL_M = 0x00000100; - /**PAL N*/ - static const int STD_PAL_N = 0x00000200; - /**PAL Nc*/ - static const int STD_PAL_Nc = 0x00000400; - /**PAL 60*/ - static const int STD_PAL_60 = 0x00000800; - /**NTSC M*/ - static const int STD_NTSC_M = 0x00001000; - /**NTSC M JP*/ - static const int STD_NTSC_M_JP = 0x00002000; - /**NTSC 443*/ - static const int STD_NTSC_443 = 0x00004000; - /**NTSC M KR*/ - static const int STD_NTSC_M_KR = 0x00008000; - /**SECAM B*/ - static const int STD_SECAM_B = 0x00010000; - /**SECAM D*/ - static const int STD_SECAM_D = 0x00020000; - /**SECAM G*/ - static const int STD_SECAM_G = 0x00040000; - /**SECAM H*/ - static const int STD_SECAM_H = 0x00080000; - /**SECAM K*/ - static const int STD_SECAM_K = 0x00100000; - /**SECAM K1*/ - static const int STD_SECAM_K1 = 0x00200000; - /**SECAM L*/ - static const int STD_SECAM_L = 0x00400000; - /**SECAM LC*/ - static const int STD_SECAM_LC = 0x00800000; - /**ATSC VSB8*/ - static const int STD_ATSC_8_VSB = 0x01000000; - /**ATSC VSB16*/ - static const int STD_ATSC_16_VSB = 0x02000000; - /**NTSC*/ - static const int STD_NTSC = STD_NTSC_M | STD_NTSC_M_JP | STD_NTSC_M_KR; - /**SECAM DK*/ - static const int STD_SECAM_DK = STD_SECAM_D | STD_SECAM_K | STD_SECAM_K1; - /**SECAM*/ - static const int STD_SECAM = STD_SECAM_B | STD_SECAM_G | STD_SECAM_H | STD_SECAM_DK | STD_SECAM_L | STD_SECAM_LC; - /**PAL BG*/ - static const int STD_PAL_BG = STD_PAL_B | STD_PAL_B1 | STD_PAL_G; - /**PAL DK*/ - static const int STD_PAL_DK = STD_PAL_D | STD_PAL_D1 | STD_PAL_K; - /**PAL*/ - static const int STD_PAL = STD_PAL_BG | STD_PAL_DK | STD_PAL_H | STD_PAL_I; + /**PAL B*/ + static const int STD_PAL_B = 0x00000001; + /**PAL B1*/ + static const int STD_PAL_B1 = 0x00000002; + /**PAL G*/ + static const int STD_PAL_G = 0x00000004; + /**PAL H*/ + static const int STD_PAL_H = 0x00000008; + /**PAL I*/ + static const int STD_PAL_I = 0x00000010; + /**PAL D*/ + static const int STD_PAL_D = 0x00000020; + /**PAL D1*/ + static const int STD_PAL_D1 = 0x00000040; + /**PAL K*/ + static const int STD_PAL_K = 0x00000080; + /**PAL M*/ + static const int STD_PAL_M = 0x00000100; + /**PAL N*/ + static const int STD_PAL_N = 0x00000200; + /**PAL Nc*/ + static const int STD_PAL_Nc = 0x00000400; + /**PAL 60*/ + static const int STD_PAL_60 = 0x00000800; + /**NTSC M*/ + static const int STD_NTSC_M = 0x00001000; + /**NTSC M JP*/ + static const int STD_NTSC_M_JP = 0x00002000; + /**NTSC 443*/ + static const int STD_NTSC_443 = 0x00004000; + /**NTSC M KR*/ + static const int STD_NTSC_M_KR = 0x00008000; + /**SECAM B*/ + static const int STD_SECAM_B = 0x00010000; + /**SECAM D*/ + static const int STD_SECAM_D = 0x00020000; + /**SECAM G*/ + static const int STD_SECAM_G = 0x00040000; + /**SECAM H*/ + static const int STD_SECAM_H = 0x00080000; + /**SECAM K*/ + static const int STD_SECAM_K = 0x00100000; + /**SECAM K1*/ + static const int STD_SECAM_K1 = 0x00200000; + /**SECAM L*/ + static const int STD_SECAM_L = 0x00400000; + /**SECAM LC*/ + static const int STD_SECAM_LC = 0x00800000; + /**ATSC VSB8*/ + static const int STD_ATSC_8_VSB = 0x01000000; + /**ATSC VSB16*/ + static const int STD_ATSC_16_VSB = 0x02000000; + /**NTSC*/ + static const int STD_NTSC = STD_NTSC_M | STD_NTSC_M_JP | STD_NTSC_M_KR; + /**SECAM DK*/ + static const int STD_SECAM_DK = STD_SECAM_D | STD_SECAM_K | STD_SECAM_K1; + /**SECAM*/ + static const int STD_SECAM = STD_SECAM_B | STD_SECAM_G | STD_SECAM_H | STD_SECAM_DK | STD_SECAM_L | STD_SECAM_LC; + /**PAL BG*/ + static const int STD_PAL_BG = STD_PAL_B | STD_PAL_B1 | STD_PAL_G; + /**PAL DK*/ + static const int STD_PAL_DK = STD_PAL_D | STD_PAL_D1 | STD_PAL_K; + /**PAL*/ + static const int STD_PAL = STD_PAL_BG | STD_PAL_DK | STD_PAL_H | STD_PAL_I; - //static const int TUNER_STD_MN = STD_PAL_M|STD_PAL_N|STD_PAL_Nc| STD_NTSC - static const int STD_B = STD_PAL_B | STD_PAL_B1 | STD_SECAM_B; - static const int STD_GH = STD_PAL_G | STD_PAL_H | STD_SECAM_G | STD_SECAM_H; - static const int STD_DK = STD_PAL_DK | STD_SECAM_DK; - static const int STD_M = STD_PAL_M | STD_NTSC_M; - static const int STD_BG = STD_PAL_BG | STD_SECAM_B | STD_SECAM_G ; + //static const int TUNER_STD_MN = STD_PAL_M|STD_PAL_N|STD_PAL_Nc| STD_NTSC + static const int STD_B = STD_PAL_B | STD_PAL_B1 | STD_SECAM_B; + static const int STD_GH = STD_PAL_G | STD_PAL_H | STD_SECAM_G | STD_SECAM_H; + static const int STD_DK = STD_PAL_DK | STD_SECAM_DK; + static const int STD_M = STD_PAL_M | STD_NTSC_M; + static const int STD_BG = STD_PAL_BG | STD_SECAM_B | STD_SECAM_G ; - static const int COLOR_AUTO = 0x02000000; - static const int COLOR_PAL = 0x04000000; - static const int COLOR_NTSC = 0x08000000; - static const int COLOR_SECAM = 0x10000000; + static const int COLOR_AUTO = 0x02000000; + static const int COLOR_PAL = 0x04000000; + static const int COLOR_NTSC = 0x08000000; + static const int COLOR_SECAM = 0x10000000; - /**ˮƽ¼«ÐÔ*/ - static const int SAT_POLARISATION_H = 0; - /**´¹Ö±¼«ÏÞ*/ - static const int SAT_POLARISATION_V = 1; + /**ˮƽ¼«ÐÔ*/ + static const int SAT_POLARISATION_H = 0; + /**´¹Ö±¼«ÏÞ*/ + static const int SAT_POLARISATION_V = 1; public: - CTvChannel(); - CTvChannel(int dbID, int mode, int freq, int bw, int mod, int sym, int ofdm, int channelNum); - ~CTvChannel(); - // ¸ù¾ÝTVChannelParams,ÏòÊý¾Ý¿âÌí¼ÓÒ»¸öChannel + CTvChannel(); + CTvChannel(int dbID, int mode, int freq, int bw, int mod, int sym, int ofdm, int channelNum); + ~CTvChannel(); + // ¸ù¾ÝTVChannelParams,ÏòÊý¾Ý¿âÌí¼ÓÒ»¸öChannel - // *´´½¨µ±Ç°ÎÀÐÇËùÓÐͨµÀ - // *@param sat_id ÎÀÐÇid - // *@return ·µ»Ø´´½¨µÄͨµÀ - static Vector tvChannelList(int sat_id); - static int selectByID(int id, CTvChannel &c); - static int updateByID(int progID, int std, int freq, int fineFreq); - static int SelectByFreq(int freq, CTvChannel &channel); - static int DeleteBetweenFreq(int beginFreq, int endFreq); - static int CleanAllChannelBySrc(int src); - static int getChannelListBySrc(int src, Vector< sp > &v_channel); - void tvChannelDel(); - static void tvChannelDelBySatID(int id); - int getID() - { - return id; - }; - int getDVBTSID(); - void getDVBOrigNetID(); - void getFrontendID(); - void getTSSourceID(); - void isDVBCMode(); - void setFrequency(); - int getFrequency() - { - return frequency; - } - int getSymbolRate() - { - return symbolRate; - } - int getModulation() - { - return modulation; - } - int getBandwidth() - { - return bandwidth; - } - int getMode() - { - return mode; - } + // *´´½¨µ±Ç°ÎÀÐÇËùÓÐͨµÀ + // *@param sat_id ÎÀÐÇid + // *@return ·µ»Ø´´½¨µÄͨµÀ + static Vector tvChannelList(int sat_id); + static int selectByID(int id, CTvChannel &c); + static int updateByID(int progID, int std, int freq, int fineFreq); + static int SelectByFreq(int freq, CTvChannel &channel); + static int DeleteBetweenFreq(int beginFreq, int endFreq); + static int CleanAllChannelBySrc(int src); + static int getChannelListBySrc(int src, Vector< sp > &v_channel); + void tvChannelDel(); + static void tvChannelDelBySatID(int id); + int getID() + { + return id; + }; + int getDVBTSID(); + void getDVBOrigNetID(); + void getFrontendID(); + void getTSSourceID(); + void isDVBCMode(); + void setFrequency(); + int getFrequency() + { + return frequency; + } + int getSymbolRate() + { + return symbolRate; + } + int getModulation() + { + return modulation; + } + int getBandwidth() + { + return bandwidth; + } + int getMode() + { + return mode; + } - int getStd() - { - return standard; - }; - int getAfcData() - { - return afc_data; - }; - int getLogicalChannelNum() - { - return logicalChannelNum; - }; - // ÉèÖ÷ûºÅÂÊ(QPSK/QAMģʽ) - // @param symbolRate ·ûºÅÂÊ - void setSymbolRate(); - // ÉèÖü«ÐÔ(QPSKģʽ) - void setPolarisation(); - void setATVAudio(); - // ÐÞ¸ÄÄ£ÄâÊÓƵÖÆʽ - void setATVVideoFormat(); - void setATVAudioFormat(); - void setATVFreq(); - void setATVAfcData(); - // + int getStd() + { + return standard; + }; + int getAfcData() + { + return afc_data; + }; + int getLogicalChannelNum() + { + return logicalChannelNum; + }; + // ÉèÖ÷ûºÅÂÊ(QPSK/QAMģʽ) + // @param symbolRate ·ûºÅÂÊ + void setSymbolRate(); + // ÉèÖü«ÐÔ(QPSKģʽ) + void setPolarisation(); + void setATVAudio(); + // ÐÞ¸ÄÄ£ÄâÊÓƵÖÆʽ + void setATVVideoFormat(); + void setATVAudioFormat(); + void setATVFreq(); + void setATVAfcData(); + // private: - void createFromCursor(CTvDatabase::Cursor &c); + void createFromCursor(CTvDatabase::Cursor &c); - // - int id; - int dvbTSID; - int dvbOrigNetID; - int fendID; - int tsSourceID; + // + int id; + int dvbTSID; + int dvbOrigNetID; + int fendID; + int tsSourceID; - int mode; - int frequency; - int symbolRate; - int modulation; - int bandwidth; - int audio; - int standard; - int afc_data; - int sat_id; - int logicalChannelNum; - //showboz - //public TVSatelliteParams tv_satparams; - int sat_polarisation; + int mode; + int frequency; + int symbolRate; + int modulation; + int bandwidth; + int audio; + int standard; + int afc_data; + int sat_id; + int logicalChannelNum; + //showboz + //public TVSatelliteParams tv_satparams; + int sat_polarisation; }; diff --git a/tvapi/libtv/tvdb/CTvDatabase.cpp b/tvapi/libtv/tvdb/CTvDatabase.cpp index 5f9fd40..6113ad9 100644 --- a/tvapi/libtv/tvdb/CTvDatabase.cpp +++ b/tvapi/libtv/tvdb/CTvDatabase.cpp @@ -30,9 +30,9 @@ const char CTvDatabase::feTypes[][32] = {"dvbs", "dvbc", "dvbt", "atsc", "analog const char CTvDatabase::srvTypes[][32] = {"other", "dtv", "radio", "atv", "other"}; const char CTvDatabase::vidFmts[][32] = {"mpeg12", "mpeg4", "h264", "mjpeg", "real", "jpeg", "vc1", "avs"}; const char CTvDatabase::audFmts[][32] = {"mpeg", "pcm_s16le", "aac", "ac3", "alaw", "mulaw", "dts", "pcm_s16be", - "flac", "cook", "pcm_u8", "adpcm", "amr", "raac", "wma", "wma_pro", - "pcm_bluray", "alac", "vorbis", "aac_latm", "ape", "eac3", "pcm_wifidisplay" - }; + "flac", "cook", "pcm_u8", "adpcm", "amr", "raac", "wma", "wma_pro", + "pcm_bluray", "alac", "vorbis", "aac_latm", "ape", "eac3", "pcm_wifidisplay" + }; const char CTvDatabase::mods[][32] = {"qpsk", "qam16", "qam32", "qam64", "qam128", "qam256", "qamauto", "vsb8", "vsb16", "psk8", "apsk16", "apsk32", "dqpsk"}; const char CTvDatabase::bandwidths[][32] = {"8", "7", "6", "auto", "5", "10", "1_712"}; const char CTvDatabase::lnbPowers[][32] = {"13v", "18V", "off", "13/18v"}; @@ -40,8 +40,8 @@ const char CTvDatabase::sig22K[][32] = {"on", "off", "auto"}; const char CTvDatabase::tonebursts[][32] = {"none", "bursta", "burstb"}; const char CTvDatabase::diseqc10s[][32] = {"lnb1", "lnb2", "lnb3", "lnb4", "none"}; const char CTvDatabase::diseqc11s[][32] = {"lnb1", "lnb2", "lnb3", "lnb4", "lnb5", "lnb6", "lnb7", "lnb8", - "lnb9", "lnb10", "lnb11", "lnb12", "lnb13", "lnb14", "lnb15", "lnb16", "none" - }; + "lnb9", "lnb10", "lnb11", "lnb12", "lnb13", "lnb14", "lnb15", "lnb16", "none" + }; const char CTvDatabase::motors[][32] = {"none", "none", "none", "diseqc1.2", "diseqc1.3"}; const char CTvDatabase::ofdmModes[][32] = {"dvbt", "dvbt2"}; const char CTvDatabase::atvVideoStds[][32] = {"auto", "pal", "ntsc", "secam"}; @@ -53,58 +53,58 @@ CTvDatabase::CTvDatabase() int CTvDatabase::isFreqListExist() { - String8 cmd = String8("select * from region_table"); - CTvDatabase::Cursor c; - select(cmd, c); - return c.moveToFirst(); + String8 cmd = String8("select * from region_table"); + CTvDatabase::Cursor c; + select(cmd, c); + return c.moveToFirst(); } int CTvDatabase::UnInitTvDb() { - AM_DB_UnSetup(); - closeDb(); - return 0; + AM_DB_UnSetup(); + closeDb(); + return 0; } int CTvDatabase::InitTvDb(const char *path) { - if (path != NULL) { - if (Tv_Utils_IsFileExist(path) && config_get_int("TV", "tv_db_created", 0) == 1) { //exist or created - LOGD("tv db file(%s) exist and created, open it", path); - if (openDb(path) < 0 ) { - LOGD("db(%s) open fail", path); - return -1; - } - //setup and path set - AM_DB_Setup((char *)path, getHandle()); - if (isFreqListExist() == false) { - importXmlToDB("/etc/tv_default.xml"); - LOGD("scan region table is NULL, so import freq XML again\n"); - } - } else { - if (Tv_Utils_IsFileExist(path)) { // if just exist, create flag not set, delete it - LOGD("tv db file (%s) exist, but delete it", path); - if (unlink(path) != 0) { - LOGD("delete tv db file(%s) err=%s", path, strerror(errno)); - } - } - LOGD("tv db file(%s) not exist, create it", path); - //setup and path set - sqlite3 *h = NULL; - AM_DB_Setup((char *)path, h); - //create db - AM_DB_GetHandle(&h); - //create table - AM_DB_CreateTables(h); - setHandle(h); - //clear db - ClearDbTable(); - //insert 256 ATV Program - //load init date - importXmlToDB("/etc/tv_default.xml"); - config_set_int("TV", "tv_db_created", 1); - } + if (path != NULL) { + if (Tv_Utils_IsFileExist(path) && config_get_int("TV", "tv_db_created", 0) == 1) { //exist or created + LOGD("tv db file(%s) exist and created, open it", path); + if (openDb(path) < 0 ) { + LOGD("db(%s) open fail", path); + return -1; + } + //setup and path set + AM_DB_Setup((char *)path, getHandle()); + if (isFreqListExist() == false) { + importXmlToDB("/etc/tv_default.xml"); + LOGD("scan region table is NULL, so import freq XML again\n"); + } + } else { + if (Tv_Utils_IsFileExist(path)) { // if just exist, create flag not set, delete it + LOGD("tv db file (%s) exist, but delete it", path); + if (unlink(path) != 0) { + LOGD("delete tv db file(%s) err=%s", path, strerror(errno)); + } + } + LOGD("tv db file(%s) not exist, create it", path); + //setup and path set + sqlite3 *h = NULL; + AM_DB_Setup((char *)path, h); + //create db + AM_DB_GetHandle(&h); + //create table + AM_DB_CreateTables(h); + setHandle(h); + //clear db + ClearDbTable(); + //insert 256 ATV Program + //load init date + importXmlToDB("/etc/tv_default.xml"); + config_set_int("TV", "tv_db_created", 1); + } - } - return 0; + } + return 0; } //CTvDatabase::CTvDatabase(char* path, sqlite3 * h) //{ @@ -120,141 +120,141 @@ int CTvDatabase::InitTvDb(const char *path) CTvDatabase::~CTvDatabase() { - AM_DB_UnSetup(); + AM_DB_UnSetup(); } int CTvDatabase::getChannelParaList(char *path, Vector > &vcp) { - //?????o?????aXML????????ï¿¡?ˉ1è±???? - TiXmlDocument myDocument(path); - bool ret = myDocument.LoadFile(); - //è?·?????1????′? - TiXmlElement *RootElement = myDocument.RootElement(); - //dvbc - TiXmlElement *channel_list_element = RootElement->FirstChildElement("channel_list"); - for (TiXmlElement *channel_entry = channel_list_element->FirstChildElement("channel_entry") ; channel_entry != NULL; channel_entry = channel_entry->NextSiblingElement("channel_entry")) { - sp pCp = new ChannelPara(); - channel_entry->Attribute("frequency", &(pCp->freq)); - channel_entry->Attribute("modulation", &(pCp->modulation)); - channel_entry->Attribute("symbol_rate", &(pCp->symbol_rate)); - vcp.push_back(pCp); - } - return vcp.size(); + //?????o?????aXML????????ï¿¡?ˉ1è±???? + TiXmlDocument myDocument(path); + bool ret = myDocument.LoadFile(); + //è?·?????1????′? + TiXmlElement *RootElement = myDocument.RootElement(); + //dvbc + TiXmlElement *channel_list_element = RootElement->FirstChildElement("channel_list"); + for (TiXmlElement *channel_entry = channel_list_element->FirstChildElement("channel_entry") ; channel_entry != NULL; channel_entry = channel_entry->NextSiblingElement("channel_entry")) { + sp pCp = new ChannelPara(); + channel_entry->Attribute("frequency", &(pCp->freq)); + channel_entry->Attribute("modulation", &(pCp->modulation)); + channel_entry->Attribute("symbol_rate", &(pCp->symbol_rate)); + vcp.push_back(pCp); + } + return vcp.size(); } int CTvDatabase::ClearDbTable() { - LOGD(LOG_TAG, "Clearing database ..."); - exeSql("delete from net_table"); - exeSql("delete from ts_table"); - exeSql("delete from srv_table"); - exeSql("delete from evt_table"); - exeSql("delete from booking_table"); - exeSql("delete from grp_table"); - exeSql("delete from grp_map_table"); - exeSql("delete from dimension_table"); - exeSql("delete from sat_para_table"); - exeSql("delete from region_table"); - return 0; + LOGD(LOG_TAG, "Clearing database ..."); + exeSql("delete from net_table"); + exeSql("delete from ts_table"); + exeSql("delete from srv_table"); + exeSql("delete from evt_table"); + exeSql("delete from booking_table"); + exeSql("delete from grp_table"); + exeSql("delete from grp_map_table"); + exeSql("delete from dimension_table"); + exeSql("delete from sat_para_table"); + exeSql("delete from region_table"); + return 0; } int CTvDatabase::clearDbAllProgramInfoTable() { - LOGD(LOG_TAG, "Clearing clearDbAllProgramInfoTable ..."); - exeSql("delete from net_table"); - exeSql("delete from ts_table"); - exeSql("delete from srv_table"); - exeSql("delete from evt_table"); - exeSql("delete from booking_table"); - exeSql("delete from grp_table"); - exeSql("delete from grp_map_table"); - exeSql("delete from dimension_table"); - exeSql("delete from sat_para_table"); - return 0; + LOGD(LOG_TAG, "Clearing clearDbAllProgramInfoTable ..."); + exeSql("delete from net_table"); + exeSql("delete from ts_table"); + exeSql("delete from srv_table"); + exeSql("delete from evt_table"); + exeSql("delete from booking_table"); + exeSql("delete from grp_table"); + exeSql("delete from grp_map_table"); + exeSql("delete from dimension_table"); + exeSql("delete from sat_para_table"); + return 0; } //showboz now just channellist int CTvDatabase::importXmlToDB(const char *xmlPath) { - //delete region table before importing xml - exeSql("delete from region_table"); + //delete region table before importing xml + exeSql("delete from region_table"); - //?????o?????aXML????????ï¿¡?ˉ1è±???? - TiXmlDocument myDocument(xmlPath); - bool ret = myDocument.LoadFile(); + //?????o?????aXML????????ï¿¡?ˉ1è±???? + TiXmlDocument myDocument(xmlPath); + bool ret = myDocument.LoadFile(); - //è?·?????1????′? - TiXmlElement *RootElement = myDocument.RootElement(); - beginTransaction();//----------------------------------------------- - //list-->entry - for (TiXmlElement *channel_list_element = RootElement->FirstChildElement("channel_list"); channel_list_element != NULL; channel_list_element = channel_list_element->NextSiblingElement("channel_list")) { - //LOGD("showboz-----channel_list =%d", channel_list_element); - const char *channel_name = channel_list_element->Attribute("name"); - const char *channel_fe_type = channel_list_element->Attribute("fe_type"); - //LOGD("showboz-----channel_list name = %s type=%s", channel_name, channel_fe_type); + //è?·?????1????′? + TiXmlElement *RootElement = myDocument.RootElement(); + beginTransaction();//----------------------------------------------- + //list-->entry + for (TiXmlElement *channel_list_element = RootElement->FirstChildElement("channel_list"); channel_list_element != NULL; channel_list_element = channel_list_element->NextSiblingElement("channel_list")) { + //LOGD("showboz-----channel_list =%d", channel_list_element); + const char *channel_name = channel_list_element->Attribute("name"); + const char *channel_fe_type = channel_list_element->Attribute("fe_type"); + //LOGD("showboz-----channel_list name = %s type=%s", channel_name, channel_fe_type); - for (TiXmlElement *channel_entry = channel_list_element->FirstChildElement("channel_entry") ; channel_entry != NULL; channel_entry = channel_entry->NextSiblingElement("channel_entry")) { - int freq, symb, channelNum; - String8 cmd = String8("insert into region_table(name,fe_type,frequency,symbol_rate,modulation,bandwidth,ofdm_mode,logical_channel_num)"); - cmd += String8("values('") + channel_name + String8("',") + String8::format("%d", StringToIndex(feTypes, channel_fe_type)) + String8(","); - channel_entry->Attribute("frequency", &freq); - cmd += String8::format("%d", freq) + String8(","); - channel_entry->Attribute("symbol_rate", &symb); - cmd += String8::format("%d", symb) + String8(","); - //LOGD("showboz---------m=%s,b=%s,o=%s", channel_entry->Attribute("modulation"), channel_entry->Attribute("bandwidth"), channel_entry->Attribute("ofdm_mode")); - cmd += String8::format("%d", StringToIndex(mods, channel_entry->Attribute("modulation"))) + String8(","); - cmd += String8::format("%d", StringToIndex(bandwidths, channel_entry->Attribute("bandwidth"))) + String8(","); - cmd += String8::format("%d", StringToIndex(ofdmModes, channel_entry->Attribute("ofdm_mode"))) + String8(","); - channel_entry->Attribute("logical_channel_num", &channelNum); - cmd += String8::format("%d", channelNum) + String8(")"); - exeSql(cmd.string()); - } - } + for (TiXmlElement *channel_entry = channel_list_element->FirstChildElement("channel_entry") ; channel_entry != NULL; channel_entry = channel_entry->NextSiblingElement("channel_entry")) { + int freq, symb, channelNum; + String8 cmd = String8("insert into region_table(name,fe_type,frequency,symbol_rate,modulation,bandwidth,ofdm_mode,logical_channel_num)"); + cmd += String8("values('") + channel_name + String8("',") + String8::format("%d", StringToIndex(feTypes, channel_fe_type)) + String8(","); + channel_entry->Attribute("frequency", &freq); + cmd += String8::format("%d", freq) + String8(","); + channel_entry->Attribute("symbol_rate", &symb); + cmd += String8::format("%d", symb) + String8(","); + //LOGD("showboz---------m=%s,b=%s,o=%s", channel_entry->Attribute("modulation"), channel_entry->Attribute("bandwidth"), channel_entry->Attribute("ofdm_mode")); + cmd += String8::format("%d", StringToIndex(mods, channel_entry->Attribute("modulation"))) + String8(","); + cmd += String8::format("%d", StringToIndex(bandwidths, channel_entry->Attribute("bandwidth"))) + String8(","); + cmd += String8::format("%d", StringToIndex(ofdmModes, channel_entry->Attribute("ofdm_mode"))) + String8(","); + channel_entry->Attribute("logical_channel_num", &channelNum); + cmd += String8::format("%d", channelNum) + String8(")"); + exeSql(cmd.string()); + } + } - commitTransaction();//------------------------------------------------------ - return 0; + commitTransaction();//------------------------------------------------------ + return 0; } bool CTvDatabase::isAtv256ProgInsertForSkyworth() { - String8 select_ts_atvcount = String8("select * from ts_table where src = 4"); - Cursor c; - select(select_ts_atvcount, c); - return c.getCount() < 256 ? false : true; + String8 select_ts_atvcount = String8("select * from ts_table where src = 4"); + Cursor c; + select(select_ts_atvcount, c); + return c.getCount() < 256 ? false : true; } int CTvDatabase::insert256AtvProgForSkyworth() { - beginTransaction(); - for (int i = 0; i < 256; i++) { - String8 insert_ts = String8("insert into ts_table(db_id, src, db_net_id, ts_id, freq, symb, mod, bw, snr, ber, strength, db_sat_para_id, polar, std, aud_mode, flags, dvbt_flag) values ("); - insert_ts += String8::format("'%d'", i); - insert_ts += String8(", '4', '-1', '-1', '44250000', '0', '0', '0', '0', '0', '0', '-1', '-1', '-1', '1', '0', '0')"); - exeSql(insert_ts.string()); - String8 insert_srv = String8("insert into srv_table(db_id, src, db_net_id, db_ts_id, name, service_id, service_type, eit_schedule_flag, eit_pf_flag, running_status, free_ca_mode, volume, aud_track, pmt_pid, vid_pid, vid_fmt, scrambled_flag, current_aud, aud_pids, aud_fmts, aud_langs, aud_types, current_sub, sub_pids, sub_types, sub_composition_page_ids, sub_ancillary_page_ids, sub_langs, current_ttx, ttx_pids, ttx_types, ttx_magazine_nos, ttx_page_nos, ttx_langs, chan_num, skip, lock, favor, lcn, sd_lcn, hd_lcn, default_chan_num, chan_order, lcn_order, service_id_order, hd_sd_order, db_sat_para_id, dvbt2_plp_id, major_chan_num, minor_chan_num, access_controlled, hidden, hide_guide, source_id, sdt_ver) values ("); - insert_srv += String8::format("'%d'", i); - insert_srv += String8(" , '4', '-1', "); - insert_srv += String8::format("'%d'", i); - insert_srv += String8(", 'xxxATV Program', '-1', '3', '-1', '-1', '-1', '-1', '50', '1', '-1', '-1', '-1', '0', '-1', '-1', '-1', 'Audio1', '0', '-1', ' ', ' ', ' ', ' ', ' ', '-1', ' ', ' ', ' ', ' ', ' ', '-1', '1', '0', '0', '-1', '-1', '-1', '-1', "); - insert_srv += String8::format("'%d'", i); - insert_srv += String8(" , '0', '0', '0', '-1', '255', '0', '0', '0', '0', '0', '0', '255') "); - exeSql(insert_srv.string()); - } - commitTransaction(); - return 0; + beginTransaction(); + for (int i = 0; i < 256; i++) { + String8 insert_ts = String8("insert into ts_table(db_id, src, db_net_id, ts_id, freq, symb, mod, bw, snr, ber, strength, db_sat_para_id, polar, std, aud_mode, flags, dvbt_flag) values ("); + insert_ts += String8::format("'%d'", i); + insert_ts += String8(", '4', '-1', '-1', '44250000', '0', '0', '0', '0', '0', '0', '-1', '-1', '-1', '1', '0', '0')"); + exeSql(insert_ts.string()); + String8 insert_srv = String8("insert into srv_table(db_id, src, db_net_id, db_ts_id, name, service_id, service_type, eit_schedule_flag, eit_pf_flag, running_status, free_ca_mode, volume, aud_track, pmt_pid, vid_pid, vid_fmt, scrambled_flag, current_aud, aud_pids, aud_fmts, aud_langs, aud_types, current_sub, sub_pids, sub_types, sub_composition_page_ids, sub_ancillary_page_ids, sub_langs, current_ttx, ttx_pids, ttx_types, ttx_magazine_nos, ttx_page_nos, ttx_langs, chan_num, skip, lock, favor, lcn, sd_lcn, hd_lcn, default_chan_num, chan_order, lcn_order, service_id_order, hd_sd_order, db_sat_para_id, dvbt2_plp_id, major_chan_num, minor_chan_num, access_controlled, hidden, hide_guide, source_id, sdt_ver) values ("); + insert_srv += String8::format("'%d'", i); + insert_srv += String8(" , '4', '-1', "); + insert_srv += String8::format("'%d'", i); + insert_srv += String8(", 'xxxATV Program', '-1', '3', '-1', '-1', '-1', '-1', '50', '1', '-1', '-1', '-1', '0', '-1', '-1', '-1', 'Audio1', '0', '-1', ' ', ' ', ' ', ' ', ' ', '-1', ' ', ' ', ' ', ' ', ' ', '-1', '1', '0', '0', '-1', '-1', '-1', '-1', "); + insert_srv += String8::format("'%d'", i); + insert_srv += String8(" , '0', '0', '0', '-1', '255', '0', '0', '0', '0', '0', '0', '255') "); + exeSql(insert_srv.string()); + } + commitTransaction(); + return 0; } void CTvDatabase::deleteTvDb() { - if (mpDb != NULL) { - delete mpDb; - mpDb = NULL; - } + if (mpDb != NULL) { + delete mpDb; + mpDb = NULL; + } } CTvDatabase *CTvDatabase::GetTvDb() { - if (mpDb == NULL) { - mpDb = new CTvDatabase(); - } - return mpDb; + if (mpDb == NULL) { + mpDb = new CTvDatabase(); + } + return mpDb; } diff --git a/tvapi/libtv/tvdb/CTvDatabase.h b/tvapi/libtv/tvdb/CTvDatabase.h index be29f2a..fc9b285 100644 --- a/tvapi/libtv/tvdb/CTvDatabase.h +++ b/tvapi/libtv/tvdb/CTvDatabase.h @@ -28,67 +28,67 @@ using namespace android; //ÎÞ½âµÄ¹ØÁª class CTvDatabase: public CSqlite { public: - static const char *DEFAULT_DB_PATH; - static const int DB_VERSION = 8; - static const char *DB_VERSION_FIELD; + static const char *DEFAULT_DB_PATH; + static const int DB_VERSION = 8; + static const char *DB_VERSION_FIELD; - static const char feTypes[][32]; - static const char srvTypes[][32]; - static const char vidFmts[][32]; - static const char audFmts[][32]; - static const char mods[][32]; - static const char bandwidths[][32]; - static const char lnbPowers[][32]; - static const char sig22K[][32]; - static const char tonebursts[][32]; - static const char diseqc10s[][32]; - static const char diseqc11s[][32]; - static const char motors[][32]; - static const char ofdmModes[][32]; - static const char atvVideoStds[][32]; - static const char atvAudioStds[][32]; - template - int StringToIndex(const T &t, const char *item) - { - if (item == NULL) return -1; - int size = sizeof(t) / sizeof(t[0]); - for (int i = 0; i < size; i++) { - if (strcmp(t[i], item) == 0) return i; - } - return -1; - } + static const char feTypes[][32]; + static const char srvTypes[][32]; + static const char vidFmts[][32]; + static const char audFmts[][32]; + static const char mods[][32]; + static const char bandwidths[][32]; + static const char lnbPowers[][32]; + static const char sig22K[][32]; + static const char tonebursts[][32]; + static const char diseqc10s[][32]; + static const char diseqc11s[][32]; + static const char motors[][32]; + static const char ofdmModes[][32]; + static const char atvVideoStds[][32]; + static const char atvAudioStds[][32]; + template + int StringToIndex(const T &t, const char *item) + { + if (item == NULL) return -1; + int size = sizeof(t) / sizeof(t[0]); + for (int i = 0; i < size; i++) { + if (strcmp(t[i], item) == 0) return i; + } + return -1; + } public: - CTvDatabase(); - //Ö±½ÓÖ¸¶¨Êý¾Ý¿âÁ¬½Ó¾ä±ú - //CTvDatabase(char* path, sqlite3 * h); - static CTvDatabase *GetTvDb(); - static void deleteTvDb(); - ~CTvDatabase(); - //ÓÃÖ¸¶¨Â·¾¶´´½¨TVÊý¾Ý¿â. - int UnInitTvDb(); - int InitTvDb(const char *path); - //showboz test - class ChannelPara : public LightRefBase { - public: - int mode; - int freq; - int symbol_rate; - int modulation; - int bandwidth; - int polar; - }; + CTvDatabase(); + //Ö±½ÓÖ¸¶¨Êý¾Ý¿âÁ¬½Ó¾ä±ú + //CTvDatabase(char* path, sqlite3 * h); + static CTvDatabase *GetTvDb(); + static void deleteTvDb(); + ~CTvDatabase(); + //ÓÃÖ¸¶¨Â·¾¶´´½¨TVÊý¾Ý¿â. + int UnInitTvDb(); + int InitTvDb(const char *path); + //showboz test + class ChannelPara : public LightRefBase { + public: + int mode; + int freq; + int symbol_rate; + int modulation; + int bandwidth; + int polar; + }; - static int getChannelParaList(char *path, Vector > &vcp); + static int getChannelParaList(char *path, Vector > &vcp); - int importDbToXml(); - int importXmlToDB(const char *xmlPath); - bool isAtv256ProgInsertForSkyworth(); - int insert256AtvProgForSkyworth(); - int ClearDbTable(); - int clearDbAllProgramInfoTable(); + int importDbToXml(); + int importXmlToDB(const char *xmlPath); + bool isAtv256ProgInsertForSkyworth(); + int insert256AtvProgForSkyworth(); + int ClearDbTable(); + int clearDbAllProgramInfoTable(); private: - static CTvDatabase *mpDb; - int isFreqListExist(void); + static CTvDatabase *mpDb; + int isFreqListExist(void); }; #endif //_CTVDATABASE_H diff --git a/tvapi/libtv/tvdb/CTvDimension.cpp b/tvapi/libtv/tvdb/CTvDimension.cpp index 1863080..176dde8 100644 --- a/tvapi/libtv/tvdb/CTvDimension.cpp +++ b/tvapi/libtv/tvdb/CTvDimension.cpp @@ -17,54 +17,54 @@ void CTvDimension::createFromCursor(CTvDatabase::Cursor &c) { - int col; - - col = c.getColumnIndex("db_id"); - this->id = c.getInt(col); - - col = c.getColumnIndex("index_j"); - this->indexj = c.getInt(col); - - col = c.getColumnIndex("rating_region"); - this->ratingRegion = c.getInt(col); - - col = c.getColumnIndex("graduated_scale"); - this->graduatedScale = c.getInt(col); - - col = c.getColumnIndex("name"); - this->name = c.getString(col); - - col = c.getColumnIndex("rating_region_name"); - this->ratingRegionName = c.getString(col); - - col = c.getColumnIndex("values_defined"); - this->valuesDefined = c.getInt(col); - this->lockValues = new int[valuesDefined]; - this->abbrevValues = new String8[valuesDefined]; - this->textValues = new String8[valuesDefined]; - char temp[256]; - for (int i = 0; i < valuesDefined; i++) { - sprintf(temp, "abbrev%d", i); - col = c.getColumnIndex(temp); - this->abbrevValues[i] = c.getString(col); - sprintf(temp, "text%d", i); - col = c.getColumnIndex(temp); - this->textValues[i] = c.getString(col); - sprintf(temp, "locked%d", i); - col = c.getColumnIndex(temp); - this->lockValues[i] = c.getInt(col); - } - - if (ratingRegion == REGION_US && !strcmp(name, "All")) { - isPGAll = true; - } else { - isPGAll = false; - } + int col; + + col = c.getColumnIndex("db_id"); + this->id = c.getInt(col); + + col = c.getColumnIndex("index_j"); + this->indexj = c.getInt(col); + + col = c.getColumnIndex("rating_region"); + this->ratingRegion = c.getInt(col); + + col = c.getColumnIndex("graduated_scale"); + this->graduatedScale = c.getInt(col); + + col = c.getColumnIndex("name"); + this->name = c.getString(col); + + col = c.getColumnIndex("rating_region_name"); + this->ratingRegionName = c.getString(col); + + col = c.getColumnIndex("values_defined"); + this->valuesDefined = c.getInt(col); + this->lockValues = new int[valuesDefined]; + this->abbrevValues = new String8[valuesDefined]; + this->textValues = new String8[valuesDefined]; + char temp[256]; + for (int i = 0; i < valuesDefined; i++) { + sprintf(temp, "abbrev%d", i); + col = c.getColumnIndex(temp); + this->abbrevValues[i] = c.getString(col); + sprintf(temp, "text%d", i); + col = c.getColumnIndex(temp); + this->textValues[i] = c.getString(col); + sprintf(temp, "locked%d", i); + col = c.getColumnIndex(temp); + this->lockValues[i] = c.getInt(col); + } + + if (ratingRegion == REGION_US && !strcmp(name, "All")) { + isPGAll = true; + } else { + isPGAll = false; + } } CTvDimension::CTvDimension(CTvDatabase::Cursor &c) { - createFromCursor(c); + createFromCursor(c); } CTvDimension::CTvDimension() { @@ -72,78 +72,78 @@ CTvDimension::CTvDimension() } CTvDimension::~CTvDimension() { - if (lockValues != NULL) { - delete []lockValues; - } - if (textValues != NULL) { - delete []textValues; - } - if (abbrevValues != NULL) { - delete []abbrevValues; - } + if (lockValues != NULL) { + delete []lockValues; + } + if (textValues != NULL) { + delete []textValues; + } + if (abbrevValues != NULL) { + delete []abbrevValues; + } } /* 'All' is a very special case, it links to dimension0 & dimension5 */ int CTvDimension::getUSPGAllLockStatus(String8 abbrev) { - int len = 0; - CTvDimension dm5; - int j = 0; - selectByIndex(dm5, CTvDimension::REGION_US, 5); - len = dm5.getDefinedValue(); - String8 dm5Abbrev[len - 1]; - dm5.getAbbrev(dm5Abbrev); - for (j = 0; j < len - 1; j++) { - if (dm5Abbrev[j] == abbrev) { - return dm5.getLockStatus(j + 1); - } - } - CTvDimension dm0; - selectByIndex(dm0, CTvDimension::REGION_US, 0); - len = dm0.getDefinedValue(); - String8 dm0Abbrev[len - 1]; - dm0.getAbbrev(dm0Abbrev); - for (j = 0; j < len - 1; j++) { - if (dm0Abbrev[j] == abbrev) { - return dm0.getLockStatus(j + 1); - } - } - return -1; + int len = 0; + CTvDimension dm5; + int j = 0; + selectByIndex(dm5, CTvDimension::REGION_US, 5); + len = dm5.getDefinedValue(); + String8 dm5Abbrev[len - 1]; + dm5.getAbbrev(dm5Abbrev); + for (j = 0; j < len - 1; j++) { + if (dm5Abbrev[j] == abbrev) { + return dm5.getLockStatus(j + 1); + } + } + CTvDimension dm0; + selectByIndex(dm0, CTvDimension::REGION_US, 0); + len = dm0.getDefinedValue(); + String8 dm0Abbrev[len - 1]; + dm0.getAbbrev(dm0Abbrev); + for (j = 0; j < len - 1; j++) { + if (dm0Abbrev[j] == abbrev) { + return dm0.getLockStatus(j + 1); + } + } + return -1; } void CTvDimension::setUSPGAllLockStatus(String8 abbrev, int lock) { - int len = 0; - int j = 0; + int len = 0; + int j = 0; - CTvDimension dm5; + CTvDimension dm5; - selectByIndex(dm5, REGION_US, 5); - len = dm5.getDefinedValue(); - String8 dm5Abbrev[len - 1]; - dm5.getAbbrev(dm5Abbrev); + selectByIndex(dm5, REGION_US, 5); + len = dm5.getDefinedValue(); + String8 dm5Abbrev[len - 1]; + dm5.getAbbrev(dm5Abbrev); - for (j = 0; j < len - 1; j++) { - if (abbrev == dm5Abbrev[j]) { - dm5.setLockStatus(j + 1, lock); - return; - } - } + for (j = 0; j < len - 1; j++) { + if (abbrev == dm5Abbrev[j]) { + dm5.setLockStatus(j + 1, lock); + return; + } + } - CTvDimension dm0; - selectByIndex(dm0, REGION_US, 0); - len = dm0.getDefinedValue(); - String8 dm0Abbrev[len - 1]; - dm0.getAbbrev(dm0Abbrev); + CTvDimension dm0; + selectByIndex(dm0, REGION_US, 0); + len = dm0.getDefinedValue(); + String8 dm0Abbrev[len - 1]; + dm0.getAbbrev(dm0Abbrev); - for (j = 0; j < len - 1; j++) { - if (abbrev == dm0Abbrev[j]) { - dm0.setLockStatus(j + 1, lock); - return; - } - } - return; + for (j = 0; j < len - 1; j++) { + if (abbrev == dm0Abbrev[j]) { + dm0.setLockStatus(j + 1, lock); + return; + } + } + return; } @@ -156,19 +156,19 @@ void CTvDimension::setUSPGAllLockStatus(String8 abbrev, int lock) */ void CTvDimension::selectByID(CTvDimension &dm, int id) { - String8 cmd = String8("select * from dimension_table where evt_table.db_id = ") + String8::format("%d", id); - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); + String8 cmd = String8("select * from dimension_table where evt_table.db_id = ") + String8::format("%d", id); + CTvDatabase::Cursor c; + int ret = CTvDatabase::GetTvDb()->select(cmd, c); - if (c.moveToFirst()) { - dm.createFromCursor(c); - LOGD("%s, %d success", "TV", __LINE__); - } else { - LOGD("%s, %d fail", "TV", __LINE__); - c.close(); - return; - } - c.close(); + if (c.moveToFirst()) { + dm.createFromCursor(c); + LOGD("%s, %d success", "TV", __LINE__); + } else { + LOGD("%s, %d fail", "TV", __LINE__); + c.close(); + return; + } + c.close(); } @@ -180,19 +180,19 @@ void CTvDimension::selectByID(CTvDimension &dm, int id) */ void CTvDimension::selectByRatingRegion(CTvDimension &dm, int ratingRegionID) { - String8 cmd = String8("select * from dimension_table where rating_region = ") + String8::format("%d", ratingRegionID); - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); + String8 cmd = String8("select * from dimension_table where rating_region = ") + String8::format("%d", ratingRegionID); + CTvDatabase::Cursor c; + int ret = CTvDatabase::GetTvDb()->select(cmd, c); - if (c.moveToFirst()) { - dm.createFromCursor(c); - LOGD("%s, %d success", "TV", __LINE__); - } else { - LOGD("%s, %d fail", "TV", __LINE__); - c.close(); - return; - } - c.close(); + if (c.moveToFirst()) { + dm.createFromCursor(c); + LOGD("%s, %d success", "TV", __LINE__); + } else { + LOGD("%s, %d fail", "TV", __LINE__); + c.close(); + return; + } + c.close(); } /** @@ -204,22 +204,22 @@ void CTvDimension::selectByRatingRegion(CTvDimension &dm, int ratingRegionID) */ int CTvDimension::selectByIndex(CTvDimension &dm, int ratingRegionID, int index) { - String8 cmd = String8("select * from dimension_table where rating_region = ") + String8::format("%d", ratingRegionID); - cmd += String8(" and index_j=") + String8::format("%d", index); - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); + String8 cmd = String8("select * from dimension_table where rating_region = ") + String8::format("%d", ratingRegionID); + cmd += String8(" and index_j=") + String8::format("%d", index); + CTvDatabase::Cursor c; + int ret = CTvDatabase::GetTvDb()->select(cmd, c); - if (c.moveToFirst()) { - dm.createFromCursor(c); - LOGD("%s, %d success", "TV", __LINE__); - } else { - LOGD("%s, %d fail", "TV", __LINE__); - c.close(); - return -1; - } - c.close(); + if (c.moveToFirst()) { + dm.createFromCursor(c); + LOGD("%s, %d success", "TV", __LINE__); + } else { + LOGD("%s, %d fail", "TV", __LINE__); + c.close(); + return -1; + } + c.close(); - return 0; + return 0; } /** @@ -231,22 +231,22 @@ int CTvDimension::selectByIndex(CTvDimension &dm, int ratingRegionID, int index) */ void CTvDimension::selectByName(CTvDimension &dm, int ratingRegionID, String8 dimensionName) { - String8 cmd = String8("select * from dimension_table where rating_region = ") + String8::format("%d", ratingRegionID); - cmd += String8(" and name='") + dimensionName + String8("'"); - CTvDatabase::Cursor c; - CTvDatabase::GetTvDb()->select(cmd, c); + String8 cmd = String8("select * from dimension_table where rating_region = ") + String8::format("%d", ratingRegionID); + cmd += String8(" and name='") + dimensionName + String8("'"); + CTvDatabase::Cursor c; + CTvDatabase::GetTvDb()->select(cmd, c); - if (c.moveToFirst()) { - LOGD("%s, %d success", "TV", __LINE__); - dm.createFromCursor(c); - } else { - LOGD("%s, %d fail", "TV", __LINE__); - c.close(); - return; - } - c.close(); + if (c.moveToFirst()) { + LOGD("%s, %d success", "TV", __LINE__); + dm.createFromCursor(c); + } else { + LOGD("%s, %d fail", "TV", __LINE__); + c.close(); + return; + } + c.close(); - return; + return; } @@ -258,14 +258,14 @@ void CTvDimension::selectByName(CTvDimension &dm, int ratingRegionID, String8 di */ bool CTvDimension::isBlocked(CTvDimension &dm, VChipRating *definedRating) { - int ret = 0; - ret = selectByIndex(dm, definedRating->getRegion(), definedRating->getDimension()); - if (ret != -1) { - LOGD("%s, %d, index=%d", "TV", __LINE__, definedRating->getValue()); - return (dm.getLockStatus(definedRating->getValue()) == 1); - } + int ret = 0; + ret = selectByIndex(dm, definedRating->getRegion(), definedRating->getDimension()); + if (ret != -1) { + LOGD("%s, %d, index=%d", "TV", __LINE__, definedRating->getValue()); + return (dm.getLockStatus(definedRating->getValue()) == 1); + } - return false; + return false; } /** @@ -274,7 +274,7 @@ bool CTvDimension::isBlocked(CTvDimension &dm, VChipRating *definedRating) */ int CTvDimension::getID() { - return id; + return id; } /** @@ -283,12 +283,12 @@ int CTvDimension::getID() */ int CTvDimension::getRatingRegion() { - return ratingRegion; + return ratingRegion; } int CTvDimension::getDefinedValue() { - return valuesDefined; + return valuesDefined; } /** *å–å¾— rating region å称 @@ -296,7 +296,7 @@ int CTvDimension::getDefinedValue() */ String8 CTvDimension::getRatingRegionName() { - return ratingRegionName; + return ratingRegionName; } /** @@ -305,7 +305,7 @@ String8 CTvDimension::getRatingRegionName() */ String8 CTvDimension::getName() { - return name; + return name; } /** @@ -314,7 +314,7 @@ String8 CTvDimension::getName() */ int CTvDimension::getGraduatedScale() { - return graduatedScale; + return graduatedScale; } /** @@ -324,20 +324,20 @@ int CTvDimension::getGraduatedScale() #if 0 int *CTvDimension::getLockStatus() { - int len = getDefinedValue(); - if (len > 1) { - if (isPGAll) { - return getUSPGAllLockStatus(abbrevValues); - } else { - int *lock = new int[len - 1]; - //System.arraycopy(lockValues, 1, l, 0, l.length); - for (int i = 0; i < len - 1; i++) - lock[i] = lockValues[1 + i]; - return lock; - } - } else { - return NULL; - } + int len = getDefinedValue(); + if (len > 1) { + if (isPGAll) { + return getUSPGAllLockStatus(abbrevValues); + } else { + int *lock = new int[len - 1]; + //System.arraycopy(lockValues, 1, l, 0, l.length); + for (int i = 0; i < len - 1; i++) + lock[i] = lockValues[1 + i]; + return lock; + } + } else { + return NULL; + } } #endif /** @@ -347,12 +347,12 @@ int *CTvDimension::getLockStatus() */ int CTvDimension::getLockStatus(int valueIndex) { - int len = getDefinedValue(); - if (valueIndex >= len) { - return -1; - } else { - return lockValues[valueIndex]; - } + int len = getDefinedValue(); + if (valueIndex >= len) { + return -1; + } else { + return lockValues[valueIndex]; + } } /** @@ -362,21 +362,21 @@ int CTvDimension::getLockStatus(int valueIndex) */ void CTvDimension::getLockStatus(String8 abbrevs[], int lock[], int *array_len) { - int i = 0; - int len = getDefinedValue(); + int i = 0; + int len = getDefinedValue(); - if (abbrevs != NULL && lock != NULL) { - for (int i = 0; i < *array_len; i++) { - *(lock + i) = -1; - for (int j = 0; j < len; j++) { - if (abbrevs[i] == abbrevValues[j]) { - *(lock + i) = lockValues[j]; - break; - } - } - } - } - *array_len = len; + if (abbrevs != NULL && lock != NULL) { + for (int i = 0; i < *array_len; i++) { + *(lock + i) = -1; + for (int j = 0; j < len; j++) { + if (abbrevs[i] == abbrevValues[j]) { + *(lock + i) = lockValues[j]; + break; + } + } + } + } + *array_len = len; } /** @@ -385,15 +385,15 @@ void CTvDimension::getLockStatus(String8 abbrevs[], int lock[], int *array_len) */ int CTvDimension::getAbbrev(String8 abb[]) { - /* the first rating_value must be not visible to user */ - int len = getDefinedValue(); - if (len > 1) { - for (int i = 0; i < len - 1; i++) - abb[i] = abbrevValues[i + 1]; - return 0; - } else { - return -1; - } + /* the first rating_value must be not visible to user */ + int len = getDefinedValue(); + if (len > 1) { + for (int i = 0; i < len - 1; i++) + abb[i] = abbrevValues[i + 1]; + return 0; + } else { + return -1; + } } /** @@ -402,11 +402,11 @@ int CTvDimension::getAbbrev(String8 abb[]) */ String8 CTvDimension::getAbbrev(int valueIndex) { - int len = getDefinedValue(); - if (valueIndex >= len) - return String8(""); - else - return abbrevValues[valueIndex]; + int len = getDefinedValue(); + if (valueIndex >= len) + return String8(""); + else + return abbrevValues[valueIndex]; } /** @@ -415,14 +415,14 @@ String8 CTvDimension::getAbbrev(int valueIndex) */ int CTvDimension::getText(String8 tx[]) { - int len = getDefinedValue(); - if (len > 1) { - for (int i = 0; i < len - 1; i++) - tx[i] = textValues[i + 1]; - return 0; - } else { - return -1; - } + int len = getDefinedValue(); + if (len > 1) { + for (int i = 0; i < len - 1; i++) + tx[i] = textValues[i + 1]; + return 0; + } else { + return -1; + } } /** @@ -431,11 +431,11 @@ int CTvDimension::getText(String8 tx[]) */ String8 CTvDimension::getText(int valueIndex) { - int len = getDefinedValue(); - if (valueIndex >= len) - return String8(""); - else - return textValues[valueIndex]; + int len = getDefinedValue(); + if (valueIndex >= len) + return String8(""); + else + return textValues[valueIndex]; } /** @@ -445,17 +445,17 @@ String8 CTvDimension::getText(int valueIndex) */ void CTvDimension::setLockStatus(int valueIndex, int status) { - int len = getDefinedValue(); - if (valueIndex >= len) - return; + int len = getDefinedValue(); + if (valueIndex >= len) + return; - if (lockValues[valueIndex] != -1 && lockValues[valueIndex] != status) { - lockValues[valueIndex] = status; - String8 cmd = String8("update dimension_table set locked") + String8::format("%d", valueIndex); - cmd += String8("=") + String8::format("%d", status) + String8(" where db_id = ") + String8::format("%d", id); + if (lockValues[valueIndex] != -1 && lockValues[valueIndex] != status) { + lockValues[valueIndex] = status; + String8 cmd = String8("update dimension_table set locked") + String8::format("%d", valueIndex); + cmd += String8("=") + String8::format("%d", status) + String8(" where db_id = ") + String8::format("%d", id); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - } + CTvDatabase::GetTvDb()->exeSql(cmd.string()); + } } /** @@ -464,14 +464,14 @@ void CTvDimension::setLockStatus(int valueIndex, int status) */ void CTvDimension::setLockStatus(int status[]) { - int len = getDefinedValue(); - if (status == NULL) { - LOGD("Cannot set lock status, invalid param"); - return; - } - for (int i = 0; i < len; i++) { - setLockStatus(i + 1, status[i]); - } + int len = getDefinedValue(); + if (status == NULL) { + LOGD("Cannot set lock status, invalid param"); + return; + } + for (int i = 0; i < len; i++) { + setLockStatus(i + 1, status[i]); + } } /** @@ -481,25 +481,25 @@ void CTvDimension::setLockStatus(int status[]) */ void CTvDimension::setLockStatus(String8 abbrevs[], int locks[], int abb_size) { - int len = getDefinedValue(); - if (abbrevs == NULL || locks == NULL) - return; + int len = getDefinedValue(); + if (abbrevs == NULL || locks == NULL) + return; - for (int i = 0; i < abb_size; i++) { - for (int j = 0; j < len; j++) { - if (abbrevs[i] == abbrevValues[j]) { - setLockStatus(j, locks[i]); - break; - } - } - } + for (int i = 0; i < abb_size; i++) { + for (int j = 0; j < len; j++) { + if (abbrevs[i] == abbrevValues[j]) { + setLockStatus(j, locks[i]); + break; + } + } + } } CTvDimension::VChipRating::VChipRating(int region, int dimension, int value) { - this->region = region; - this->dimension = dimension; - this->value = value; + this->region = region; + this->dimension = dimension; + this->value = value; } CTvDimension::VChipRating::VChipRating() { @@ -510,135 +510,135 @@ CTvDimension::VChipRating::~VChipRating() } int CTvDimension::VChipRating::getRegion() { - return region; + return region; } int CTvDimension::VChipRating::getDimension() { - return dimension; + return dimension; } int CTvDimension::VChipRating::getValue()const { - return value; + return value; } String8 CTvDimension::getCurdimension() { - return CurvchipDimension; + return CurvchipDimension; } String8 CTvDimension::getCurAbbr() { - return CurvchipAbbrev; + return CurvchipAbbrev; } String8 CTvDimension::getCurText() { - return CurvchipText; + return CurvchipText; } void CTvDimension::insertNewDimension(const int region, String8 regionName, String8 name, - int indexj, int *lock, const char **abbrev, const char **text, int size) -{ - String8 cmd = String8("insert into dimension_table(rating_region,rating_region_name,name,graduated_scale,"); - cmd += String8("values_defined,index_j,version,abbrev0,text0,locked0,abbrev1,text1,locked1,abbrev2,text2,locked2,"); - cmd += String8("abbrev3,text3,locked3,abbrev4,text4,locked4,abbrev5,text5,locked5,abbrev6,text6,locked6,"); - cmd += String8("abbrev7,text7,locked7,abbrev8,text8,locked8,abbrev9,text9,locked9,abbrev10,text10,locked10,"); - cmd += String8("abbrev11,text11,locked11,abbrev12,text12,locked12,abbrev13,text13,locked13,abbrev14,text14,locked14,"); - cmd += String8("abbrev15,text15,locked15) values(") + String8::format("%d", region) + String8(",'") + regionName.string(); - cmd += String8("','") + name.string() + String8("',0,") + String8::format("%d", size) + String8(",") + String8::format("%d", indexj) + String8(",0"); - for (int i = 0; i < 16; i++) { - if (i < size) { - cmd += String8(",'") + String8::format("%s", abbrev[i]) + String8("'"); - cmd += String8(",'") + String8::format("%s", text[i]) + String8("'"); - cmd += String8(",'") + String8::format("%d", lock[i]) + String8("'"); - } else { - cmd += String8(",''"); - cmd += String8(",''"); - cmd += String8(",-1"); - } - } - cmd += String8(")"); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); + int indexj, int *lock, const char **abbrev, const char **text, int size) +{ + String8 cmd = String8("insert into dimension_table(rating_region,rating_region_name,name,graduated_scale,"); + cmd += String8("values_defined,index_j,version,abbrev0,text0,locked0,abbrev1,text1,locked1,abbrev2,text2,locked2,"); + cmd += String8("abbrev3,text3,locked3,abbrev4,text4,locked4,abbrev5,text5,locked5,abbrev6,text6,locked6,"); + cmd += String8("abbrev7,text7,locked7,abbrev8,text8,locked8,abbrev9,text9,locked9,abbrev10,text10,locked10,"); + cmd += String8("abbrev11,text11,locked11,abbrev12,text12,locked12,abbrev13,text13,locked13,abbrev14,text14,locked14,"); + cmd += String8("abbrev15,text15,locked15) values(") + String8::format("%d", region) + String8(",'") + regionName.string(); + cmd += String8("','") + name.string() + String8("',0,") + String8::format("%d", size) + String8(",") + String8::format("%d", indexj) + String8(",0"); + for (int i = 0; i < 16; i++) { + if (i < size) { + cmd += String8(",'") + String8::format("%s", abbrev[i]) + String8("'"); + cmd += String8(",'") + String8::format("%s", text[i]) + String8("'"); + cmd += String8(",'") + String8::format("%d", lock[i]) + String8("'"); + } else { + cmd += String8(",''"); + cmd += String8(",''"); + cmd += String8(",-1"); + } + } + cmd += String8(")"); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); } /** * ??????Standard ATSC V-Chip Dimensions */ void CTvDimension::builtinAtscDimensions() { - CTvDatabase::GetTvDb()->exeSql("delete from dimension_table"); - - /* Add U.S. Rating region 0x1 */ - const char *abbrev0[] = {"", "None", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - const char *text0[] = {"", "None", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - int lock0[] = { -1, -1, 0, 0, 0, 0}; - const char *abbrev1[] = {"", "D", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - const char *text1[] = {"", "D", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - int lock1[] = { -1, -1, -1, 0, 0, -1}; - const char *abbrev2[] = {"", "L", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - const char *text2[] = {"", "L", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - int lock2[] = { -1, -1, -1, 0, 0, 0}; - const char *abbrev3[] = {"", "S", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - const char *text3[] = {"", "S", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - int lock3[] = { -1, -1, -1, 0, 0, 0}; - const char *abbrev4[] = {"", "V", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - const char *text4[] = {"", "V", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - int lock4[] = { -1, -1, -1, 0, 0, 0}; - const char *abbrev5[] = {"", "TV-Y", "TV-Y7"}; - const char *text5[] = {"", "TV-Y", "TV-Y7"}; - int lock5[] = { -1, 0, 0}; - const char *abbrev6[] = {"", "FV", "TV-Y7"}; - const char *text6[] = {"", "FV", "TV-Y7"}; - int lock6[] = { -1, -1, 0}; - const char *abbrev7[] = {"", "N/A", "G", "PG", "PG-13", "R", "NC-17", "X", "NR"}; - const char *text7[] = {"", "MPAA Rating Not Applicable", "Suitable for AllAges", - "Parental GuidanceSuggested", "Parents Strongly Cautioned", - "Restricted, under 17 must be accompanied by adult", - "No One 17 and Under Admitted", "No One 17 and Under Admitted", - "no Rated by MPAA" - }; - int lock7[] = { -1, -1, 0, 0, 0, 0, 0, 0, 0}; - /*Extra for 'All' */ - const char *abbrevall[] = {"TV-Y", "TV-Y7", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - const char *textall[] = {"TV-Y", "TV-Y7", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - int lockall[] = {0, 0, 0, 0, 0, 0}; - - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Entire Audience"), 0, lock0, abbrev0, text0, sizeof(lock0) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Dialogue"), 1, lock1, abbrev1, text1, sizeof(lock1) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Language"), 2, lock2, abbrev2, text2, sizeof(lock2) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Sex"), 3, lock3, abbrev3, text3, sizeof(lock3) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Violence"), 4, lock4, abbrev4, text4, sizeof(lock4) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Children"), 5, lock5, abbrev5, text5, sizeof(lock5) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Fantasy violence"), 6, lock6, abbrev6, text6, sizeof(lock6) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("MPAA"), 7, lock7, abbrev7, text7, sizeof(lock7) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("All"), -1, lockall, abbrevall, textall, sizeof(lockall) / sizeof(int)); - /* Add Canadian Rating region 0x2 */ - const char *cabbrev0[] = {"E", "C", "C8+", "G", "PG", "14+", "18+"}; - const char *ctext0[] = {"Exempt", "Children", "8+", "General", "PG", "14+", "18+"}; - int clock0[] = {0, 0, 0, 0, 0, 0, 0}; - const char *cabbrev1[] = {"E", "G", "8 ans+", "13 ans+", "16 ans+", "18 ans+"}; - const char *ctext1[] = {"Exempt??es", "Pour tous", "8+", "13+", "16+", "18+"}; - int clock1[] = {0, 0, 0, 0, 0, 0}; - - insertNewDimension(CTvDimension::REGION_CANADA, String8("Canada"), - String8("Canadian English Language Rating"), 0, clock0, cabbrev0, ctext0, sizeof(clock0) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_CANADA, String8("Canada"), - String8("Codes francais du Canada"), 1, clock1, cabbrev1, ctext1, sizeof(clock1) / sizeof(int)); + CTvDatabase::GetTvDb()->exeSql("delete from dimension_table"); + + /* Add U.S. Rating region 0x1 */ + const char *abbrev0[] = {"", "None", "TV-G", "TV-PG", "TV-14", "TV-MA"}; + const char *text0[] = {"", "None", "TV-G", "TV-PG", "TV-14", "TV-MA"}; + int lock0[] = { -1, -1, 0, 0, 0, 0}; + const char *abbrev1[] = {"", "D", "TV-G", "TV-PG", "TV-14", "TV-MA"}; + const char *text1[] = {"", "D", "TV-G", "TV-PG", "TV-14", "TV-MA"}; + int lock1[] = { -1, -1, -1, 0, 0, -1}; + const char *abbrev2[] = {"", "L", "TV-G", "TV-PG", "TV-14", "TV-MA"}; + const char *text2[] = {"", "L", "TV-G", "TV-PG", "TV-14", "TV-MA"}; + int lock2[] = { -1, -1, -1, 0, 0, 0}; + const char *abbrev3[] = {"", "S", "TV-G", "TV-PG", "TV-14", "TV-MA"}; + const char *text3[] = {"", "S", "TV-G", "TV-PG", "TV-14", "TV-MA"}; + int lock3[] = { -1, -1, -1, 0, 0, 0}; + const char *abbrev4[] = {"", "V", "TV-G", "TV-PG", "TV-14", "TV-MA"}; + const char *text4[] = {"", "V", "TV-G", "TV-PG", "TV-14", "TV-MA"}; + int lock4[] = { -1, -1, -1, 0, 0, 0}; + const char *abbrev5[] = {"", "TV-Y", "TV-Y7"}; + const char *text5[] = {"", "TV-Y", "TV-Y7"}; + int lock5[] = { -1, 0, 0}; + const char *abbrev6[] = {"", "FV", "TV-Y7"}; + const char *text6[] = {"", "FV", "TV-Y7"}; + int lock6[] = { -1, -1, 0}; + const char *abbrev7[] = {"", "N/A", "G", "PG", "PG-13", "R", "NC-17", "X", "NR"}; + const char *text7[] = {"", "MPAA Rating Not Applicable", "Suitable for AllAges", + "Parental GuidanceSuggested", "Parents Strongly Cautioned", + "Restricted, under 17 must be accompanied by adult", + "No One 17 and Under Admitted", "No One 17 and Under Admitted", + "no Rated by MPAA" + }; + int lock7[] = { -1, -1, 0, 0, 0, 0, 0, 0, 0}; + /*Extra for 'All' */ + const char *abbrevall[] = {"TV-Y", "TV-Y7", "TV-G", "TV-PG", "TV-14", "TV-MA"}; + const char *textall[] = {"TV-Y", "TV-Y7", "TV-G", "TV-PG", "TV-14", "TV-MA"}; + int lockall[] = {0, 0, 0, 0, 0, 0}; + + insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), + String8("Entire Audience"), 0, lock0, abbrev0, text0, sizeof(lock0) / sizeof(int)); + insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), + String8("Dialogue"), 1, lock1, abbrev1, text1, sizeof(lock1) / sizeof(int)); + insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), + String8("Language"), 2, lock2, abbrev2, text2, sizeof(lock2) / sizeof(int)); + insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), + String8("Sex"), 3, lock3, abbrev3, text3, sizeof(lock3) / sizeof(int)); + insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), + String8("Violence"), 4, lock4, abbrev4, text4, sizeof(lock4) / sizeof(int)); + insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), + String8("Children"), 5, lock5, abbrev5, text5, sizeof(lock5) / sizeof(int)); + insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), + String8("Fantasy violence"), 6, lock6, abbrev6, text6, sizeof(lock6) / sizeof(int)); + insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), + String8("MPAA"), 7, lock7, abbrev7, text7, sizeof(lock7) / sizeof(int)); + insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), + String8("All"), -1, lockall, abbrevall, textall, sizeof(lockall) / sizeof(int)); + /* Add Canadian Rating region 0x2 */ + const char *cabbrev0[] = {"E", "C", "C8+", "G", "PG", "14+", "18+"}; + const char *ctext0[] = {"Exempt", "Children", "8+", "General", "PG", "14+", "18+"}; + int clock0[] = {0, 0, 0, 0, 0, 0, 0}; + const char *cabbrev1[] = {"E", "G", "8 ans+", "13 ans+", "16 ans+", "18 ans+"}; + const char *ctext1[] = {"Exempt??es", "Pour tous", "8+", "13+", "16+", "18+"}; + int clock1[] = {0, 0, 0, 0, 0, 0}; + + insertNewDimension(CTvDimension::REGION_CANADA, String8("Canada"), + String8("Canadian English Language Rating"), 0, clock0, cabbrev0, ctext0, sizeof(clock0) / sizeof(int)); + insertNewDimension(CTvDimension::REGION_CANADA, String8("Canada"), + String8("Codes francais du Canada"), 1, clock1, cabbrev1, ctext1, sizeof(clock1) / sizeof(int)); } int CTvDimension::isDimensionTblExist() { - String8 cmd = String8("select * from dimension_table"); - CTvDatabase::Cursor c; - CTvDatabase::GetTvDb()->select(cmd, c); - return c.moveToFirst(); + String8 cmd = String8("select * from dimension_table"); + CTvDatabase::Cursor c; + CTvDatabase::GetTvDb()->select(cmd, c); + return c.moveToFirst(); } diff --git a/tvapi/libtv/tvdb/CTvDimension.h b/tvapi/libtv/tvdb/CTvDimension.h index 9ad9bad..4e7a502 100644 --- a/tvapi/libtv/tvdb/CTvDimension.h +++ b/tvapi/libtv/tvdb/CTvDimension.h @@ -21,77 +21,77 @@ // TV ATSC rating dimension class CTvDimension { public: - class VChipRating { - private: - int region; - int dimension; - int value; + class VChipRating { + private: + int region; + int dimension; + int value; - public: - VChipRating(int region, int dimension, int value); - VChipRating(); - ~VChipRating(); - int getRegion(); - int getDimension(); - int getValue()const; - }; - /* 'All' is a very special case, it links to dimension0 & dimension5 */ - void createFromCursor(CTvDatabase::Cursor &c); - static int getUSPGAllLockStatus(String8 abbrev); - static void setUSPGAllLockStatus(String8 abbrev, int lock); - static void selectByID(CTvDimension &dm, int id); - static int selectByIndex(CTvDimension &dm, int ratingRegionID, int index); - static void selectByName(CTvDimension &dm, int ratingRegionID, String8 dimensionName); - static void selectByRatingRegion(CTvDimension &dm, int ratingRegionID); - bool isBlocked(CTvDimension &dm, VChipRating *definedRating); - int getID(); - int getRatingRegion(); - String8 getRatingRegionName(); - String8 getName(); - int getGraduatedScale(); - int getDefinedValue(); - //int* getLockStatus(); - int getLockStatus(int valueIndex); - void getLockStatus(String8 abbrevs[], int lock[], int *array_len); - int getAbbrev(String8 abb[]); - String8 getAbbrev(int valueIndex); - int getText(String8 tx[]); - String8 getText(int valueIndex); - void setLockStatus(int valueIndex, int status); - void setLockStatus(int status[]); - void setLockStatus(String8 abbrevs[], int locks[], int abb_size); - /**Rating regions*/ + public: + VChipRating(int region, int dimension, int value); + VChipRating(); + ~VChipRating(); + int getRegion(); + int getDimension(); + int getValue()const; + }; + /* 'All' is a very special case, it links to dimension0 & dimension5 */ + void createFromCursor(CTvDatabase::Cursor &c); + static int getUSPGAllLockStatus(String8 abbrev); + static void setUSPGAllLockStatus(String8 abbrev, int lock); + static void selectByID(CTvDimension &dm, int id); + static int selectByIndex(CTvDimension &dm, int ratingRegionID, int index); + static void selectByName(CTvDimension &dm, int ratingRegionID, String8 dimensionName); + static void selectByRatingRegion(CTvDimension &dm, int ratingRegionID); + bool isBlocked(CTvDimension &dm, VChipRating *definedRating); + int getID(); + int getRatingRegion(); + String8 getRatingRegionName(); + String8 getName(); + int getGraduatedScale(); + int getDefinedValue(); + //int* getLockStatus(); + int getLockStatus(int valueIndex); + void getLockStatus(String8 abbrevs[], int lock[], int *array_len); + int getAbbrev(String8 abb[]); + String8 getAbbrev(int valueIndex); + int getText(String8 tx[]); + String8 getText(int valueIndex); + void setLockStatus(int valueIndex, int status); + void setLockStatus(int status[]); + void setLockStatus(String8 abbrevs[], int locks[], int abb_size); + /**Rating regions*/ public: - static const int REGION_US = 0x1; - static const int REGION_CANADA = 0x2; - static const int REGION_TAIWAN = 0x3; - static const int REGION_SOUTHKOREA = 0x4; + static const int REGION_US = 0x1; + static const int REGION_CANADA = 0x2; + static const int REGION_TAIWAN = 0x3; + static const int REGION_SOUTHKOREA = 0x4; - CTvDimension(CTvDatabase::Cursor &c); - CTvDimension(); - ~CTvDimension(); + CTvDimension(CTvDatabase::Cursor &c); + CTvDimension(); + ~CTvDimension(); - static void insertNewDimension(const int region, String8 regionName, String8 name, - int indexj, int *lock, const char **abbrev, const char **text, int size); - static void builtinAtscDimensions(); - static int isDimensionTblExist(); - String8 getCurdimension(); - String8 getCurAbbr(); - String8 getCurText(); + static void insertNewDimension(const int region, String8 regionName, String8 name, + int indexj, int *lock, const char **abbrev, const char **text, int size); + static void builtinAtscDimensions(); + static int isDimensionTblExist(); + String8 getCurdimension(); + String8 getCurAbbr(); + String8 getCurText(); private: - int id; - int indexj; - int ratingRegion; - int graduatedScale; - int valuesDefined; - int *lockValues; - String8 name; - String8 ratingRegionName; - String8 *abbrevValues; - String8 *textValues; - bool isPGAll; - String8 CurvchipDimension; - String8 CurvchipAbbrev; - String8 CurvchipText; + int id; + int indexj; + int ratingRegion; + int graduatedScale; + int valuesDefined; + int *lockValues; + String8 name; + String8 ratingRegionName; + String8 *abbrevValues; + String8 *textValues; + bool isPGAll; + String8 CurvchipDimension; + String8 CurvchipAbbrev; + String8 CurvchipText; }; #endif //_CTVDIMENSION_H diff --git a/tvapi/libtv/tvdb/CTvEvent.cpp b/tvapi/libtv/tvdb/CTvEvent.cpp index b660fc9..9e1f2f6 100644 --- a/tvapi/libtv/tvdb/CTvEvent.cpp +++ b/tvapi/libtv/tvdb/CTvEvent.cpp @@ -21,208 +21,208 @@ void CTvEvent::InitFromCursor(CTvDatabase::Cursor &c) { - int col; - - col = c.getColumnIndex("db_id"); - this->id = c.getInt(col); - - col = c.getColumnIndex("event_id"); - this->dvbEventID = c.getInt(col); - - col = c.getColumnIndex("name"); - this->name = c.getString(col); - - col = c.getColumnIndex("start"); - this->start = (long)c.getInt(col); - - col = c.getColumnIndex("end"); - this->end = (long)c.getInt(col) ; - - col = c.getColumnIndex("nibble_level"); - this->dvbContent = c.getInt(col); - - col = c.getColumnIndex("parental_rating"); - this->dvbViewAge = c.getInt(col); - - col = c.getColumnIndex("sub_flag"); - this->sub_flag = c.getInt(col); - - col = c.getColumnIndex("db_srv_id"); - this->programID = c.getInt(col); - - col = c.getColumnIndex("rrt_ratings"); - String8 rrtRatings = c.getString(col); - char *tmp; - Vector ratings; - int l = 0; - char *pSave; - tmp = strtok_r(rrtRatings.lockBuffer(rrtRatings.size()), ",", &pSave); - LOGD("%s, %d, %s", "TV", __LINE__, tmp); - while (tmp != NULL) { - ratings.push_back(String8(tmp)); - tmp = strtok_r(NULL, ",", &pSave); - } - rrtRatings.unlockBuffer(); - rating_len = ratings.size(); - if (!ratings.isEmpty()) { - for (int i = 0; i < ratings.size(); i++) { - Vector rating; - tmp = strtok_r(ratings.editItemAt(i).lockBuffer(ratings.editItemAt(i).length()), " ", &pSave); - while (tmp != NULL) { - rating.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - ratings.editItemAt(i).unlockBuffer(); - if (rating.size() >= 3) { - int re = atoi(rating[0]); - int dm = atoi(rating[1]); - int vl = atoi(rating[2]); - vchipRatings.add( new CTvDimension::VChipRating(re, dm, vl)); - } else - vchipRatings.add(NULL); - } - } - - col = c.getColumnIndex("descr"); - this->description = c.getString(col); - - col = c.getColumnIndex("ext_descr"); - this->extDescription = c.getString(col); + int col; + + col = c.getColumnIndex("db_id"); + this->id = c.getInt(col); + + col = c.getColumnIndex("event_id"); + this->dvbEventID = c.getInt(col); + + col = c.getColumnIndex("name"); + this->name = c.getString(col); + + col = c.getColumnIndex("start"); + this->start = (long)c.getInt(col); + + col = c.getColumnIndex("end"); + this->end = (long)c.getInt(col) ; + + col = c.getColumnIndex("nibble_level"); + this->dvbContent = c.getInt(col); + + col = c.getColumnIndex("parental_rating"); + this->dvbViewAge = c.getInt(col); + + col = c.getColumnIndex("sub_flag"); + this->sub_flag = c.getInt(col); + + col = c.getColumnIndex("db_srv_id"); + this->programID = c.getInt(col); + + col = c.getColumnIndex("rrt_ratings"); + String8 rrtRatings = c.getString(col); + char *tmp; + Vector ratings; + int l = 0; + char *pSave; + tmp = strtok_r(rrtRatings.lockBuffer(rrtRatings.size()), ",", &pSave); + LOGD("%s, %d, %s", "TV", __LINE__, tmp); + while (tmp != NULL) { + ratings.push_back(String8(tmp)); + tmp = strtok_r(NULL, ",", &pSave); + } + rrtRatings.unlockBuffer(); + rating_len = ratings.size(); + if (!ratings.isEmpty()) { + for (int i = 0; i < ratings.size(); i++) { + Vector rating; + tmp = strtok_r(ratings.editItemAt(i).lockBuffer(ratings.editItemAt(i).length()), " ", &pSave); + while (tmp != NULL) { + rating.push_back(String8(tmp)); + tmp = strtok_r(NULL, " ", &pSave); + } + ratings.editItemAt(i).unlockBuffer(); + if (rating.size() >= 3) { + int re = atoi(rating[0]); + int dm = atoi(rating[1]); + int vl = atoi(rating[2]); + vchipRatings.add( new CTvDimension::VChipRating(re, dm, vl)); + } else + vchipRatings.add(NULL); + } + } + + col = c.getColumnIndex("descr"); + this->description = c.getString(col); + + col = c.getColumnIndex("ext_descr"); + this->extDescription = c.getString(col); } //id; CTvChannel.MODE_ATSC sourceid , other id int CTvEvent::getProgPresentEvent(int progSrc, int progID, long nowTime, CTvEvent &ev) { - String8 cmd; - CTvDatabase::Cursor c; + String8 cmd; + CTvDatabase::Cursor c; - cmd = String8("select * from evt_table where evt_table."); + cmd = String8("select * from evt_table where evt_table."); - if (progSrc == CTvChannel::MODE_ATSC) { - cmd += String8("source_id = ") + String8::format("%d", progID); - } else { - cmd += String8("db_srv_id = ") + String8::format("%d", progID); - } + if (progSrc == CTvChannel::MODE_ATSC) { + cmd += String8("source_id = ") + String8::format("%d", progID); + } else { + cmd += String8("db_srv_id = ") + String8::format("%d", progID); + } - cmd += String8(" and evt_table.start <= ") + String8::format("%ld", nowTime) + String8(" and evt_table.end > ") + String8::format("%ld", nowTime); + cmd += String8(" and evt_table.start <= ") + String8::format("%ld", nowTime) + String8(" and evt_table.end > ") + String8::format("%ld", nowTime); - int ret = CTvDatabase::GetTvDb()->select(cmd, c); + int ret = CTvDatabase::GetTvDb()->select(cmd, c); - if (c.moveToFirst()) { - ev.InitFromCursor(c); - } else { - c.close(); - return -1; - } + if (c.moveToFirst()) { + ev.InitFromCursor(c); + } else { + c.close(); + return -1; + } - c.close(); + c.close(); - return 0; + return 0; } int CTvEvent::getProgScheduleEvents(int progSrc, int progID, long start, long duration, Vector > &vEv) { - String8 cmd; - long begin = start; - long end = start + duration; - - cmd = String8("select * from evt_table where evt_table."); - if (progSrc == CTvChannel::MODE_ATSC) { - cmd += String8("source_id = ") + String8::format("%d", progID); - } else { - cmd += String8("db_srv_id = ") + String8::format("%d", progID); - } - cmd += String8(" and "); - cmd += String8(" ((start < ") + String8::format("%ld", begin) + String8(" and end > ") + String8::format("%ld", begin) + String8(") ||"); - cmd += String8(" (start >= ") + String8::format("%ld", begin) + String8(" and start < ") + String8::format("%ld", end) + String8("))"); - cmd += String8(" order by evt_table.start"); - - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - do { - vEv.add(new CTvEvent(c)); - } while (c.moveToNext()); - - } else { - c.close(); - return -1; - } - - c.close(); - return 0; + String8 cmd; + long begin = start; + long end = start + duration; + + cmd = String8("select * from evt_table where evt_table."); + if (progSrc == CTvChannel::MODE_ATSC) { + cmd += String8("source_id = ") + String8::format("%d", progID); + } else { + cmd += String8("db_srv_id = ") + String8::format("%d", progID); + } + cmd += String8(" and "); + cmd += String8(" ((start < ") + String8::format("%ld", begin) + String8(" and end > ") + String8::format("%ld", begin) + String8(") ||"); + cmd += String8(" (start >= ") + String8::format("%ld", begin) + String8(" and start < ") + String8::format("%ld", end) + String8("))"); + cmd += String8(" order by evt_table.start"); + + CTvDatabase::Cursor c; + int ret = CTvDatabase::GetTvDb()->select(cmd, c); + + if (c.moveToFirst()) { + do { + vEv.add(new CTvEvent(c)); + } while (c.moveToNext()); + + } else { + c.close(); + return -1; + } + + c.close(); + return 0; } int CTvEvent::getATVProgEvent(int progSrc, int progID, CTvEvent &ev) { - String8 cmd; - CTvDatabase::Cursor c; + String8 cmd; + CTvDatabase::Cursor c; - cmd = String8("select * from evt_table where evt_table."); + cmd = String8("select * from evt_table where evt_table."); - if (progSrc == CTvChannel::MODE_ATSC) { - LOGD("%s, %d MODE_ATSC", "TV", __LINE__); - cmd += String8("source_id = ") + String8::format("%d", progID); - } else { - LOGD("%s, %d MODE_ANALOG", "TV", __LINE__); - cmd += String8("db_srv_id = ") + String8::format("%d", progID); - } + if (progSrc == CTvChannel::MODE_ATSC) { + LOGD("%s, %d MODE_ATSC", "TV", __LINE__); + cmd += String8("source_id = ") + String8::format("%d", progID); + } else { + LOGD("%s, %d MODE_ANALOG", "TV", __LINE__); + cmd += String8("db_srv_id = ") + String8::format("%d", progID); + } - //cmd += String8(" and evt_table.start <= ") + String8::format("%ld", nowTime) + String8(" and evt_table.end > ") + String8::format("%ld", nowTime); + //cmd += String8(" and evt_table.start <= ") + String8::format("%ld", nowTime) + String8(" and evt_table.end > ") + String8::format("%ld", nowTime); - int ret = CTvDatabase::GetTvDb()->select(cmd, c); + int ret = CTvDatabase::GetTvDb()->select(cmd, c); - if (c.moveToFirst()) { - ev.InitFromCursor(c); - } else { - c.close(); - return -1; - } + if (c.moveToFirst()) { + ev.InitFromCursor(c); + } else { + c.close(); + return -1; + } - c.close(); + c.close(); - return 0; + return 0; } int CTvEvent::CleanAllEvent() { - CTvDatabase::GetTvDb()->exeSql("delete from evt_table"); - return 0; + CTvDatabase::GetTvDb()->exeSql("delete from evt_table"); + return 0; } int CTvEvent::selectByID(int id, CTvEvent &evt) { - CTvDatabase::Cursor c; - String8 sql; - - sql = String8("select * from evt_table where evt_table.db_id = ") + String8::format("%d", id); - CTvDatabase::GetTvDb()->select(sql.string(), c); - if (c.moveToFirst()) { - evt.InitFromCursor(c); - } else { - c.close(); - return -1; - } - - c.close(); - return 0; + CTvDatabase::Cursor c; + String8 sql; + + sql = String8("select * from evt_table where evt_table.db_id = ") + String8::format("%d", id); + CTvDatabase::GetTvDb()->select(sql.string(), c); + if (c.moveToFirst()) { + evt.InitFromCursor(c); + } else { + c.close(); + return -1; + } + + c.close(); + return 0; } int CTvEvent::bookEvent(int evtId, bool bBookFlag) { - String8 cmd; + String8 cmd; - cmd = String8("update evt_table set sub_flag=") + String8::format("%d", bBookFlag) - + String8(" where event_id=") + String8::format("%d", evtId); + cmd = String8("update evt_table set sub_flag=") + String8::format("%d", bBookFlag) + + String8(" where event_id=") + String8::format("%d", evtId); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); - return 0; + return 0; } CTvEvent::CTvEvent(CTvDatabase::Cursor &c) { - InitFromCursor(c); + InitFromCursor(c); } CTvEvent::CTvEvent() @@ -231,12 +231,12 @@ CTvEvent::CTvEvent() CTvEvent::~CTvEvent() { - int size = vchipRatings.size(); - for (int i = 0; i < size; i++) - delete vchipRatings[i]; + int size = vchipRatings.size(); + for (int i = 0; i < size; i++) + delete vchipRatings[i]; } Vector CTvEvent::getVChipRatings() { - return vchipRatings; + return vchipRatings; } diff --git a/tvapi/libtv/tvdb/CTvEvent.h b/tvapi/libtv/tvdb/CTvEvent.h index 61a89bf..5791bfd 100644 --- a/tvapi/libtv/tvdb/CTvEvent.h +++ b/tvapi/libtv/tvdb/CTvEvent.h @@ -20,66 +20,66 @@ class CTvEvent : public LightRefBase { public: - CTvEvent(CTvDatabase::Cursor &c); - CTvEvent(); - ~CTvEvent(); + CTvEvent(CTvDatabase::Cursor &c); + CTvEvent(); + ~CTvEvent(); - int getProgPresentEvent(int progSrc, int progID, long nowTime, CTvEvent &ev); - int getProgScheduleEvents(int progSrc, int progID, long start, long duration, Vector > &vEv); - int getATVProgEvent(int progSrc, int progID, CTvEvent &ev); - int bookEvent(int evtId, bool bBookFlag); - static int selectByID(int id, CTvEvent &p); - static int CleanAllEvent(); - String8 &getName() - { - return name; - }; - String8 &getDescription() - { - return description; - }; - String8 &getExtDescription() - { - return extDescription; - }; - long getStartTime() - { - return start; - }; - long getEndTime() - { - return end; - }; - int getSubFlag() - { - return sub_flag; - }; - int getProgramId() - { - return programID; - }; - int getEventId() - { - return dvbEventID; - }; - Vector getVChipRatings(); + int getProgPresentEvent(int progSrc, int progID, long nowTime, CTvEvent &ev); + int getProgScheduleEvents(int progSrc, int progID, long start, long duration, Vector > &vEv); + int getATVProgEvent(int progSrc, int progID, CTvEvent &ev); + int bookEvent(int evtId, bool bBookFlag); + static int selectByID(int id, CTvEvent &p); + static int CleanAllEvent(); + String8 &getName() + { + return name; + }; + String8 &getDescription() + { + return description; + }; + String8 &getExtDescription() + { + return extDescription; + }; + long getStartTime() + { + return start; + }; + long getEndTime() + { + return end; + }; + int getSubFlag() + { + return sub_flag; + }; + int getProgramId() + { + return programID; + }; + int getEventId() + { + return dvbEventID; + }; + Vector getVChipRatings(); private: - void InitFromCursor(CTvDatabase::Cursor &c); + void InitFromCursor(CTvDatabase::Cursor &c); - int id; - int dvbEventID; - String8 name; - String8 description; - String8 extDescription; - int programID; - long start; - long end; - int dvbContent; - int dvbViewAge; - int sub_flag; - int rating_len; - Vector vchipRatings; + int id; + int dvbEventID; + String8 name; + String8 description; + String8 extDescription; + int programID; + long start; + long end; + int dvbContent; + int dvbViewAge; + int sub_flag; + int rating_len; + Vector vchipRatings; }; #endif //_CTVEVENT_H diff --git a/tvapi/libtv/tvdb/CTvGroup.cpp b/tvapi/libtv/tvdb/CTvGroup.cpp index dfb043f..c5b6249 100644 --- a/tvapi/libtv/tvdb/CTvGroup.cpp +++ b/tvapi/libtv/tvdb/CTvGroup.cpp @@ -14,8 +14,8 @@ Vector CTvGroup::selectByGroup() { - Vector vGroup; - return vGroup; + Vector vGroup; + return vGroup; } void CTvGroup::addGroup() diff --git a/tvapi/libtv/tvdb/CTvGroup.h b/tvapi/libtv/tvdb/CTvGroup.h index 251ca95..3e92a2e 100644 --- a/tvapi/libtv/tvdb/CTvGroup.h +++ b/tvapi/libtv/tvdb/CTvGroup.h @@ -18,13 +18,13 @@ using namespace android; // Group¶ÔÓ¦DTVÖеÄÒ»¸ö½ÚÄ¿·Ö×é class CTvGroup { public: - CTvGroup(); - ~CTvGroup(); - // È¡µÃËùÓнÚÄ¿·Ö×éÐÅÏ¢ - static Vector selectByGroup(); - static void addGroup(); - static void deleteGroup(); - static void editGroup(); + CTvGroup(); + ~CTvGroup(); + // È¡µÃËùÓнÚÄ¿·Ö×éÐÅÏ¢ + static Vector selectByGroup(); + static void addGroup(); + static void deleteGroup(); + static void editGroup(); }; #endif //_CTVGROUP_H diff --git a/tvapi/libtv/tvdb/CTvProgram.cpp b/tvapi/libtv/tvdb/CTvProgram.cpp index fdd1c68..d9dca52 100644 --- a/tvapi/libtv/tvdb/CTvProgram.cpp +++ b/tvapi/libtv/tvdb/CTvProgram.cpp @@ -22,334 +22,334 @@ CTvProgram::CTvProgram(CTvDatabase::Cursor &c) { - CreateFromCursor(c); + CreateFromCursor(c); } CTvProgram::~CTvProgram() { - //free mem - // video - if (mpVideo != NULL) delete mpVideo; - // audios - int size = mvAudios.size(); - for (int i = 0; i < size; i++) - delete mvAudios[i]; - // subtitles - size = mvSubtitles.size(); - for (int i = 0; i < size; i++) - delete mvSubtitles[i]; - // teletexts - size = mvTeletexts.size(); - for (int i = 0; i < size; i++) - delete mvTeletexts[i]; + //free mem + // video + if (mpVideo != NULL) delete mpVideo; + // audios + int size = mvAudios.size(); + for (int i = 0; i < size; i++) + delete mvAudios[i]; + // subtitles + size = mvSubtitles.size(); + for (int i = 0; i < size; i++) + delete mvSubtitles[i]; + // teletexts + size = mvTeletexts.size(); + for (int i = 0; i < size; i++) + delete mvTeletexts[i]; } CTvProgram::CTvProgram(int channelID, int type) { - mpVideo = NULL; + mpVideo = NULL; } CTvProgram::CTvProgram() { - mpVideo = NULL; + mpVideo = NULL; } int CTvProgram::CreateFromCursor(CTvDatabase::Cursor &c) { - int i = 0; - int col; - int num, type; - int major, minor; - char tmp_buf[256]; - //LOGD("CTvProgram::CreateFromCursor"); - col = c.getColumnIndex("db_id"); - this->id = c.getInt(col); - - col = c.getColumnIndex("source_id"); - this->sourceID = c.getInt(col); - - col = c.getColumnIndex("src"); - this->src = c.getInt(col); - - col = c.getColumnIndex("service_id"); - this->dvbServiceID = c.getInt(col); - - col = c.getColumnIndex("db_ts_id"); - this->channelID = c.getInt(col); - - col = c.getColumnIndex("name"); - this->name = c.getString(col); - - col = c.getColumnIndex("chan_num"); - num = c.getInt(col); - - col = c.getColumnIndex("chan_order"); - this->chanOrderNum = c.getInt(col); - - col = c.getColumnIndex("major_chan_num"); - major = c.getInt(col); - - col = c.getColumnIndex("minor_chan_num"); - minor = c.getInt(col); - - col = c.getColumnIndex("aud_track"); - this->audioTrack = c.getInt(col); - - //节目å·ä¿¡æ¯åˆ?? - if (src == CTvChannel::MODE_ATSC || (src == CTvChannel::MODE_ANALOG && major > 0)) { - this->major = major; - this->minor = minor; - this->atscMode = true; - this->minorCheck = MINOR_CHECK_NONE; - } else { - this->major = num; - this->minor = 0; - this->atscMode = false; - this->minorCheck = MINOR_CHECK_NONE; - } - - col = c.getColumnIndex("service_type"); - this->type = c.getInt(col); - - col = c.getColumnIndex("pmt_pid"); - pmtPID = c.getInt(col); - - //LOGD("CTvProgram::CreateFromCursor type = %d", this->type); - col = c.getColumnIndex("skip"); - this->skip = c.getInt(col); - - col = c.getColumnIndex("lock"); - this->lock = (c.getInt(col) != 0); - - col = c.getColumnIndex("scrambled_flag"); - this->scrambled = (c.getInt(col) != 0); - - col = c.getColumnIndex("favor"); - this->favorite = (c.getInt(col) != 0); - - col = c.getColumnIndex("volume"); - this->volume = c.getInt(col); - - //Video - int pid, fmt; - col = c.getColumnIndex("vid_pid"); - pid = c.getInt(col); - - col = c.getColumnIndex("vid_fmt"); - fmt = c.getInt(col); - - //LOGD("----------vpid = %d", pid); - this->mpVideo = new Video(pid, fmt); - //LOGD("----------vpid = %d", this->mpVideo->getPID()); - - - //Audio - String8 strPids; - String8 strFmts; - String8 strLangs; - int count = 0; - col = c.getColumnIndex("aud_pids"); - strPids = c.getString(col); - - col = c.getColumnIndex("aud_fmts"); - strFmts = c.getString(col); - - col = c.getColumnIndex("aud_langs"); - strLangs = c.getString(col); - col = c.getColumnIndex("current_aud"); - this->currAudTrackIndex = c.getInt(col); - - char *tmp; - Vector vpid ; - Vector vfmt ; - Vector vlang; - - char *pSave; - tmp = strtok_r(strPids.lockBuffer(strPids.length()), " ", &pSave); - while (tmp != NULL) { - vpid.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - strPids.unlockBuffer(); - - tmp = strtok_r(strFmts.lockBuffer(strFmts.length()), " ", &pSave); - while (tmp != NULL) { - vfmt.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - strFmts.unlockBuffer(); - - tmp = strtok_r(strLangs.lockBuffer(strLangs.length()), " ", &pSave); - - while (tmp != NULL) { - vlang.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - strLangs.unlockBuffer(); - - //check empty aud_langs - for (i = vlang.size(); i < vpid.size(); i++) { - sprintf(tmp_buf, "Audio%d", i + 1); - vlang.push_back(String8(tmp_buf)); - LOGE("%s, aud_langs is empty, add dummy data (%s).\n", "TV", tmp_buf); - } - - //String8 l(vlang[i]); - for (i = 0; i < vpid.size(); i++) { - int i_pid = atoi(vpid[i]); - int i_fmt = atoi(vfmt[i]); - mvAudios.push_back(new Audio(i_pid, vlang[i], i_fmt)); - } - - - - /* parse subtitles */ - vpid.clear(); - vlang.clear(); - Vector vcid; - Vector vaid; - String8 strCids; - String8 strAids; - - col = c.getColumnIndex("sub_pids"); - strPids = c.getString(col); - - col = c.getColumnIndex("sub_composition_page_ids"); - strCids = c.getString(col); - - col = c.getColumnIndex("sub_ancillary_page_ids"); - strAids = c.getString(col); - - - col = c.getColumnIndex("sub_langs"); - strLangs = c.getString(col); - - tmp = strtok_r(strPids.lockBuffer(strPids.length()), " ", &pSave); - while (tmp != NULL) { - vpid.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - strPids.unlockBuffer(); - - tmp = strtok_r(strCids.lockBuffer(strCids.length()), " ", &pSave); - while (tmp != NULL) { - vcid.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - strCids.unlockBuffer(); - - tmp = strtok_r(strAids.lockBuffer(strAids.length()), " ", &pSave); - while (tmp != NULL) { - vaid.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - strAids.unlockBuffer(); - - tmp = strtok_r(strLangs.lockBuffer(strLangs.length()), " ", &pSave); - while (tmp != NULL) { - vlang.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - strLangs.unlockBuffer(); - - //Subtitle - for (int i = 0; i < vpid.size(); i++) { - this->mvSubtitles.push_back(new Subtitle( - atoi(vpid[i]), - String8(vlang[i]), Subtitle::TYPE_DVB_SUBTITLE, - atoi(vcid[i]), - atoi(vaid[i]))); - } - - /* - parse teletexts - int ttx_count = 0, ttx_sub_count = 0; - String8 str_ttx_pids, str_ttx_types, str_mag_nos, str_page_nos, str_ttx_langs; - Vector v_ttx_pids, v_ttx_types, v_mag_nos, v_page_nos, v_ttx_langs; - col = c.getColumnIndex("ttx_pids"); - str_ttx_pids = c.getString(col); - - col = c.getColumnIndex("ttx_types"); - str_ttx_types = c.getString(col); - - col = c.getColumnIndex("ttx_magazine_nos"); - str_mag_nos = c.getString(col); - - col = c.getColumnIndex("ttx_page_nos"); - str_page_nos = c.getString(col); - - col = c.getColumnIndex("ttx_langs"); - str_ttx_langs = c.getString(col); - - tmp = strtok_r(str_ttx_pids.lockBuffer(str_ttx_pids.length()), " ", &pSave); - while (tmp != NULL) { - v_ttx_pids.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - str_ttx_pids.unlockBuffer(); - - tmp = strtok_r(str_ttx_types.lockBuffer(str_ttx_types.length()), " ", &pSave); - while (tmp != NULL) { - v_ttx_types.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - str_ttx_types.unlockBuffer(); - - tmp = strtok_r(str_mag_nos.lockBuffer(str_mag_nos.length()), " ", &pSave); - while (tmp != NULL) { - v_mag_nos.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - str_mag_nos.unlockBuffer(); - - tmp = strtok_r(str_page_nos.lockBuffer(str_page_nos.length()), " ", &pSave); - while (tmp != NULL) { - v_page_nos.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - str_page_nos.unlockBuffer(); - - tmp = strtok_r(str_ttx_langs.lockBuffer(str_ttx_langs.length()), " ", &pSave); - while (tmp != NULL) { - v_ttx_langs.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - str_ttx_langs.unlockBuffer(); - - - for (int i = 0; i < v_ttx_pids.size(); i++) { - int ttype = atoi(v_ttx_types[i]); - if (ttype == 0x2 || ttype == 0x5) { - this->mvSubtitles.push_back(new Subtitle( - atoi(v_ttx_pids[i].string()), - String8(v_ttx_langs[i]), Subtitle::TYPE_DTV_TELETEXT, - atoi(v_mag_nos[i]), - atoi(v_page_nos[i]))); - } else { - this->mvTeletexts.push_back(new Teletext( - atoi(v_ttx_pids[i]), - String8(v_ttx_langs[i]), - atoi(v_mag_nos[i]), - atoi(v_page_nos[i]))); - } - } - */ - return 0; + int i = 0; + int col; + int num, type; + int major, minor; + char tmp_buf[256]; + //LOGD("CTvProgram::CreateFromCursor"); + col = c.getColumnIndex("db_id"); + this->id = c.getInt(col); + + col = c.getColumnIndex("source_id"); + this->sourceID = c.getInt(col); + + col = c.getColumnIndex("src"); + this->src = c.getInt(col); + + col = c.getColumnIndex("service_id"); + this->dvbServiceID = c.getInt(col); + + col = c.getColumnIndex("db_ts_id"); + this->channelID = c.getInt(col); + + col = c.getColumnIndex("name"); + this->name = c.getString(col); + + col = c.getColumnIndex("chan_num"); + num = c.getInt(col); + + col = c.getColumnIndex("chan_order"); + this->chanOrderNum = c.getInt(col); + + col = c.getColumnIndex("major_chan_num"); + major = c.getInt(col); + + col = c.getColumnIndex("minor_chan_num"); + minor = c.getInt(col); + + col = c.getColumnIndex("aud_track"); + this->audioTrack = c.getInt(col); + + //节目å·ä¿¡æ¯åˆ?? + if (src == CTvChannel::MODE_ATSC || (src == CTvChannel::MODE_ANALOG && major > 0)) { + this->major = major; + this->minor = minor; + this->atscMode = true; + this->minorCheck = MINOR_CHECK_NONE; + } else { + this->major = num; + this->minor = 0; + this->atscMode = false; + this->minorCheck = MINOR_CHECK_NONE; + } + + col = c.getColumnIndex("service_type"); + this->type = c.getInt(col); + + col = c.getColumnIndex("pmt_pid"); + pmtPID = c.getInt(col); + + //LOGD("CTvProgram::CreateFromCursor type = %d", this->type); + col = c.getColumnIndex("skip"); + this->skip = c.getInt(col); + + col = c.getColumnIndex("lock"); + this->lock = (c.getInt(col) != 0); + + col = c.getColumnIndex("scrambled_flag"); + this->scrambled = (c.getInt(col) != 0); + + col = c.getColumnIndex("favor"); + this->favorite = (c.getInt(col) != 0); + + col = c.getColumnIndex("volume"); + this->volume = c.getInt(col); + + //Video + int pid, fmt; + col = c.getColumnIndex("vid_pid"); + pid = c.getInt(col); + + col = c.getColumnIndex("vid_fmt"); + fmt = c.getInt(col); + + //LOGD("----------vpid = %d", pid); + this->mpVideo = new Video(pid, fmt); + //LOGD("----------vpid = %d", this->mpVideo->getPID()); + + + //Audio + String8 strPids; + String8 strFmts; + String8 strLangs; + int count = 0; + col = c.getColumnIndex("aud_pids"); + strPids = c.getString(col); + + col = c.getColumnIndex("aud_fmts"); + strFmts = c.getString(col); + + col = c.getColumnIndex("aud_langs"); + strLangs = c.getString(col); + col = c.getColumnIndex("current_aud"); + this->currAudTrackIndex = c.getInt(col); + + char *tmp; + Vector vpid ; + Vector vfmt ; + Vector vlang; + + char *pSave; + tmp = strtok_r(strPids.lockBuffer(strPids.length()), " ", &pSave); + while (tmp != NULL) { + vpid.push_back(String8(tmp)); + tmp = strtok_r(NULL, " ", &pSave); + } + strPids.unlockBuffer(); + + tmp = strtok_r(strFmts.lockBuffer(strFmts.length()), " ", &pSave); + while (tmp != NULL) { + vfmt.push_back(String8(tmp)); + tmp = strtok_r(NULL, " ", &pSave); + } + strFmts.unlockBuffer(); + + tmp = strtok_r(strLangs.lockBuffer(strLangs.length()), " ", &pSave); + + while (tmp != NULL) { + vlang.push_back(String8(tmp)); + tmp = strtok_r(NULL, " ", &pSave); + } + strLangs.unlockBuffer(); + + //check empty aud_langs + for (i = vlang.size(); i < vpid.size(); i++) { + sprintf(tmp_buf, "Audio%d", i + 1); + vlang.push_back(String8(tmp_buf)); + LOGE("%s, aud_langs is empty, add dummy data (%s).\n", "TV", tmp_buf); + } + + //String8 l(vlang[i]); + for (i = 0; i < vpid.size(); i++) { + int i_pid = atoi(vpid[i]); + int i_fmt = atoi(vfmt[i]); + mvAudios.push_back(new Audio(i_pid, vlang[i], i_fmt)); + } + + + + /* parse subtitles */ + vpid.clear(); + vlang.clear(); + Vector vcid; + Vector vaid; + String8 strCids; + String8 strAids; + + col = c.getColumnIndex("sub_pids"); + strPids = c.getString(col); + + col = c.getColumnIndex("sub_composition_page_ids"); + strCids = c.getString(col); + + col = c.getColumnIndex("sub_ancillary_page_ids"); + strAids = c.getString(col); + + + col = c.getColumnIndex("sub_langs"); + strLangs = c.getString(col); + + tmp = strtok_r(strPids.lockBuffer(strPids.length()), " ", &pSave); + while (tmp != NULL) { + vpid.push_back(String8(tmp)); + tmp = strtok_r(NULL, " ", &pSave); + } + strPids.unlockBuffer(); + + tmp = strtok_r(strCids.lockBuffer(strCids.length()), " ", &pSave); + while (tmp != NULL) { + vcid.push_back(String8(tmp)); + tmp = strtok_r(NULL, " ", &pSave); + } + strCids.unlockBuffer(); + + tmp = strtok_r(strAids.lockBuffer(strAids.length()), " ", &pSave); + while (tmp != NULL) { + vaid.push_back(String8(tmp)); + tmp = strtok_r(NULL, " ", &pSave); + } + strAids.unlockBuffer(); + + tmp = strtok_r(strLangs.lockBuffer(strLangs.length()), " ", &pSave); + while (tmp != NULL) { + vlang.push_back(String8(tmp)); + tmp = strtok_r(NULL, " ", &pSave); + } + strLangs.unlockBuffer(); + + //Subtitle + for (int i = 0; i < vpid.size(); i++) { + this->mvSubtitles.push_back(new Subtitle( + atoi(vpid[i]), + String8(vlang[i]), Subtitle::TYPE_DVB_SUBTITLE, + atoi(vcid[i]), + atoi(vaid[i]))); + } + + /* + parse teletexts + int ttx_count = 0, ttx_sub_count = 0; + String8 str_ttx_pids, str_ttx_types, str_mag_nos, str_page_nos, str_ttx_langs; + Vector v_ttx_pids, v_ttx_types, v_mag_nos, v_page_nos, v_ttx_langs; + col = c.getColumnIndex("ttx_pids"); + str_ttx_pids = c.getString(col); + + col = c.getColumnIndex("ttx_types"); + str_ttx_types = c.getString(col); + + col = c.getColumnIndex("ttx_magazine_nos"); + str_mag_nos = c.getString(col); + + col = c.getColumnIndex("ttx_page_nos"); + str_page_nos = c.getString(col); + + col = c.getColumnIndex("ttx_langs"); + str_ttx_langs = c.getString(col); + + tmp = strtok_r(str_ttx_pids.lockBuffer(str_ttx_pids.length()), " ", &pSave); + while (tmp != NULL) { + v_ttx_pids.push_back(String8(tmp)); + tmp = strtok_r(NULL, " ", &pSave); + } + str_ttx_pids.unlockBuffer(); + + tmp = strtok_r(str_ttx_types.lockBuffer(str_ttx_types.length()), " ", &pSave); + while (tmp != NULL) { + v_ttx_types.push_back(String8(tmp)); + tmp = strtok_r(NULL, " ", &pSave); + } + str_ttx_types.unlockBuffer(); + + tmp = strtok_r(str_mag_nos.lockBuffer(str_mag_nos.length()), " ", &pSave); + while (tmp != NULL) { + v_mag_nos.push_back(String8(tmp)); + tmp = strtok_r(NULL, " ", &pSave); + } + str_mag_nos.unlockBuffer(); + + tmp = strtok_r(str_page_nos.lockBuffer(str_page_nos.length()), " ", &pSave); + while (tmp != NULL) { + v_page_nos.push_back(String8(tmp)); + tmp = strtok_r(NULL, " ", &pSave); + } + str_page_nos.unlockBuffer(); + + tmp = strtok_r(str_ttx_langs.lockBuffer(str_ttx_langs.length()), " ", &pSave); + while (tmp != NULL) { + v_ttx_langs.push_back(String8(tmp)); + tmp = strtok_r(NULL, " ", &pSave); + } + str_ttx_langs.unlockBuffer(); + + + for (int i = 0; i < v_ttx_pids.size(); i++) { + int ttype = atoi(v_ttx_types[i]); + if (ttype == 0x2 || ttype == 0x5) { + this->mvSubtitles.push_back(new Subtitle( + atoi(v_ttx_pids[i].string()), + String8(v_ttx_langs[i]), Subtitle::TYPE_DTV_TELETEXT, + atoi(v_mag_nos[i]), + atoi(v_page_nos[i]))); + } else { + this->mvTeletexts.push_back(new Teletext( + atoi(v_ttx_pids[i]), + String8(v_ttx_langs[i]), + atoi(v_mag_nos[i]), + atoi(v_page_nos[i]))); + } + } + */ + return 0; } int CTvProgram::selectProgramInChannelByNumber(int channelID, int num, CTvDatabase::Cursor &c) { - String8 cmd = String8("select * from srv_table where db_ts_id = ") + String8::format("%d", channelID) + String8(" and "); - cmd += String8("chan_num = ") + String8::format("%d", num); - return CTvDatabase::GetTvDb()->select(cmd, c); + String8 cmd = String8("select * from srv_table where db_ts_id = ") + String8::format("%d", channelID) + String8(" and "); + cmd += String8("chan_num = ") + String8::format("%d", num); + return CTvDatabase::GetTvDb()->select(cmd, c); } int CTvProgram::selectProgramInChannelByNumber(int channelID, int major, int minor, CTvDatabase::Cursor &c) { - String8 cmd = String8("select * from srv_table where db_ts_id = ") + String8::format("%d", channelID) + String8(" and "); - cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num = ") + String8::format("%d", minor); + String8 cmd = String8("select * from srv_table where db_ts_id = ") + String8::format("%d", channelID) + String8(" and "); + cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num = ") + String8::format("%d", minor); - return CTvDatabase::GetTvDb()->select(cmd, c); + return CTvDatabase::GetTvDb()->select(cmd, c); } /** @@ -357,55 +357,55 @@ int CTvProgram::selectProgramInChannelByNumber(int channelID, int major, int min */ CTvProgram::CTvProgram(int channelID, int type, int num, int skipFlag) { - CTvChannel channel; - int ret = CTvChannel::selectByID(channelID, channel); - if (ret != 0) { - //Log.d(TAG, "Cannot add new program, invalid channel id "+channelID); - this->id = -1; - } else { - CTvDatabase::Cursor c ; - selectProgramInChannelByNumber(channelID, num, c); - - if (c.moveToFirst()) { - /*Construct*/ - CreateFromCursor(c); - } else { - String8 tpids = String8(""), ttypes = String8(""), tmagnums = String8(""), tpgnums = String8(""), tlangs = String8(""); - String8 spids = String8(""), stypes = String8(""), scpgids = String8(""), sapgids = String8(""), slangs = String8(""); - - /*add a new atv program to database*/ - String8 cmd = String8("insert into srv_table(db_net_id,db_ts_id,service_id,src,name,service_type,"); - cmd += String8("eit_schedule_flag,eit_pf_flag,running_status,free_ca_mode,volume,aud_track,vid_pid,"); - cmd += String8("vid_fmt,aud_pids,aud_fmts,aud_langs,skip,lock,chan_num,major_chan_num,"); - cmd += String8("minor_chan_num,access_controlled,hidden,hide_guide,source_id,favor,current_aud,"); - cmd += String8("current_sub,sub_pids,sub_types,sub_composition_page_ids,sub_ancillary_page_ids,sub_langs,"); - cmd += String8("current_ttx,ttx_pids,ttx_types,ttx_magazine_nos,ttx_page_nos,ttx_langs,"); - cmd += String8("db_sat_para_id,scrambled_flag,lcn,hd_lcn,sd_lcn,default_chan_num,chan_order) "); - cmd += String8("values(-1,") + String8::format("%d", channelID) + String8(",65535,") + String8::format("%d", channel.getMode()) + String8(",'',") + String8::format("%d", type) + String8(","); - cmd += String8("0,0,0,0,0,0,8191,"); - int chanNum = num; - int majorNum = 0; - cmd += String8("-1,'','','',") + String8::format("%d", skipFlag) + String8(",0,") + String8::format("%d", chanNum) + String8(",") + String8::format("%d", majorNum) + String8(","); - cmd += String8("") + /*num.getMinor()*/String8("0") + String8(",0,0,0,-1,0,-1,"); - cmd += String8("-1,'") + spids + String8("','") + stypes + String8("','") + scpgids + String8("','") + sapgids + String8("','") + slangs + String8("',"); - cmd += String8("-1,'") + tpids + String8("','") + ttypes + String8("','") + tmagnums + String8("','") + tpgnums + String8("','") + tlangs + String8("',"); - cmd += String8("-1,0,-1,-1,-1,-1,0)"); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - - CTvDatabase::Cursor cr; - selectProgramInChannelByNumber(channelID, num, cr); - if (cr.moveToFirst()) { - /*Construct*/ - CreateFromCursor(cr); - } else { - /*A critical error*/ - //Log.d(TAG, "Cannot add new program, sqlite error"); - this->id = -1; - } - cr.close(); - } - c.close(); - } + CTvChannel channel; + int ret = CTvChannel::selectByID(channelID, channel); + if (ret != 0) { + //Log.d(TAG, "Cannot add new program, invalid channel id "+channelID); + this->id = -1; + } else { + CTvDatabase::Cursor c ; + selectProgramInChannelByNumber(channelID, num, c); + + if (c.moveToFirst()) { + /*Construct*/ + CreateFromCursor(c); + } else { + String8 tpids = String8(""), ttypes = String8(""), tmagnums = String8(""), tpgnums = String8(""), tlangs = String8(""); + String8 spids = String8(""), stypes = String8(""), scpgids = String8(""), sapgids = String8(""), slangs = String8(""); + + /*add a new atv program to database*/ + String8 cmd = String8("insert into srv_table(db_net_id,db_ts_id,service_id,src,name,service_type,"); + cmd += String8("eit_schedule_flag,eit_pf_flag,running_status,free_ca_mode,volume,aud_track,vid_pid,"); + cmd += String8("vid_fmt,aud_pids,aud_fmts,aud_langs,skip,lock,chan_num,major_chan_num,"); + cmd += String8("minor_chan_num,access_controlled,hidden,hide_guide,source_id,favor,current_aud,"); + cmd += String8("current_sub,sub_pids,sub_types,sub_composition_page_ids,sub_ancillary_page_ids,sub_langs,"); + cmd += String8("current_ttx,ttx_pids,ttx_types,ttx_magazine_nos,ttx_page_nos,ttx_langs,"); + cmd += String8("db_sat_para_id,scrambled_flag,lcn,hd_lcn,sd_lcn,default_chan_num,chan_order) "); + cmd += String8("values(-1,") + String8::format("%d", channelID) + String8(",65535,") + String8::format("%d", channel.getMode()) + String8(",'',") + String8::format("%d", type) + String8(","); + cmd += String8("0,0,0,0,0,0,8191,"); + int chanNum = num; + int majorNum = 0; + cmd += String8("-1,'','','',") + String8::format("%d", skipFlag) + String8(",0,") + String8::format("%d", chanNum) + String8(",") + String8::format("%d", majorNum) + String8(","); + cmd += String8("") + /*num.getMinor()*/String8("0") + String8(",0,0,0,-1,0,-1,"); + cmd += String8("-1,'") + spids + String8("','") + stypes + String8("','") + scpgids + String8("','") + sapgids + String8("','") + slangs + String8("',"); + cmd += String8("-1,'") + tpids + String8("','") + ttypes + String8("','") + tmagnums + String8("','") + tpgnums + String8("','") + tlangs + String8("',"); + cmd += String8("-1,0,-1,-1,-1,-1,0)"); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); + + CTvDatabase::Cursor cr; + selectProgramInChannelByNumber(channelID, num, cr); + if (cr.moveToFirst()) { + /*Construct*/ + CreateFromCursor(cr); + } else { + /*A critical error*/ + //Log.d(TAG, "Cannot add new program, sqlite error"); + this->id = -1; + } + cr.close(); + } + c.close(); + } } @@ -415,55 +415,55 @@ CTvProgram::CTvProgram(int channelID, int type, int num, int skipFlag) */ CTvProgram::CTvProgram(int channelID, int type, int major, int minor, int skipFlag) { - CTvChannel channel; - int ret = CTvChannel::selectByID(channelID, channel); - if (ret != 0) { - //Log.d(TAG, "Cannot add new program, invalid channel id "+channelID); - this->id = -1; - } else { - CTvDatabase::Cursor c ; - selectProgramInChannelByNumber(channelID, major, minor, c); - - if (c.moveToFirst()) { - /*Construct*/ - CreateFromCursor(c); - } else { - String8 tpids = String8(""), ttypes = String8(""), tmagnums = String8(""), tpgnums = String8(""), tlangs = String8(""); - String8 spids = String8(""), stypes = String8(""), scpgids = String8(""), sapgids = String8(""), slangs = String8(""); - - /*add a new atv program to database*/ - String8 cmd = String8("insert into srv_table(db_net_id,db_ts_id,service_id,src,name,service_type,"); - cmd += String8("eit_schedule_flag,eit_pf_flag,running_status,free_ca_mode,volume,aud_track,vid_pid,"); - cmd += String8("vid_fmt,aud_pids,aud_fmts,aud_langs,skip,lock,chan_num,major_chan_num,"); - cmd += String8("minor_chan_num,access_controlled,hidden,hide_guide,source_id,favor,current_aud,"); - cmd += String8("current_sub,sub_pids,sub_types,sub_composition_page_ids,sub_ancillary_page_ids,sub_langs,"); - cmd += String8("current_ttx,ttx_pids,ttx_types,ttx_magazine_nos,ttx_page_nos,ttx_langs,"); - cmd += String8("db_sat_para_id,scrambled_flag,lcn,hd_lcn,sd_lcn,default_chan_num,chan_order) "); - cmd += String8("values(-1,") + String8::format("%d", channelID) + String8(",65535,") + String8::format("%d", channel.getMode()) + String8(",'',") + String8::format("%d", type) + String8(","); - cmd += String8("0,0,0,0,0,0,8191,"); - int chanNum = major << 16 | minor; - int majorNum = major; - cmd += String8("-1,'','','',") + String8::format("%d", skipFlag) + String8(",0,") + String8::format("%d", chanNum) + String8(",") + String8::format("%d", majorNum) + String8(","); - cmd += String8("") + String8::format("%d", minor) + String8(",0,0,0,-1,0,-1,"); - cmd += String8("-1,'") + spids + String8("','") + stypes + String8("','") + scpgids + String8("','") + sapgids + String8("','") + slangs + String8("',"); - cmd += String8("-1,'") + tpids + String8("','") + ttypes + String8("','") + tmagnums + String8("','") + tpgnums + String8("','") + tlangs + String8("',"); - cmd += String8("-1,0,-1,-1,-1,-1,0)"); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - - CTvDatabase::Cursor cr; - selectProgramInChannelByNumber(channelID, major, minor, cr); - if (cr.moveToFirst()) { - /*Construct*/ - CreateFromCursor(cr); - } else { - /*A critical error*/ - //Log.d(TAG, "Cannot add new program, sqlite error"); - this->id = -1; - } - cr.close(); - } - c.close(); - } + CTvChannel channel; + int ret = CTvChannel::selectByID(channelID, channel); + if (ret != 0) { + //Log.d(TAG, "Cannot add new program, invalid channel id "+channelID); + this->id = -1; + } else { + CTvDatabase::Cursor c ; + selectProgramInChannelByNumber(channelID, major, minor, c); + + if (c.moveToFirst()) { + /*Construct*/ + CreateFromCursor(c); + } else { + String8 tpids = String8(""), ttypes = String8(""), tmagnums = String8(""), tpgnums = String8(""), tlangs = String8(""); + String8 spids = String8(""), stypes = String8(""), scpgids = String8(""), sapgids = String8(""), slangs = String8(""); + + /*add a new atv program to database*/ + String8 cmd = String8("insert into srv_table(db_net_id,db_ts_id,service_id,src,name,service_type,"); + cmd += String8("eit_schedule_flag,eit_pf_flag,running_status,free_ca_mode,volume,aud_track,vid_pid,"); + cmd += String8("vid_fmt,aud_pids,aud_fmts,aud_langs,skip,lock,chan_num,major_chan_num,"); + cmd += String8("minor_chan_num,access_controlled,hidden,hide_guide,source_id,favor,current_aud,"); + cmd += String8("current_sub,sub_pids,sub_types,sub_composition_page_ids,sub_ancillary_page_ids,sub_langs,"); + cmd += String8("current_ttx,ttx_pids,ttx_types,ttx_magazine_nos,ttx_page_nos,ttx_langs,"); + cmd += String8("db_sat_para_id,scrambled_flag,lcn,hd_lcn,sd_lcn,default_chan_num,chan_order) "); + cmd += String8("values(-1,") + String8::format("%d", channelID) + String8(",65535,") + String8::format("%d", channel.getMode()) + String8(",'',") + String8::format("%d", type) + String8(","); + cmd += String8("0,0,0,0,0,0,8191,"); + int chanNum = major << 16 | minor; + int majorNum = major; + cmd += String8("-1,'','','',") + String8::format("%d", skipFlag) + String8(",0,") + String8::format("%d", chanNum) + String8(",") + String8::format("%d", majorNum) + String8(","); + cmd += String8("") + String8::format("%d", minor) + String8(",0,0,0,-1,0,-1,"); + cmd += String8("-1,'") + spids + String8("','") + stypes + String8("','") + scpgids + String8("','") + sapgids + String8("','") + slangs + String8("',"); + cmd += String8("-1,'") + tpids + String8("','") + ttypes + String8("','") + tmagnums + String8("','") + tpgnums + String8("','") + tlangs + String8("',"); + cmd += String8("-1,0,-1,-1,-1,-1,0)"); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); + + CTvDatabase::Cursor cr; + selectProgramInChannelByNumber(channelID, major, minor, cr); + if (cr.moveToFirst()) { + /*Construct*/ + CreateFromCursor(cr); + } else { + /*A critical error*/ + //Log.d(TAG, "Cannot add new program, sqlite error"); + this->id = -1; + } + cr.close(); + } + c.close(); + } } /** @@ -473,46 +473,46 @@ CTvProgram::CTvProgram(int channelID, int type, int major, int minor, int skipFl int CTvProgram::selectByID(int id, CTvProgram &prog) { - CTvDatabase::Cursor c; - String8 sql; - sql = String8("select * from srv_table where srv_table.db_id = ") + String8::format("%d", id); - CTvDatabase::GetTvDb()->select(sql.string(), c) ; - if (c.moveToFirst()) { - prog.CreateFromCursor(c); - } else { - c.close(); - return -1; - } - c.close(); - return 0; + CTvDatabase::Cursor c; + String8 sql; + sql = String8("select * from srv_table where srv_table.db_id = ") + String8::format("%d", id); + CTvDatabase::GetTvDb()->select(sql.string(), c) ; + if (c.moveToFirst()) { + prog.CreateFromCursor(c); + } else { + c.close(); + return -1; + } + c.close(); + return 0; } int CTvProgram::updateVolComp(int progID, int volValue) { - String8 cmd = String8("update srv_table set volume = ") + String8::format("%d", volValue) + - String8(" where srv_table.db_id = ") + String8::format("%d", progID); - LOGD("%s, cmd = %s\n", "TV", cmd.string()); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); + String8 cmd = String8("update srv_table set volume = ") + String8::format("%d", volValue) + + String8(" where srv_table.db_id = ") + String8::format("%d", progID); + LOGD("%s, cmd = %s\n", "TV", cmd.string()); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); - return 0; + return 0; } int CTvProgram::getChannel(CTvChannel &c) { - return CTvChannel::selectByID(channelID, c); + return CTvChannel::selectByID(channelID, c); } int CTvProgram::upDateChannel(CTvChannel &c, int std, int Freq, int fineFreq) { - return CTvChannel::updateByID(channelID, std, Freq, fineFreq); + return CTvChannel::updateByID(channelID, std, Freq, fineFreq); } int CTvProgram::deleteChannelsProgram(CTvChannel &c) { - String8 cmd; - cmd = String8("delete from srv_table where srv_table.db_ts_id = ") + String8::format("%d", c.getID()); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - return 0; + String8 cmd; + cmd = String8("delete from srv_table where srv_table.db_ts_id = ") + String8::format("%d", c.getID()); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); + return 0; } @@ -521,31 +521,31 @@ int CTvProgram::deleteChannelsProgram(CTvChannel &c) */ int CTvProgram::selectByNumber(int type, int num, CTvProgram &prog) { - String8 cmd; + String8 cmd; - cmd = String8("select * from srv_table where "); - if (type != TYPE_UNKNOWN) { - if (type == TYPE_DTV) { - cmd += String8("(service_type = ") + String8::format("%d", TYPE_DTV) + String8(" or service_type = ") + String8::format("%d", TYPE_RADIO) + String8(") and "); - } else { - cmd += String8("service_type = ") + String8::format("%d", type) + String8(" and "); - } - } + cmd = String8("select * from srv_table where "); + if (type != TYPE_UNKNOWN) { + if (type == TYPE_DTV) { + cmd += String8("(service_type = ") + String8::format("%d", TYPE_DTV) + String8(" or service_type = ") + String8::format("%d", TYPE_RADIO) + String8(") and "); + } else { + cmd += String8("service_type = ") + String8::format("%d", type) + String8(" and "); + } + } - cmd += String8("chan_num = ") + String8::format("%d", num); + cmd += String8("chan_num = ") + String8::format("%d", num); - CTvDatabase::Cursor c; - CTvDatabase::GetTvDb()->select(cmd, c); + CTvDatabase::Cursor c; + CTvDatabase::GetTvDb()->select(cmd, c); - if (c.moveToFirst()) { - prog.CreateFromCursor(c); - } else { - c.close(); - return -1; - } - c.close(); + if (c.moveToFirst()) { + prog.CreateFromCursor(c); + } else { + c.close(); + return -1; + } + c.close(); - return 0; + return 0; } /** @@ -553,60 +553,60 @@ int CTvProgram::selectByNumber(int type, int num, CTvProgram &prog) */ int CTvProgram::selectByNumber(int type, int major, int minor, CTvProgram &prog, int minor_check) { - String8 cmd; - - cmd = String8("select * from srv_table where "); - if (type != TYPE_UNKNOWN) { - if (type == TYPE_DTV) { - cmd += String8("(service_type = ") + String8::format("%d", TYPE_TV) + String8(" or service_type = ") + String8::format("%d", TYPE_RADIO) + String8(") and "); - } else { - cmd += String8("service_type = ") + String8::format("%d", type) + String8(" and "); - } - } - - if (minor < 0) { - /*recursive call*/ - /*select dtv program first*/ - //showbo - int ret = selectByNumber(TYPE_DTV, major, 1, prog, MINOR_CHECK_NEAREST_UP); - if (ret != 0) { - /*then try atv program*/ - selectByNumber(TYPE_ATV, major, 0 , prog, MINOR_CHECK_NONE); - } - return 0; - } else if (minor >= 1) { - if (minor_check == MINOR_CHECK_UP) { - cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num >= ") + String8::format("%d", minor) + String8(" "); - cmd += String8("order by minor_chan_num DESC limit 1"); - } else if (minor_check == MINOR_CHECK_DOWN) { - cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num <= ") + String8::format("%d", minor) + String8(" "); - cmd += String8("order by minor_chan_num limit 1"); - } else if (minor_check == MINOR_CHECK_NEAREST_UP) { - cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num >= ") + String8::format("%d", minor) + String8(" "); - cmd += String8("order by minor_chan_num limit 1"); - } else if (minor_check == MINOR_CHECK_NEAREST_DOWN) { - cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num <= ") + String8::format("%d", minor) + String8(" "); - cmd += String8("order by minor_chan_num DESC limit 1"); - } else { - cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num = ") + String8::format("%d", minor); - } - } else { - cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num = ") + String8::format("%d", minor); - } - - - CTvDatabase::Cursor c; - CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - prog.CreateFromCursor(c); - } else { - c.close(); - return -1; - } - c.close(); - - return 0; + String8 cmd; + + cmd = String8("select * from srv_table where "); + if (type != TYPE_UNKNOWN) { + if (type == TYPE_DTV) { + cmd += String8("(service_type = ") + String8::format("%d", TYPE_TV) + String8(" or service_type = ") + String8::format("%d", TYPE_RADIO) + String8(") and "); + } else { + cmd += String8("service_type = ") + String8::format("%d", type) + String8(" and "); + } + } + + if (minor < 0) { + /*recursive call*/ + /*select dtv program first*/ + //showbo + int ret = selectByNumber(TYPE_DTV, major, 1, prog, MINOR_CHECK_NEAREST_UP); + if (ret != 0) { + /*then try atv program*/ + selectByNumber(TYPE_ATV, major, 0 , prog, MINOR_CHECK_NONE); + } + return 0; + } else if (minor >= 1) { + if (minor_check == MINOR_CHECK_UP) { + cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num >= ") + String8::format("%d", minor) + String8(" "); + cmd += String8("order by minor_chan_num DESC limit 1"); + } else if (minor_check == MINOR_CHECK_DOWN) { + cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num <= ") + String8::format("%d", minor) + String8(" "); + cmd += String8("order by minor_chan_num limit 1"); + } else if (minor_check == MINOR_CHECK_NEAREST_UP) { + cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num >= ") + String8::format("%d", minor) + String8(" "); + cmd += String8("order by minor_chan_num limit 1"); + } else if (minor_check == MINOR_CHECK_NEAREST_DOWN) { + cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num <= ") + String8::format("%d", minor) + String8(" "); + cmd += String8("order by minor_chan_num DESC limit 1"); + } else { + cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num = ") + String8::format("%d", minor); + } + } else { + cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num = ") + String8::format("%d", minor); + } + + + CTvDatabase::Cursor c; + CTvDatabase::GetTvDb()->select(cmd, c); + + if (c.moveToFirst()) { + prog.CreateFromCursor(c); + } else { + c.close(); + return -1; + } + c.close(); + + return 0; } @@ -618,133 +618,133 @@ int CTvProgram::selectByNumber(int type, int major, int minor, CTvProgram &prog, int CTvProgram::selectByChannel(int channelID, int type, Vector > &out) { - //Vector vp; - String8 cmd = String8("select * from srv_table "); + //Vector vp; + String8 cmd = String8("select * from srv_table "); - if (type == TYPE_DTV) { - cmd += String8("where (service_type = ") + String8::format("%d", TYPE_TV) + String8(" or service_type = ") + String8::format("%d", TYPE_RADIO) + String8(") "); - } else if (type != TYPE_UNKNOWN) { - cmd += String8("where service_type = ") + String8::format("%d", type) + String8(" "); - } + if (type == TYPE_DTV) { + cmd += String8("where (service_type = ") + String8::format("%d", TYPE_TV) + String8(" or service_type = ") + String8::format("%d", TYPE_RADIO) + String8(") "); + } else if (type != TYPE_UNKNOWN) { + cmd += String8("where service_type = ") + String8::format("%d", type) + String8(" "); + } - cmd += String8(" and db_ts_id = ") + String8::format("%d", channelID) + String8(" order by chan_order"); + cmd += String8(" and db_ts_id = ") + String8::format("%d", channelID) + String8(" order by chan_order"); - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); + CTvDatabase::Cursor c; + int ret = CTvDatabase::GetTvDb()->select(cmd, c); - LOGD("selectByChannel select ret = %d", ret); + LOGD("selectByChannel select ret = %d", ret); - if (c.moveToFirst()) { - do { - out.add(new CTvProgram(c)); - } while (c.moveToNext()); - } - c.close(); + if (c.moveToFirst()) { + do { + out.add(new CTvProgram(c)); + } while (c.moveToNext()); + } + c.close(); - return 0; + return 0; } void CTvProgram::deleteProgram(int progId) { - String8 cmd; + String8 cmd; - cmd = String8("delete from srv_table where srv_table.db_id = ") + String8::format("%d", progId); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); + cmd = String8("delete from srv_table where srv_table.db_id = ") + String8::format("%d", progId); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); } int CTvProgram::CleanAllProgramBySrvType(int srvType) { - String8 cmd = String8("delete from srv_table where service_type = ") + String8::format("%d", srvType); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - return 0; + String8 cmd = String8("delete from srv_table where service_type = ") + String8::format("%d", srvType); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); + return 0; } int CTvProgram::selectByType(int type, int skip, Vector > &out) { - String8 cmd = String8("select * from srv_table "); - LOGD("%s, type= %d\n", "TV", (int)type); + String8 cmd = String8("select * from srv_table "); + LOGD("%s, type= %d\n", "TV", (int)type); - if (type == TYPE_UNKNOWN) { - cmd += String8("where (service_type = ") + String8::format("%d", TYPE_ATV) + - String8(" or service_type = ") + String8::format("%d", TYPE_DTV) + - String8(" or service_type = ") + String8::format("%d", TYPE_RADIO) + - String8(") "); - } else { - cmd += String8("where service_type = ") + String8::format("%d", type) + String8(" "); - } + if (type == TYPE_UNKNOWN) { + cmd += String8("where (service_type = ") + String8::format("%d", TYPE_ATV) + + String8(" or service_type = ") + String8::format("%d", TYPE_DTV) + + String8(" or service_type = ") + String8::format("%d", TYPE_RADIO) + + String8(") "); + } else { + cmd += String8("where service_type = ") + String8::format("%d", type) + String8(" "); + } - if (skip == PROGRAM_SKIP_NO || skip == PROGRAM_SKIP_YES) - cmd += String8(" and skip = ") + String8::format("%d", skip) + String8(" "); + if (skip == PROGRAM_SKIP_NO || skip == PROGRAM_SKIP_YES) + cmd += String8(" and skip = ") + String8::format("%d", skip) + String8(" "); - if (type == TYPE_DTV || type == TYPE_RADIO) { - cmd += String8(" order by db_ts_id"); - } else { - cmd += String8(" order by chan_order"); - } + if (type == TYPE_DTV || type == TYPE_RADIO) { + cmd += String8(" order by db_ts_id"); + } else { + cmd += String8(" order by chan_order"); + } - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); + CTvDatabase::Cursor c; + int ret = CTvDatabase::GetTvDb()->select(cmd, c); - LOGD("selectByType select ret = %d", ret); + LOGD("selectByType select ret = %d", ret); - if (c.moveToFirst()) { - do { - out.add(new CTvProgram(c)); - } while (c.moveToNext()); - } - c.close(); + if (c.moveToFirst()) { + do { + out.add(new CTvProgram(c)); + } while (c.moveToNext()); + } + c.close(); - return 0; + return 0; } int CTvProgram::selectByChanID(int type, int skip, Vector < sp < CTvProgram > > &out) { - String8 cmd = String8("select * from srv_table "); + String8 cmd = String8("select * from srv_table "); - if (type == TYPE_UNKNOWN) { - cmd += String8("where (service_type = ") + String8::format("%d", TYPE_ATV) + - String8(" or service_type = ") + String8::format("%d", TYPE_DTV) + - String8(") "); - } else { - cmd += String8("where service_type = ") + String8::format("%d", type) + String8(" "); - } + if (type == TYPE_UNKNOWN) { + cmd += String8("where (service_type = ") + String8::format("%d", TYPE_ATV) + + String8(" or service_type = ") + String8::format("%d", TYPE_DTV) + + String8(") "); + } else { + cmd += String8("where service_type = ") + String8::format("%d", type) + String8(" "); + } - if (skip == PROGRAM_SKIP_NO || skip == PROGRAM_SKIP_YES) - cmd += String8(" and skip = ") + String8::format("%d", PROGRAM_SKIP_NO) + - String8(" or skip = ") + String8::format("%d", PROGRAM_SKIP_YES) + String8(" "); + if (skip == PROGRAM_SKIP_NO || skip == PROGRAM_SKIP_YES) + cmd += String8(" and skip = ") + String8::format("%d", PROGRAM_SKIP_NO) + + String8(" or skip = ") + String8::format("%d", PROGRAM_SKIP_YES) + String8(" "); - cmd += String8(" order by db_id"); + cmd += String8(" order by db_id"); - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); + CTvDatabase::Cursor c; + int ret = CTvDatabase::GetTvDb()->select(cmd, c); - if (c.moveToFirst()) { - do { - out.add(new CTvProgram(c)); - } while (c.moveToNext()); - } - c.close(); + if (c.moveToFirst()) { + do { + out.add(new CTvProgram(c)); + } while (c.moveToNext()); + } + c.close(); - return 0; + return 0; } int CTvProgram::selectAll(bool no_skip, Vector > &out) { - return selectByType(TYPE_UNKNOWN, no_skip, out); + return selectByType(TYPE_UNKNOWN, no_skip, out); } Vector CTvProgram::selectByChannel(int channelID) { - Vector vProg; - return vProg; + Vector vProg; + return vProg; } Vector CTvProgram::selectByName(int name) { - Vector vProg; - return vProg; + Vector vProg; + return vProg; } void CTvProgram::tvProgramDelByChannelID(int channelID) @@ -755,11 +755,11 @@ void CTvProgram::tvProgramDelByChannelID(int channelID) String8 CTvProgram::getName() { - return name; + return name; } int CTvProgram::getProgSkipFlag() { - return skip; + return skip; } /** @@ -769,155 +769,155 @@ int CTvProgram::getProgSkipFlag() */ int CTvProgram::getCurrentAudio(String8 defaultLang) { - CTvDatabase::Cursor c; - String8 cmd; - cmd = String8("select current_aud from srv_table where db_id = ") + String8::format("%d", this->id); - int ret = CTvDatabase::GetTvDb()->select(cmd, c); - LOGD("getCurrentAudio a size = %d", mvAudios.size()); - int id = 0; - if (c.moveToFirst()) { - id = c.getInt(0); - LOGD("getCurrentAudio a id = %d", id); - if (id < 0 && mvAudios.size() > 0) { - LOGD("getCurrentAudio defaultLang.isEmpty() =%s= %d", defaultLang.string(), defaultLang.isEmpty()); - if (!defaultLang.isEmpty()) { - for (int i = 0; i < mvAudios.size(); i++) { - LOGD("getCurrentAudio a mvAudios[i] = %d", mvAudios[i]); - if (mvAudios[i]->getLang() == defaultLang) { - id = i; - break; - } - } - } - - if (id < 0) { - /* still not found, using the first */ - id = 0; - } - } - } - LOGD("getCurrentAudio a idsss = %d", id); - c.close(); - - return id; + CTvDatabase::Cursor c; + String8 cmd; + cmd = String8("select current_aud from srv_table where db_id = ") + String8::format("%d", this->id); + int ret = CTvDatabase::GetTvDb()->select(cmd, c); + LOGD("getCurrentAudio a size = %d", mvAudios.size()); + int id = 0; + if (c.moveToFirst()) { + id = c.getInt(0); + LOGD("getCurrentAudio a id = %d", id); + if (id < 0 && mvAudios.size() > 0) { + LOGD("getCurrentAudio defaultLang.isEmpty() =%s= %d", defaultLang.string(), defaultLang.isEmpty()); + if (!defaultLang.isEmpty()) { + for (int i = 0; i < mvAudios.size(); i++) { + LOGD("getCurrentAudio a mvAudios[i] = %d", mvAudios[i]); + if (mvAudios[i]->getLang() == defaultLang) { + id = i; + break; + } + } + } + + if (id < 0) { + /* still not found, using the first */ + id = 0; + } + } + } + LOGD("getCurrentAudio a idsss = %d", id); + c.close(); + + return id; } int CTvProgram::getAudioChannel() { - return audioTrack; + return audioTrack; } int CTvProgram::updateAudioChannel(int progId, int ch) { - String8 cmd; + String8 cmd; - cmd = String8("update srv_table set aud_track =") + "\'" + String8::format("%d", ch) + "\'" - + String8(" where srv_table.db_id = ") + String8::format("%d", progId); + cmd = String8("update srv_table set aud_track =") + "\'" + String8::format("%d", ch) + "\'" + + String8(" where srv_table.db_id = ") + String8::format("%d", progId); - return CTvDatabase::GetTvDb()->exeSql(cmd.string()); + return CTvDatabase::GetTvDb()->exeSql(cmd.string()); } int CTvProgram::getSubtitleIndex(int progId) { - CTvDatabase::Cursor c; - String8 cmd = String8("select current_sub from srv_table where db_id = ") + String8::format("%d", progId); - int ret = CTvDatabase::GetTvDb()->select(cmd, c); - if (c.moveToFirst()) { - return c.getInt(0); - } else { - return -1; - } + CTvDatabase::Cursor c; + String8 cmd = String8("select current_sub from srv_table where db_id = ") + String8::format("%d", progId); + int ret = CTvDatabase::GetTvDb()->select(cmd, c); + if (c.moveToFirst()) { + return c.getInt(0); + } else { + return -1; + } } int CTvProgram::setSubtitleIndex(int progId, int index) { - String8 cmd = String8("update srv_table set current_sub = ") + String8::format("%d", index) + String8(" where db_id = ") + String8::format("%d", progId); - return CTvDatabase::GetTvDb()->exeSql(cmd.string()); + String8 cmd = String8("update srv_table set current_sub = ") + String8::format("%d", index) + String8(" where db_id = ") + String8::format("%d", progId); + return CTvDatabase::GetTvDb()->exeSql(cmd.string()); } int CTvProgram::getCurrAudioTrackIndex() { - int audTrackIdx = -1; + int audTrackIdx = -1; - if (-1 == currAudTrackIndex) { // no set field "current_aud" - audTrackIdx = getCurrentAudio(String8("eng")); - setCurrAudioTrackIndex(this->id, audTrackIdx); - } else { - audTrackIdx = currAudTrackIndex; - } + if (-1 == currAudTrackIndex) { // no set field "current_aud" + audTrackIdx = getCurrentAudio(String8("eng")); + setCurrAudioTrackIndex(this->id, audTrackIdx); + } else { + audTrackIdx = currAudTrackIndex; + } - return audTrackIdx; + return audTrackIdx; } void CTvProgram::setCurrAudioTrackIndex(int programId, int audioIndex) { - String8 cmd; + String8 cmd; - cmd = String8("update srv_table set current_aud = ") - + String8::format("%d", audioIndex) + String8(" where srv_table.db_id = ") + String8::format("%d", programId); + cmd = String8("update srv_table set current_aud = ") + + String8::format("%d", audioIndex) + String8(" where srv_table.db_id = ") + String8::format("%d", programId); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); } void CTvProgram::setFavoriteFlag(int progId, bool bFavor) { - String8 cmd; + String8 cmd; - cmd = String8("update srv_table set favor = ") - + String8::format("%d", bFavor ? 1 : 0) + String8(" where srv_table.db_id = ") + String8::format("%d", progId); + cmd = String8("update srv_table set favor = ") + + String8::format("%d", bFavor ? 1 : 0) + String8(" where srv_table.db_id = ") + String8::format("%d", progId); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); } void CTvProgram::setSkipFlag(int progId, bool bSkipFlag) { - String8 cmd; + String8 cmd; - cmd = String8("update srv_table set skip = ") + String8::format("%d", bSkipFlag ? 1 : 0) - + String8(" where srv_table.db_id = ") + String8::format("%d", progId); + cmd = String8("update srv_table set skip = ") + String8::format("%d", bSkipFlag ? 1 : 0) + + String8(" where srv_table.db_id = ") + String8::format("%d", progId); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); } void CTvProgram::updateProgramName(int progId, String8 strName) { - String8 newName = String8("xxx") + strName; - String8 cmd; + String8 newName = String8("xxx") + strName; + String8 cmd; - cmd = String8("update srv_table set name =") + "\'" + String8::format("%s", newName.string()) + "\'" - + String8(" where srv_table.db_id = ") + String8::format("%d", progId); + cmd = String8("update srv_table set name =") + "\'" + String8::format("%s", newName.string()) + "\'" + + String8(" where srv_table.db_id = ") + String8::format("%d", progId); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); } void CTvProgram::swapChanOrder(int ProgId1, int chanOrderNum1, int ProgId2, int chanOrderNum2) { - String8 cmd; + String8 cmd; - cmd = String8("update srv_table set chan_order = ") + String8::format("%d", chanOrderNum2) - + String8(" where db_id = ") + String8::format("%d", ProgId1); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); + cmd = String8("update srv_table set chan_order = ") + String8::format("%d", chanOrderNum2) + + String8(" where db_id = ") + String8::format("%d", ProgId1); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); - String8 cmd2; - cmd2 = String8("update srv_table set chan_order = ") + String8::format("%d", chanOrderNum1) - + String8(" where db_id = ") + String8::format("%d", ProgId2); - CTvDatabase::GetTvDb()->exeSql(cmd2.string()); + String8 cmd2; + cmd2 = String8("update srv_table set chan_order = ") + String8::format("%d", chanOrderNum1) + + String8(" where db_id = ") + String8::format("%d", ProgId2); + CTvDatabase::GetTvDb()->exeSql(cmd2.string()); } void CTvProgram::setLockFlag(int progId, bool bLockFlag) { - String8 cmd; + String8 cmd; - cmd = String8("update srv_table set lock = ") + String8::format("%d", bLockFlag ? 1 : 0) - + String8(" where srv_table.db_id = ") + String8::format("%d", progId); + cmd = String8("update srv_table set lock = ") + String8::format("%d", bLockFlag ? 1 : 0) + + String8(" where srv_table.db_id = ") + String8::format("%d", progId); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); + CTvDatabase::GetTvDb()->exeSql(cmd.string()); } bool CTvProgram::getLockFlag() { - return lock; + return lock; } diff --git a/tvapi/libtv/tvdb/CTvProgram.h b/tvapi/libtv/tvdb/CTvProgram.h index 33d5e7c..1c35c67 100644 --- a/tvapi/libtv/tvdb/CTvProgram.h +++ b/tvapi/libtv/tvdb/CTvProgram.h @@ -24,513 +24,513 @@ using namespace android; class CTvEvent; class CTvProgram : public LightRefBase { public: - /*this type value is link to enum AM_SCAN_ServiceType in am_scan.h - * enum AM_SCAN_ServiceType - { - AM_SCAN_SRV_UNKNOWN = 0, < δ֪ÀàÐÍ - AM_SCAN_SRV_DTV = 1, < Êý×ÖµçÊÓÀàÐÍ - AM_SCAN_SRV_DRADIO = 2, < Êý×ֹ㲥ÀàÐÍ - AM_SCAN_SRV_ATV = 3, < Ä£ÄâµçÊÓÀàÐÍ - }; - * / - /**䶨ÒåÀàÐÍ*/ - static const int TYPE_UNKNOWN = 0; - /**µçÊÓ½ÚÄ¿*/ - static const int TYPE_TV = 4; - /**¹ã²¥½ÚÄ¿*/ - static const int TYPE_RADIO = 2; - /**Ä£Äâ½ÚÄ¿*/ - static const int TYPE_ATV = 3; - /**Êý¾Ý½ÚÄ¿*/ - static const int TYPE_DATA = 5; - /**Êý×Ö½ÚÄ¿*/ - static const int TYPE_DTV = 1 ; - /** PVR/Timeshifting playback program*/ - static const int TYPE_PLAYBACK = 6; - - static const int PROGRAM_SKIP_NO = 0; - static const int PROGRAM_SKIP_YES = 1; - static const int PROGRAM_SKIP_UNKOWN = 2; - - /** - *ServiceÖеĻù´¡ÔªËØÐÅÏ¢ - */ + /*this type value is link to enum AM_SCAN_ServiceType in am_scan.h + * enum AM_SCAN_ServiceType + { + AM_SCAN_SRV_UNKNOWN = 0, < δ֪ÀàÐÍ + AM_SCAN_SRV_DTV = 1, < Êý×ÖµçÊÓÀàÐÍ + AM_SCAN_SRV_DRADIO = 2, < Êý×ֹ㲥ÀàÐÍ + AM_SCAN_SRV_ATV = 3, < Ä£ÄâµçÊÓÀàÐÍ + }; + * / + /**䶨ÒåÀàÐÍ*/ + static const int TYPE_UNKNOWN = 0; + /**µçÊÓ½ÚÄ¿*/ + static const int TYPE_TV = 4; + /**¹ã²¥½ÚÄ¿*/ + static const int TYPE_RADIO = 2; + /**Ä£Äâ½ÚÄ¿*/ + static const int TYPE_ATV = 3; + /**Êý¾Ý½ÚÄ¿*/ + static const int TYPE_DATA = 5; + /**Êý×Ö½ÚÄ¿*/ + static const int TYPE_DTV = 1 ; + /** PVR/Timeshifting playback program*/ + static const int TYPE_PLAYBACK = 6; + + static const int PROGRAM_SKIP_NO = 0; + static const int PROGRAM_SKIP_YES = 1; + static const int PROGRAM_SKIP_UNKOWN = 2; + + /** + *ServiceÖеĻù´¡ÔªËØÐÅÏ¢ + */ public: - class Element { - private : - int mpid; - - public : - Element(int pid) - { - this->mpid = pid; - } - /** - *È¡µÃ»ù´¡ÔªËصÄPID - *@return ·µ»ØPID - */ - int getPID() - { - return mpid; - } - }; - - - - /** - *¶àÓïÑÔ»ù´¡ÔªËØÐÅÏ¢ - */ + class Element { + private : + int mpid; + + public : + Element(int pid) + { + this->mpid = pid; + } + /** + *È¡µÃ»ù´¡ÔªËصÄPID + *@return ·µ»ØPID + */ + int getPID() + { + return mpid; + } + }; + + + + /** + *¶àÓïÑÔ»ù´¡ÔªËØÐÅÏ¢ + */ public: - class MultiLangElement : public Element { - private : - String8 mlang; - - public : - MultiLangElement(int pid, String8 lang): Element(pid) - { - this->mlang = lang; - } - - /** - *È¡µÃÔªËضÔÓ¦µÄÓïÑÔ - *@return ·µ»Ø3×Ö·ûÓïÑÔ×Ö·û´® - */ - String8 getLang() - { - return mlang; - } - }; - - - - /** - *ÊÓƵÐÅÏ¢ - */ + class MultiLangElement : public Element { + private : + String8 mlang; + + public : + MultiLangElement(int pid, String8 lang): Element(pid) + { + this->mlang = lang; + } + + /** + *È¡µÃÔªËضÔÓ¦µÄÓïÑÔ + *@return ·µ»Ø3×Ö·ûÓïÑÔ×Ö·û´® + */ + String8 getLang() + { + return mlang; + } + }; + + + + /** + *ÊÓƵÐÅÏ¢ + */ public : - class Video : public Element { - public: - /**MPEG1/2*/ - static const int FORMAT_MPEG12 = 0; - /**MPEG4*/ - static const int FORMAT_MPEG4 = 1; - /**H.264*/ - static const int FORMAT_H264 = 2; - /**MJPEG*/ - static const int FORMAT_MJPEG = 3; - /**Real video*/ - static const int FORMAT_REAL = 4; - /**JPEG*/ - static const int FORMAT_JPEG = 5; - /**Microsoft VC1*/ - static const int FORMAT_VC1 = 6; - /**AVS*/ - static const int FORMAT_AVS = 7; - /**YUV*/ - static const int FORMAT_YUV = 8; - /**H.264 MVC*/ - static const int FORMAT_H264MVC = 9; - /**QJPEG*/ - static const int FORMAT_QJPEG = 10; - - Video(int pid, int fmt): Element(pid) - { - this->mformat = fmt; - } - - /** - *È¡µÃÊÓƵ±àÂë¸ñʽ - *@return ·µ»ØÊÓƵ±àÂë¸ñʽ - */ - int getFormat() - { - return mformat; - } - private : - int mformat; - }; - - /** - *ÒôƵÐÅÏ¢ - */ + class Video : public Element { + public: + /**MPEG1/2*/ + static const int FORMAT_MPEG12 = 0; + /**MPEG4*/ + static const int FORMAT_MPEG4 = 1; + /**H.264*/ + static const int FORMAT_H264 = 2; + /**MJPEG*/ + static const int FORMAT_MJPEG = 3; + /**Real video*/ + static const int FORMAT_REAL = 4; + /**JPEG*/ + static const int FORMAT_JPEG = 5; + /**Microsoft VC1*/ + static const int FORMAT_VC1 = 6; + /**AVS*/ + static const int FORMAT_AVS = 7; + /**YUV*/ + static const int FORMAT_YUV = 8; + /**H.264 MVC*/ + static const int FORMAT_H264MVC = 9; + /**QJPEG*/ + static const int FORMAT_QJPEG = 10; + + Video(int pid, int fmt): Element(pid) + { + this->mformat = fmt; + } + + /** + *È¡µÃÊÓƵ±àÂë¸ñʽ + *@return ·µ»ØÊÓƵ±àÂë¸ñʽ + */ + int getFormat() + { + return mformat; + } + private : + int mformat; + }; + + /** + *ÒôƵÐÅÏ¢ + */ public : - class Audio : public MultiLangElement { - public : - /**MPEG*/ - static const int FORMAT_MPEG = 0; - /**PCM 16λС¶Ë*/ - static const int FORMAT_PCM_S16LE = 1; - /**AAC*/ - static const int FORMAT_AAC = 2; - /**AC3*/ - static const int FORMAT_AC3 = 3; - /**ALAW*/ - static const int FORMAT_ALAW = 4; - /**MULAW*/ - static const int FORMAT_MULAW = 5; - /**DTS*/ - static const int FORMAT_DTS = 6; - /**PCM 16λ´ó¶Ë*/ - static const int FORMAT_PCM_S16BE = 7; - /**FLAC*/ - static const int FORMAT_FLAC = 8; - /**COOK*/ - static const int FORMAT_COOK = 9; - /**PCM 8λ*/ - static const int FORMAT_PCM_U8 = 10; - /**ADPCM*/ - static const int FORMAT_ADPCM = 11; - /**AMR*/ - static const int FORMAT_AMR = 12; - /**RAAC*/ - static const int FORMAT_RAAC = 13; - /**WMA*/ - static const int FORMAT_WMA = 14; - /**WMA Pro*/ - static const int FORMAT_WMAPRO = 15; - /**À¶¹âPCM*/ - static const int FORMAT_PCM_BLURAY = 16; - /**ALAC*/ - static const int FORMAT_ALAC = 17; - /**Vorbis*/ - static const int FORMAT_VORBIS = 18; - /**AAC latm¸ñʽ*/ - static const int FORMAT_AAC_LATM = 19; - /**APE*/ - static const int FORMAT_APE = 20; - - - Audio(int pid, String8 lang, int fmt): MultiLangElement(pid, lang) - { - this->mformat = fmt; - } - - /** - *È¡µÃÒôƵ±àÂë¸ñʽ - *@return ·µ»ØÒôƵ±àÂë¸ñʽ - */ - int getFormat() - { - return mformat; - } - private : - int mformat; - }; - - /** - *×ÖÄ»ÐÅÏ¢ - */ + class Audio : public MultiLangElement { + public : + /**MPEG*/ + static const int FORMAT_MPEG = 0; + /**PCM 16λС¶Ë*/ + static const int FORMAT_PCM_S16LE = 1; + /**AAC*/ + static const int FORMAT_AAC = 2; + /**AC3*/ + static const int FORMAT_AC3 = 3; + /**ALAW*/ + static const int FORMAT_ALAW = 4; + /**MULAW*/ + static const int FORMAT_MULAW = 5; + /**DTS*/ + static const int FORMAT_DTS = 6; + /**PCM 16λ´ó¶Ë*/ + static const int FORMAT_PCM_S16BE = 7; + /**FLAC*/ + static const int FORMAT_FLAC = 8; + /**COOK*/ + static const int FORMAT_COOK = 9; + /**PCM 8λ*/ + static const int FORMAT_PCM_U8 = 10; + /**ADPCM*/ + static const int FORMAT_ADPCM = 11; + /**AMR*/ + static const int FORMAT_AMR = 12; + /**RAAC*/ + static const int FORMAT_RAAC = 13; + /**WMA*/ + static const int FORMAT_WMA = 14; + /**WMA Pro*/ + static const int FORMAT_WMAPRO = 15; + /**À¶¹âPCM*/ + static const int FORMAT_PCM_BLURAY = 16; + /**ALAC*/ + static const int FORMAT_ALAC = 17; + /**Vorbis*/ + static const int FORMAT_VORBIS = 18; + /**AAC latm¸ñʽ*/ + static const int FORMAT_AAC_LATM = 19; + /**APE*/ + static const int FORMAT_APE = 20; + + + Audio(int pid, String8 lang, int fmt): MultiLangElement(pid, lang) + { + this->mformat = fmt; + } + + /** + *È¡µÃÒôƵ±àÂë¸ñʽ + *@return ·µ»ØÒôƵ±àÂë¸ñʽ + */ + int getFormat() + { + return mformat; + } + private : + int mformat; + }; + + /** + *×ÖÄ»ÐÅÏ¢ + */ public : - class Subtitle : public MultiLangElement { - public : - /**DVB subtitle*/ - static const int TYPE_DVB_SUBTITLE = 1; - /**Êý×ÖµçÊÓTeletext*/ - static const int TYPE_DTV_TELETEXT = 2; - /**Ä£ÄâµçÊÓTeletext*/ - static const int TYPE_ATV_TELETEXT = 3; - /**Êý×ÖµçÊÓClosed caption*/ - static const int TYPE_DTV_CC = 4; - /**Ä£ÄâµçÊÓClosed caption*/ - static const int TYPE_ATV_CC = 5; - - - - Subtitle(int pid, String8 lang, int type, int num1, int num2): MultiLangElement(pid, lang) - { - - this->type = type; - if (type == TYPE_DVB_SUBTITLE) { - compositionPage = num1; - ancillaryPage = num2; - } else if (type == TYPE_DTV_TELETEXT) { - magazineNo = num1; - pageNo = num2; - } - } - - /** - *È¡µÃ×ÖÄ»ÀàÐÍ - *@return ·µ»Ø×ÖÄ»ÀàÐÍ - */ - int getType() - { - return type; - } - - /** - *È¡µÃDVB subtitleµÄcomposition page ID - *@return ·µ»Øcomposition page ID - */ - int getCompositionPageID() - { - return compositionPage; - } - - /** - *È¡µÃDVB subtitleµÄancillary page ID - *@return ·µ»Øancillary page ID - */ - int getAncillaryPageID() - { - return ancillaryPage; - } - - /** - *È¡µÃteletextµÄmagazine number - *@return ·µ»Ømagazine number - */ - int getMagazineNumber() - { - return magazineNo; - } - - /** - *È¡µÃteletextµÄpage number - *@return ·µ»Øpage number - */ - int getPageNumber() - { - return pageNo; - } - - private : - int compositionPage; - int ancillaryPage; - int magazineNo; - int pageNo; - int type; - }; - - /** - *TeletextÐÅÏ¢ - */ + class Subtitle : public MultiLangElement { + public : + /**DVB subtitle*/ + static const int TYPE_DVB_SUBTITLE = 1; + /**Êý×ÖµçÊÓTeletext*/ + static const int TYPE_DTV_TELETEXT = 2; + /**Ä£ÄâµçÊÓTeletext*/ + static const int TYPE_ATV_TELETEXT = 3; + /**Êý×ÖµçÊÓClosed caption*/ + static const int TYPE_DTV_CC = 4; + /**Ä£ÄâµçÊÓClosed caption*/ + static const int TYPE_ATV_CC = 5; + + + + Subtitle(int pid, String8 lang, int type, int num1, int num2): MultiLangElement(pid, lang) + { + + this->type = type; + if (type == TYPE_DVB_SUBTITLE) { + compositionPage = num1; + ancillaryPage = num2; + } else if (type == TYPE_DTV_TELETEXT) { + magazineNo = num1; + pageNo = num2; + } + } + + /** + *È¡µÃ×ÖÄ»ÀàÐÍ + *@return ·µ»Ø×ÖÄ»ÀàÐÍ + */ + int getType() + { + return type; + } + + /** + *È¡µÃDVB subtitleµÄcomposition page ID + *@return ·µ»Øcomposition page ID + */ + int getCompositionPageID() + { + return compositionPage; + } + + /** + *È¡µÃDVB subtitleµÄancillary page ID + *@return ·µ»Øancillary page ID + */ + int getAncillaryPageID() + { + return ancillaryPage; + } + + /** + *È¡µÃteletextµÄmagazine number + *@return ·µ»Ømagazine number + */ + int getMagazineNumber() + { + return magazineNo; + } + + /** + *È¡µÃteletextµÄpage number + *@return ·µ»Øpage number + */ + int getPageNumber() + { + return pageNo; + } + + private : + int compositionPage; + int ancillaryPage; + int magazineNo; + int pageNo; + int type; + }; + + /** + *TeletextÐÅÏ¢ + */ public : - class Teletext : public MultiLangElement { - public: - Teletext(int pid, String8 lang, int mag, int page): MultiLangElement(pid, lang) - { - magazineNo = mag; - pageNo = page; - } - - /** - *È¡µÃteletextµÄmagazine number - *@return ·µ»Ømagazine number - */ - int getMagazineNumber() - { - return magazineNo; - } - - /** - *È¡µÃteletextµÄpage number - *@return ·µ»Øpage number - */ - int getPageNumber() - { - return pageNo; - } - - private : - int magazineNo; - int pageNo; - }; - - //½ÚÄ¿ºÅÐÅÏ¢ + class Teletext : public MultiLangElement { + public: + Teletext(int pid, String8 lang, int mag, int page): MultiLangElement(pid, lang) + { + magazineNo = mag; + pageNo = page; + } + + /** + *È¡µÃteletextµÄmagazine number + *@return ·µ»Ømagazine number + */ + int getMagazineNumber() + { + return magazineNo; + } + + /** + *È¡µÃteletextµÄpage number + *@return ·µ»Øpage number + */ + int getPageNumber() + { + return pageNo; + } + + private : + int magazineNo; + int pageNo; + }; + + //½ÚÄ¿ºÅÐÅÏ¢ public: - /**Èç¹ûûÓз¢ÏÖ×ÓƵµÀ£¬ºöÂÔÓû§µÄÊäÈë*/ - static const int MINOR_CHECK_NONE = 0; - /**Èç¹ûûÓз¢ÏÖ×ÓƵµÀ£¬ÏòÉÏÑ°ÕÒ£¨×ÓƵµÀÊý×ÖÔö¼Ó£©,ÕÒµ½×ÓƵµÀºÅ×î´óµÄ*/ - static const int MINOR_CHECK_UP = 1; - /**Èç¹ûûÓз¢ÏÖ×ÓƵµÀ£¬ÏòÏÂÑ°ÕÒ£¨×ÓƵµÀÊý×Ö¼õС£©,ÕÒµ½×ÓƵµÀºÅ×îСµÄ*/ - static const int MINOR_CHECK_DOWN = 2; - /*Èç¹ûûÓз¢ÏÖ×ÓƵµÀ£¬ÏòÉÏÑ°ÕÒ£¬È»ºóÕÒµ½ÏòÉÏ×î½üµÄ.*/ - static const int MINOR_CHECK_NEAREST_UP = 3; - /*Èç¹ûûÓз¢ÏÖ×ÓƵµÀ£¬ÏòÏÂÑ°ÕÒ£¬È»ºóÕÒµ½ÏòÏÂ×î½üµÄ.*/ - static const int MINOR_CHECK_NEAREST_DOWN = 4; - - /** - *È¡µÃ½ÚÄ¿ºÅ - *@return ·µ»Ø½ÚÄ¿ºÅ - */ - int getNumber() - { - return major; - } - - /** - *È¡µÃÖ÷½ÚÄ¿ºÅ(ATSC) - *@return ·µ»Ø½ÚÄ¿µÄÖ÷½ÚÄ¿ºÅ - */ - int getMajor() - { - return major; - } - - /** - *È¡µÃ´Î½ÚÄ¿ºÅ(ATSC) - *@return ·µ»Ø½ÚÄ¿µÄ´Î½ÚÄ¿ºÅ - */ - int getMinor() - { - return minor; - } - - /** - *ÊÇ·ñΪATSCģʽ - *@return Èç¹ûÊÇATSCģʽ·µ»Øtrue - */ - bool isATSCMode() - { - return atscMode; - } - - /** - *È¡µÃ×ÓƵµÀºÅ×Ô¶¯²éÕÒ²ßÂÔ(ATSC) - *@return ·µ»Ø×ÓƵµÀºÅ×Ô¶¯²éÕÒ²ßÂÔ - */ - int getMinorCheck() - { - return minorCheck; - } + /**Èç¹ûûÓз¢ÏÖ×ÓƵµÀ£¬ºöÂÔÓû§µÄÊäÈë*/ + static const int MINOR_CHECK_NONE = 0; + /**Èç¹ûûÓз¢ÏÖ×ÓƵµÀ£¬ÏòÉÏÑ°ÕÒ£¨×ÓƵµÀÊý×ÖÔö¼Ó£©,ÕÒµ½×ÓƵµÀºÅ×î´óµÄ*/ + static const int MINOR_CHECK_UP = 1; + /**Èç¹ûûÓз¢ÏÖ×ÓƵµÀ£¬ÏòÏÂÑ°ÕÒ£¨×ÓƵµÀÊý×Ö¼õС£©,ÕÒµ½×ÓƵµÀºÅ×îСµÄ*/ + static const int MINOR_CHECK_DOWN = 2; + /*Èç¹ûûÓз¢ÏÖ×ÓƵµÀ£¬ÏòÉÏÑ°ÕÒ£¬È»ºóÕÒµ½ÏòÉÏ×î½üµÄ.*/ + static const int MINOR_CHECK_NEAREST_UP = 3; + /*Èç¹ûûÓз¢ÏÖ×ÓƵµÀ£¬ÏòÏÂÑ°ÕÒ£¬È»ºóÕÒµ½ÏòÏÂ×î½üµÄ.*/ + static const int MINOR_CHECK_NEAREST_DOWN = 4; + + /** + *È¡µÃ½ÚÄ¿ºÅ + *@return ·µ»Ø½ÚÄ¿ºÅ + */ + int getNumber() + { + return major; + } + + /** + *È¡µÃÖ÷½ÚÄ¿ºÅ(ATSC) + *@return ·µ»Ø½ÚÄ¿µÄÖ÷½ÚÄ¿ºÅ + */ + int getMajor() + { + return major; + } + + /** + *È¡µÃ´Î½ÚÄ¿ºÅ(ATSC) + *@return ·µ»Ø½ÚÄ¿µÄ´Î½ÚÄ¿ºÅ + */ + int getMinor() + { + return minor; + } + + /** + *ÊÇ·ñΪATSCģʽ + *@return Èç¹ûÊÇATSCģʽ·µ»Øtrue + */ + bool isATSCMode() + { + return atscMode; + } + + /** + *È¡µÃ×ÓƵµÀºÅ×Ô¶¯²éÕÒ²ßÂÔ(ATSC) + *@return ·µ»Ø×ÓƵµÀºÅ×Ô¶¯²éÕÒ²ßÂÔ + */ + int getMinorCheck() + { + return minorCheck; + } private: - int major; - int minor; - int minorCheck; - bool atscMode; + int major; + int minor; + int minorCheck; + bool atscMode; public: - CTvProgram(CTvDatabase::Cursor &c); - CTvProgram(int channelID, int type, int num, int skipFlag); - /** - *ÏòÊý¾Ý¿âÌí¼ÓÒ»¸öProgram,atscMode - */ - CTvProgram(int channelID, int type, int major, int minor, int skipFlag); - ~CTvProgram(); - // ´´½¨²¢ÏòÊý¾Ý¿âÌí¼ÓÒ»¸öProgram - CTvProgram(int channelID, int type); - - CTvProgram(); - - - int getCurrentAudio(String8 defaultLang); - Video *getVideo() - { - return mpVideo; - } - Audio *getAudio(int id) - { - if (mvAudios.size() <= 0) return NULL; - return mvAudios[id]; - } - - int getAudioTrackSize() - { - return mvAudios.size(); - } - static int selectByID(int id, CTvProgram &p); - static CTvProgram selectByNumber(int num, int type); - int selectByNumber(int type, int major, int minor, CTvProgram &prog, int minor_check = MINOR_CHECK_NONE); - static int selectByNumber(int type, int num, CTvProgram &prog); - static int selectByChannel(int channelID, int type, Vector > &out); - // ÁгöÈ«²¿TVProgram - static int selectAll(bool no_skip, Vector > &out); - static int selectByType(int type, int skip, Vector > &out); - static int selectByChanID(int type, int skip, Vector > &out); - static Vector selectByChannel(int channelID); - // ¸ù¾Ý½ÚÄ¿Ãû³ÆÖеĹؼü×Ö²éÕÒÖ¸¶¨TVProgram - static Vector selectByName(int name); - void tvProgramDelByChannelID(int channelID); - int getID() - { - return id; - }; - int getSrc() - { - return src; - }; - int getProgType() - { - return type; - }; - int getChanOrderNum() - { - return chanOrderNum; - }; - int getChanVolume() - { - return volume; - }; - int getSourceId() - { - return sourceID; - }; - int getServiceId() - { - return dvbServiceID; - }; - int getProgSkipFlag(); - int getSubtitleIndex(int progId); - int setSubtitleIndex(int progId, int index); - void setCurrAudioTrackIndex(int programId, int audioIndex); - int getCurrAudioTrackIndex(); - - String8 getName(); - void getCurrentSubtitle(); - void getCurrentTeletext(); - int getChannel(CTvChannel &c); - int upDateChannel(CTvChannel &c, int std, int freq, int fineFreq); - int updateVolComp(int progID, int volValue); - void updateProgramName(int progId, String8 strName); - void setSkipFlag(int progId, bool bSkipFlag); - void setFavoriteFlag(int progId, bool bFavor); - int getFavoriteFlag() - { - return favorite; - }; - void deleteProgram(int progId); - static int CleanAllProgramBySrvType(int srvType); - void setLockFlag(int progId, bool bLockFlag); - bool getLockFlag(); - void swapChanOrder(int ProgId1, int chanOrderNum1, int ProgId2, int chanOrderNum2); - int getAudioChannel(); - static int updateAudioChannel(int progId, int ch); - static int deleteChannelsProgram(CTvChannel &c); - Vector getSubtitles() - { - return mvSubtitles; - } + CTvProgram(CTvDatabase::Cursor &c); + CTvProgram(int channelID, int type, int num, int skipFlag); + /** + *ÏòÊý¾Ý¿âÌí¼ÓÒ»¸öProgram,atscMode + */ + CTvProgram(int channelID, int type, int major, int minor, int skipFlag); + ~CTvProgram(); + // ´´½¨²¢ÏòÊý¾Ý¿âÌí¼ÓÒ»¸öProgram + CTvProgram(int channelID, int type); + + CTvProgram(); + + + int getCurrentAudio(String8 defaultLang); + Video *getVideo() + { + return mpVideo; + } + Audio *getAudio(int id) + { + if (mvAudios.size() <= 0) return NULL; + return mvAudios[id]; + } + + int getAudioTrackSize() + { + return mvAudios.size(); + } + static int selectByID(int id, CTvProgram &p); + static CTvProgram selectByNumber(int num, int type); + int selectByNumber(int type, int major, int minor, CTvProgram &prog, int minor_check = MINOR_CHECK_NONE); + static int selectByNumber(int type, int num, CTvProgram &prog); + static int selectByChannel(int channelID, int type, Vector > &out); + // ÁгöÈ«²¿TVProgram + static int selectAll(bool no_skip, Vector > &out); + static int selectByType(int type, int skip, Vector > &out); + static int selectByChanID(int type, int skip, Vector > &out); + static Vector selectByChannel(int channelID); + // ¸ù¾Ý½ÚÄ¿Ãû³ÆÖеĹؼü×Ö²éÕÒÖ¸¶¨TVProgram + static Vector selectByName(int name); + void tvProgramDelByChannelID(int channelID); + int getID() + { + return id; + }; + int getSrc() + { + return src; + }; + int getProgType() + { + return type; + }; + int getChanOrderNum() + { + return chanOrderNum; + }; + int getChanVolume() + { + return volume; + }; + int getSourceId() + { + return sourceID; + }; + int getServiceId() + { + return dvbServiceID; + }; + int getProgSkipFlag(); + int getSubtitleIndex(int progId); + int setSubtitleIndex(int progId, int index); + void setCurrAudioTrackIndex(int programId, int audioIndex); + int getCurrAudioTrackIndex(); + + String8 getName(); + void getCurrentSubtitle(); + void getCurrentTeletext(); + int getChannel(CTvChannel &c); + int upDateChannel(CTvChannel &c, int std, int freq, int fineFreq); + int updateVolComp(int progID, int volValue); + void updateProgramName(int progId, String8 strName); + void setSkipFlag(int progId, bool bSkipFlag); + void setFavoriteFlag(int progId, bool bFavor); + int getFavoriteFlag() + { + return favorite; + }; + void deleteProgram(int progId); + static int CleanAllProgramBySrvType(int srvType); + void setLockFlag(int progId, bool bLockFlag); + bool getLockFlag(); + void swapChanOrder(int ProgId1, int chanOrderNum1, int ProgId2, int chanOrderNum2); + int getAudioChannel(); + static int updateAudioChannel(int progId, int ch); + static int deleteChannelsProgram(CTvChannel &c); + Vector getSubtitles() + { + return mvSubtitles; + } private: - int CreateFromCursor(CTvDatabase::Cursor &c); - int selectProgramInChannelByNumber(int channelID, int num, CTvDatabase::Cursor &c); - int selectProgramInChannelByNumber(int channelID, int major, int minor, CTvDatabase::Cursor &c); - CTvChannel channel; - int id; - int dvbServiceID; - int type; - String8 name; - int channelID; - int skip; - int favorite; - int volume; - int sourceID; - int pmtPID; - int src; - int audioTrack; - int chanOrderNum; - int currAudTrackIndex; - bool lock; - bool scrambled; - // videoÐÅÏ¢,ÀàÐͲ»¶¨ - Video *mpVideo; - // audioÐÅÏ¢,ÀàÐͲ»¶¨ - Vector