@@ -394,6 +394,9 @@ namespace Plugin {
394
394
registerMethod (" resetMEMC" , &AVOutputTV::resetMEMC, this );
395
395
registerMethod (" getMEMCCaps" , &AVOutputTV::getMEMCCaps, this );
396
396
397
+ registerMethod (" setBacklightV2" , &AVOutputTV::setBacklightV2, this );
398
+ registerMethod (" getBacklightV2" , &AVOutputTV::getBacklightV2, this );
399
+
397
400
registerMethod (" getBacklightCapsV2" , &AVOutputTV::getBacklightCapsV2, this );
398
401
registerMethod (" getBrightnessCapsV2" , &AVOutputTV::getBrightnessCapsV2, this );
399
402
registerMethod (" getContrastCapsV2" , &AVOutputTV::getContrastCapsV2, this );
@@ -509,6 +512,73 @@ namespace Plugin {
509
512
510
513
LOGINFO (" Exit\n " );
511
514
}
515
+ uint32_t AVOutputTV::getBacklightV2 (const JsonObject& parameters, JsonObject& response)
516
+ {
517
+ LOGINFO (" Entry: %s" , __FUNCTION__);
518
+ std::vector<tvConfigContext_t> validContexts = getValidContextsFromParameters (parameters);
519
+ if (validContexts.empty ()) {
520
+ LOGERR (" %s: No valid context found for the given parameters" , __FUNCTION__);
521
+ returnResponse (false );
522
+ }
523
+ // Only one valid context is expected in this simplified version
524
+ const auto & ctx = validContexts.front ();
525
+ paramIndex_t indexInfo {
526
+ .sourceIndex = static_cast <uint8_t >(ctx.videoSrcType ),
527
+ .pqmodeIndex = static_cast <uint8_t >(ctx.pq_mode ),
528
+ .formatIndex = static_cast <uint8_t >(ctx.videoFormatType )
529
+ };
530
+ int backlight = 0 ;
531
+ int err = getLocalparam (" Backlight" , indexInfo, backlight, PQ_PARAM_BACKLIGHT);
532
+ if (err == tvERROR_NONE) {
533
+ response[" backlight" ] = backlight;
534
+ LOGINFO (" Exit: Backlight Value: %d" , backlight);
535
+ returnResponse (true );
536
+ } else {
537
+ LOGERR (" Failed to get backlight. Error code: %d" , err);
538
+ returnResponse (false );
539
+ }
540
+ }
541
+ uint32_t AVOutputTV::setBacklightV2 (const JsonObject& parameters, JsonObject& response)
542
+ {
543
+ LOGINFO (" Entry\n " );
544
+ std::string value;
545
+ int backlight = 0 ;
546
+ #define TODO_MOVE_TO_INIT 1
547
+ #if TODO_MOVE_TO_INIT
548
+ // Retrieve Backlight Caps (Initialization)
549
+ LOGINFO (" Calling GetBacklightCaps\n " );
550
+ tvError_t error = GetBacklightCaps (&m_maxBacklight, &m_backlightCaps);
551
+ if (error == tvERROR_NONE) {
552
+ LOGINFO (" Backlight capabilities retrieved successfully. Max: %d\n " , m_maxBacklight);
553
+ } else {
554
+ LOGERR (" Failed to retrieve backlight capabilities. Error code: %d\n " , error);
555
+ returnResponse (false );
556
+ }
557
+ #endif
558
+ // Input parameter validation
559
+ LOGINFO (" InputParm validation\n " );
560
+ value = parameters.HasLabel (" backlight" ) ? parameters[" backlight" ].String () : " " ;
561
+ returnIfParamNotFound (parameters," backlight" );
562
+ try {
563
+ backlight = std::stoi (value);
564
+ } catch (const std::exception& e) {
565
+ LOGERR (" Invalid backlight value: %s. Exception: %s" , value.c_str (), e.what ());
566
+ returnResponse (false );
567
+ }
568
+ if (backlight < 0 || backlight > m_maxBacklight) {
569
+ LOGERR (" Input value %d is out of range (0 - %d)" , backlight, m_maxBacklight);
570
+ returnResponse (false );
571
+ }
572
+ // Update the TV parameter
573
+ LOGINFO (" Updating AVOutputTVParamV2\n " );
574
+ int retval = updateAVoutputTVParamV2 (" set" , " Backlight" , parameters, PQ_PARAM_BACKLIGHT, backlight);
575
+ if (retval != 0 ) {
576
+ LOGERR (" Failed to Save Backlight to ssm_data. retval: %d\n " , retval);
577
+ returnResponse (false );
578
+ }
579
+ LOGINFO (" Exit: setBacklight successful to value: %d\n " , backlight);
580
+ returnResponse (true );
581
+ }
512
582
513
583
uint32_t AVOutputTV::getCapsV2 (
514
584
const std::function<tvError_t( tvContextCaps_t**,int *, std::vector<std::string>&)>& getCapsFunc,
@@ -776,7 +846,7 @@ namespace Plugin {
776
846
case tvDisplayMode_4x3: optionsArray.Add (" TV 4X3 PILLARBOX" ); break ;
777
847
case tvDisplayMode_ZOOM: optionsArray.Add (" TV ZOOM" ); break ;
778
848
case tvDisplayMode_FULL: optionsArray.Add (" TV FULL" ); break ;
779
- default : break ;
849
+ default : break ;
780
850
}
781
851
}
782
852
rangeInfo[" options" ] = optionsArray;
@@ -3123,8 +3193,8 @@ namespace Plugin {
3123
3193
}
3124
3194
3125
3195
if (current_source == sourceType && current_format == formatType) {
3126
-
3127
- tvError_t ret = SetTVPictureMode (param. value ) ;
3196
+ LOGINFO ( " PQ mode =%s \n " ,value. c_str ());
3197
+ ret = tvERROR_NONE ;
3128
3198
if (ret != tvERROR_NONE) {
3129
3199
LOGWARN (" Picture Mode set failed: %s\n " ,getErrorString (ret).c_str ());
3130
3200
returnResponse (false );
0 commit comments