Difference between revisions of "User:Bulek"

From LinuxMCE
Jump to: navigation, search
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 
+
Temporary copy of LG LCD TV template (based on existing LG_42LB5D template)
Have moved working copy of Marantz Multiroom template to Marantz 5600 page in wiki. This is only a copy... Please go there for all info...
+
 
+
  
 
==== 'Add Ruby snippets to commands'====  
 
==== 'Add Ruby snippets to commands'====  
  
I've created new IR/Codeset group called "Marantz SR Multiroom RS232", although I'm not sure how to handle it. Have also edited coresponding Ruby snippets for each command. Basically those are just simple strings that get send on rs232 to take proper action on device according to received command from LinuxMCE... There are also a lot of other functions that help :
 
- determining for which child zone command is targeted
 
- to "normalize" volume levels between Marantz's internal dB units and range of 0-100
 
  
  
 
Simpler commands from Ruby part of template :
 
Simpler commands from Ruby part of template :
 
<pre><nowiki>
 
<pre><nowiki>
 +
Power
 +
#193 Off
 +
log('Sending OFF Command') <$"ka 01 00\r"$>
  
  Power
+
#192 On
#193 Off
+
log('Sending ON Command') <$"ka 01 01\r"$>
#SendMultiZoneCommand(cmd, ["@PWR:1", "@MSP:1", "@MAM:2"]) SendMultiZonePowerOffCommand(cmd, ["@AMT:2", "@MSP:1", "@MAM:2"])
+
+
#192 On
+
#SendMultiZoneCommand(cmd, ["@PWR:2", "@MSP:2", "@MAM:1"]) SendMultiZonePowerOnCommand(cmd, ["@AMT:1", "@MSP:2", "@MAM:1"])
+
+
#194 Toggle Power
+
+
+
Inputs
+
#169 AM
+
SendMultiZoneCommand(cmd, ["@SRC:H", "@MSC:H", "@MSC:H"])
+
+
#164 Aux
+
SendMultiZoneCommand(cmd, ["@SRC:9", "@MSC:9", "@MSC:9"])
+
+
#172 Aux 2
+
SendMultiZoneCommand(cmd, ["@SRC:A", "@MSC:A", "@MSC:A"])
+
+
#162 CD
+
SendMultiZoneCommand(cmd, ["@SRC:C", "@MSC:C", "@MSC:C"])
+
+
#420 CDR
+
SendMultiZoneCommand(cmd, ["@SRC:D", "@MSC:D", "@MSC:D"])
+
+
#178 DSS
+
SendMultiZoneCommand(cmd, ["@SRC:4", "@MSC:4", "@MSC:4"])
+
+
#165 DVD
+
SendMultiZoneCommand(cmd, ["@SRC:2", "@MSC:2", "@MSC:2"])
+
+
#170 FM
+
SendMultiZoneCommand(cmd, ["@SRC:G", "@MSC:G", "@MSC:G"])
+
+
#160 Tape / Tape 1
+
SendMultiZoneCommand(cmd, ["@SRC:E", "@MSC:E", "@MSC:E"])
+
+
#166 Tuner
+
SendMultiZoneCommand(cmd, ["@SRC:F", "@MSC:F", "@MSC:F"])
+
+
#161 TV
+
SendMultiZoneCommand(cmd, ["@SRC:1", "@MSC:1", "@MSC:1"])
+
+
#282 VCR-1
+
SendMultiZoneCommand(cmd, ["@SRC:3", "@MSC:3", "@MSC:3"])
+
+
DSP Modes (Audio)
+
#891 All Ch Stereo
+
#<$"@SUR:0H\r"$> SendIrCommand("@SUR:0H")
+
+
+
#97 Mute
+
SendMultiZoneCommand(cmd, ["@AMT:0", "@MSM:0", "@MAM:0"])
+
+
+
#90 Vol Down
+
SendMultiZoneCommand(cmd, ["@VOL:2", "@MSV:2", "@MVL:2"])
+
+
#89 Vol Up
+
SendMultiZoneCommand(cmd, ["@VOL:1", "@MSV:1", "@MVL:1"])
+
+
Speed Ctrl
+
#125 Scan Back/Rewind
+
</nowiki></pre>
+
 
+
 
+
More important parts with more Ruby code :
+
 
+
<pre><nowiki>
+
###########################################################3 Internal Methods
+
# To do list :
+
# - parsing of input messages (inputs,mute,volume,power)
+
# - handling of tuner (with live/TV child device)
+
# - to properly send events and set device current volume data
+
 
+
def DecodeReceivedInfo_candidate(response)
+
# Examples: Mute/On/Off: @AMT:1,@MSP:2,@MAM:2,  Volume: @VOL:-25,@MSV:-56,@MVL:-56  Inputs:@MSC:2E,@SRC:22,@SRC:2E
+
  log("DecodeReceivedInfo1: " + response + "\n");
+
  avrcommand = response[1..3]
+
  avrvalue = response[5]
+
  log("DecodeReceivedInfo2: " + response + " -> Command:"+ avrcommand.to_s + " Value: " + avrvalue.to_s + "\n");
+
 
+
  case avrcommand
+
# Input Source changed
+
    when 'SRC'
+
    log("Main Zone Input Changed to "+ avrvalue.to_s+ "\n");
+
    input_param=0
+
   
+
    case avrvalue
+
    when '1'
+
    log('Main Zone Input Changed to #161: TV')
+
    input_param=161
+
    temp_state="Input: TV"
+
    when '2'
+
    log('Main Zone Input Changed to #165: DVD')
+
    input_param=165
+
    temp_state="Input: TV"
+
    when '3'
+
    log('Main Zone Input Changed to #282: VCR-1')
+
    input_param=282
+
    temp_state="Input: TV"
+
    when '4'
+
    log('Main Zone Input Changed to #178: DSS')
+
    input_param=178
+
    temp_state="Input: TV"
+
    when '9'
+
    log('Main Zone Input Changed to #164: AUX')
+
    input_param=164
+
    temp_state="Input: TV"
+
    when 'A'
+
    log('Main Zone Input Changed to #171: AUX2')
+
    input_param=171
+
    temp_state="Input: TV"
+
    when 'C'
+
    log('Main Zone Input Changed to #162: CD')
+
    input_param=162
+
    temp_state="Input: TV"
+
    when 'D'
+
    log('Main Zone Input Changed to #420: CDR')
+
    input_param=420
+
    temp_state="Input: TV"
+
    when 'E'
+
    log('Main Zone Input Changed to #160: TAPE')
+
    input_param=160
+
    temp_state="Input: TV"
+
    when 'F'
+
    log('Main Zone Input Changed to #166: TUNER')
+
    input_param=166
+
    temp_state="Input: TV"
+
    when 'G'
+
    log('Main Zone Input Changed to #170: FM')
+
    input_param=160
+
    temp_state="Input: TV"
+
    when 'H'
+
    log('Main Zone Input Changed to #169: AM')
+
    input_param=169
+
    temp_state="Input: TV"
+
    end
+
#    device_id = device_.mapPortChannel_Device_.[0.to_s]
+
log("======= Determiming device ID for Zone 0 : " + device_id.to_s + "\n")
+
device_.mapPortChannel_Device_.each do |key, value|
+
log(key.to_s + " => " + value.to_s+ "\n")
+
end
+
    cmd = Command.new(device_id, -1001, 1, 2, 49);
+
    cmd.params_[41] = input_param.to_s();
+
    SendCommand(cmd);
+
    SetDeviceDataInDB( device_id, 200, temp_state ) # 200 = DEVICEDATA_State_CONST
+
 
+
    when 'VOL'
+
    volume = response[5..-1].to_i();
+
    volume_norm = NormalizeVolume_MainZone(volume)
+
    log("Main Zone Volume Changed: " + volume.to_s + " Normalized Value: " + volume_norm.to_s + "\n");
+
#    device_id = device_.mapPortChannel_Device_.[0.to_s]
+
log("======= Determiming device ID for Zone 0 : " + device_id.to_s + "\n")
+
device_.mapPortChannel_Device_.each do |key, value|
+
log(key.to_s + " => " + value.to_s+ "\n")
+
end
+
    SetDeviceDataInDB( device_id, 158, volume_norm ) # 158 = DEVICEDATA_Volume_Level_CONST
+
    cmd = Command.new(device_id, -1001, 1, 2, 71);
+
    cmd.params_[30] = volume_norm
+
    SendCommand(cmd);
+
    when 'PWR'
+
    case avrvalue
+
    when '1'
+
    log("Device Power Changed: OFF");
+
    cmd.params_[10] = "0";
+
    $DevicePower = 0
+
    when '2'
+
    log("Device Power Changed: ON");
+
    cmd.params_[10] = "1";
+
    $DevicePower = 1
+
    end
+
    cmd = Command.new(device_.devid_, -1001, 1, 2, 48);
+
    SendCommand(cmd);
+
    else
+
    log("Yet not implemented: Handler for command: " + avrcommand.to_s)
+
    end
+
   
+
end   
+
 
+
 
+
def DecodeReceivedInfo(response)
+
# Examples: Mute/On/Off: @AMT:1,@MSP:2,@MAM:2,  Volume: @VOL:-25,@MSV:-56,@MVL:-56  Inputs:@MSC:2E,@SRC:22,@SRC:2E
+
  log("DecodeReceivedInfo1: " + response + "\n");
+
  avrcommand = response[1..3]
+
  avrvalue = response[5]
+
  log("DecodeReceivedInfo2: " + response + " -> Command:"+ avrcommand.to_s + " Value: " + avrvalue.to_s + "\n");
+
 
+
  case avrcommand
+
    when 'VOL'
+
    volume = response[5..-1].to_i();
+
    volume_norm = NormalizeVolume_MainZone(volume)
+
    log("Main Zone Volume Changed: " + volume.to_s + " Normalized Value: " + volume_norm.to_s + "\n");
+
#    device_id = device_.mapPortChannel_Device_.[0.to_s]
+
log("======= Determiming device ID for Zone 0 : " + device_id.to_s + "\n")
+
device_.mapPortChannel_Device_.each do |key, value|
+
log(key.to_s + " => " + value.to_s+ "\n")
+
if (key.to_s == "0")
+
device_id = value
+
end
+
end
+
    SetDeviceDataInDB( device_id, 158, volume_norm ) # 158 = DEVICEDATA_Volume_Level_CONST
+
    cmd = Command.new(device_id, -1001, 1, 2, 71);
+
    cmd.params_[30] = volume_norm
+
    SendCommand(cmd);
+
    when 'PWR'
+
    case avrvalue
+
    when '1'
+
    log("Device Power Changed: OFF")
+
    cmd.params_[10] = "0";
+
    $DevicePower = 0
+
    when '2'
+
    log("Device Power Changed: ON");
+
    cmd.params_[10] = "1";
+
    $DevicePower = 1
+
    end
+
    cmd = Command.new(device_.devid_, -1001, 1, 2, 48);
+
    SendCommand(cmd);
+
    else
+
    log("Yet not implemented: Handler for command: " + avrcommand.to_s)
+
    end
+
   
+
end   
+
 
+
 
+
def ReceiveReportCommand()
+
@buff = conn_.RecvDelimited("\r", 1000)
+
log("Cmd response from Marantz: " + @buff + "\n")
+
log("Calling DecodeReceivedInfo: " + @buff + "\n")
+
temp_resp=@buff;
+
DecodeReceivedInfo(temp_resp)
+
log("End of DecodeReceivedInfo: " + temp_resp + "\n")
+
end
+
 
+
def SendIrCommand(command)
+
        log("SendIrCommand: " + command + "\n")
+
conn_.Send(command+ "\r")
+
        log("Sending Command: " + command + "\n")
+
ReceiveReportCommand()
+
end
+
 
+
def log(line)
+
#          $log = File.open("/var/log/pluto/" + device_.devid_.to_s + "_Generic_Serial_Device.log", "a")
+
  $log = File.open("/var/log/pluto/Marantz_SR5600.log", "a")
+
  logTime = Time.now
+
  timeStr = logTime.strftime("%d-%m-%Y  %H:%M:%S  ")
+
 
+
  $log.puts timeStr + "(***):" + line.to_s
+
          $log.close
+
end
+
 
+
def SendMultiZoneCommand(cmd, commandsArray, commandParam="")
+
        log("Got Command with ID: " + cmd.id_.to_s + " from: " + cmd.devidfrom_.to_s + " to: " + cmd.devidto_.to_s + "\n")
+
zone = GetZone(cmd.devidto_)
+
if( zone >= 0 and zone < commandsArray.size )
+
        zone_desc=device_.childdevices_[cmd.devidto_].devdata_[186]
+
log("Determine zone for command : " + zone_desc + "[" + zone.to_s + "]\n")
+
SendIrCommand(commandsArray[zone] + commandParam.to_s)
+
else
+
log("SendMultiZoneCommand: invalid zone " + zone.to_s + ". Send commands only to valid child devices!!!")
+
end
+
end
+
 
+
 
+
def SendMultiZonePowerOnCommand(cmd, commandsArray, commandParam="")
+
#It will Unmute Zone first and then see also global power should be turned on...
+
        log("Got Power On Command with ID: " + cmd.id_.to_s + " from: " + cmd.devidfrom_.to_s + " to: " + cmd.devidto_.to_s + "\n")
+
zone = GetZone(cmd.devidto_)
+
if( zone >= 0 and zone < commandsArray.size )
+
        zone_desc=device_.childdevices_[cmd.devidto_].devdata_[186]
+
log("Determine zone for command : " + zone_desc + "[" + zone.to_s + "]\n")
+
SendIrCommand(commandsArray[zone] + commandParam.to_s)
+
$ZoneStatus[zone.to_s] = 'ON'
+
log("*** Setting zone : " + zone_desc + "[" + zone.to_s + "] to ON\n")
+
ShowZones()
+
if ($DevicePower == 0)
+
SendIrCommand("@PWR:2")
+
end
+
$DevicePower = 1
+
elsif (zone == -1)
+
if ($DevicePower == 0)
+
SendIrCommand("@PWR:2")
+
end
+
$DevicePower = 1
+
log("####### Powering device On\n")
+
else
+
log("SendMultiZonePowerOnCommand: invalid zone " + zone.to_s + ". Send commands only to valid child devices!!!")
+
end
+
end
+
 
+
def SendMultiZonePowerOffCommand(cmd, commandsArray, commandParam="")
+
#It will Mute Zone first and then see if also global power can be turned off...
+
        log("Got Power Off Command with ID: " + cmd.id_.to_s + " from: " + cmd.devidfrom_.to_s + " to: " + cmd.devidto_.to_s + "\n")
+
zone = GetZone(cmd.devidto_)
+
if( zone >= 0 and zone < commandsArray.size )
+
        zone_desc=device_.childdevices_[cmd.devidto_].devdata_[186]
+
log("Determine zone for command : " + zone_desc + "[" + zone.to_s + "]\n")
+
SendIrCommand(commandsArray[zone] + commandParam.to_s)
+
$ZoneStatus[zone.to_s] = 'OFF'
+
log("*** Setting zone : " + zone_desc + "[" + zone.to_s + "] to OFF\n")
+
ShowZones()
+
if (($ZoneStatus["0"] == 'OFF') and ($ZoneStatus["1"] == 'OFF') and ($ZoneStatus["2"] == 'OFF'))
+
SendIrCommand("@PWR:1")
+
$DevicePower = 0
+
log("####### All zones are muted - device is powered Off\n")
+
end
+
else
+
log("SendMultiZonePowerOffCommand: invalid zone " + zone.to_s + ". Send commands only to valid child devices!!!")
+
end
+
end
+
 
+
 
+
def GetZone(deviceDestination)
+
if( device_.mapDevice_PortChannel_.has_key?(deviceDestination) and
+
device_.mapDevice_PortChannel_[deviceDestination] != nil and
+
!device_.mapDevice_PortChannel_[deviceDestination].empty? )
+
return device_.mapDevice_PortChannel_[deviceDestination].to_i
+
end
+
+
return -1
+
end
+
 
+
def ShowZonesDebug()
+
log("####### Dev 2 PortChanel\n")
+
device_.mapDevice_PortChannel_.each do |key, value|
+
log(key.to_s + " => " + value.to_s + "\n")
+
end
+
+
log("======= PortChanel 2 Dev\n")
+
device_.mapPortChannel_Device_.each do |key, value|
+
log(key.to_s + " => " + value.to_s+ "\n")
+
end
+
end
+
 
+
 
+
 
+
def ShowZonesInitialVolumes()
+
log("####### Show Initial Volume Levels for zones\n")
+
device_.mapDevice_PortChannel_.each do |key, value|
+
        volume = device_.childdevices_[key].devdata_[208]
+
log("Zone " + value.to_s + " => " + volume.to_s + "\n")
+
SetVolumeInZone(volume,value)
+
end
+
+
end
+
 
+
 
+
def ShowZones()
+
temp = "####### Zones Status : "
+
device_.mapDevice_PortChannel_.each do |key, value|
+
temp = temp + " | Zone " + value.to_s + " => " + $ZoneStatus[value]
+
end
+
temp = temp + "\n"
+
log(temp)
+
end
+
 
+
 
+
def SetZones(state)
+
log("####### Setting all zones to " + state + "\n")
+
device_.mapDevice_PortChannel_.each do |key, value|
+
$ZoneStatus[value] = state
+
log("Zone " + value.to_s + " => " + state + "\n")
+
end
+
end
+
 
+
def InitZones()
+
log("####### Initializing all zones to OFF\n")
+
device_.mapDevice_PortChannel_.each do |key, value|
+
$ZoneStatus[value] = 'OFF'
+
log("Zone " + value.to_s + " => " + $ZoneStatus[value] + "\n")
+
end
+
log("####### Print $ZoneStatus Hash:\n")
+
$ZoneStatus.each do |key, value|
+
log("Zone " + key.to_s + " => " + value.to_s + "\n")
+
end
+
end
+
 
+
def SetVolumeInZone(level,zone)
+
# Sets Normalized Volume Level (0..100) in certain zone
+
log("SetVolumeInZone: volume: " + level.to_s + " => Zone: " + zone + "\n")
+
  
if ( zone == "0")
+
InputsInput commands not implemented: Antenna, Tuner - Digital (Click to add)
log("SetVolumeInZone0: volume: " + level.to_s + " => Zone: " + zone + "\n")
+
#316 AV 1
      new_level = DeNormalizeVolume_MainZone(level.to_i)
+
log('Switching Input to AV1') <$"kb 01 02\r"$>
log("SetVolumeInZone00: volume: " + level.to_s + " => Zone: " + zone + "\n")
+
      temp_str="@VOL:0"+new_level.to_s;
+
      log("SetVolumeInZone: About to send command :" + temp_str + "\n")
+
      SendIrCommand(temp_str)
+
elsif ( zone == "1")
+
log("SetVolumeInZone1: volume: " + level.to_s + " => Zone: " + zone + "\n")
+
      new_level = DeNormalizeVolume_OtherZone(level.to_i)
+
log("SetVolumeInZone11: volume: " + level.to_s + " => Zone: " + zone + "\n")
+
      temp_str="@MSV:0"+new_level.to_s;
+
      log("SetVolumeInZone: About to send command :" + temp_str + "\n")
+
      SendIrCommand(temp_str)
+
elsif ( zone == "2")
+
log("SetVolumeInZone2: volume: " + level.to_s + " => Zone: " + zone + "\n")
+
      new_level = DeNormalizeVolume_OtherZone(level.to_i)
+
# log("SetVolumeInZone22: volume: " + level + " => Zone: " + zone + "\n")
+
      temp_str="@MVL:0"+new_level.to_s;
+
      log("SetVolumeInZone: About to send command :" + temp_str + "\n")
+
      SendIrCommand(temp_str)
+
else
+
      log("SetVolumeInZone: invalid zone " + zone.to_s + ". Send commands only to valid child devices!!!")
+
end
+
log("SetVolumeInZone End: volume: " + level.to_s + " => Zone: " + zone + "\n")
+
  
end
+
#317 AV 2
 +
log('Switching Input to AV2') <$"kb 01 03\r"$>
  
 +
#712 Component 1
 +
log('Switching Input to Component 1') <$"kb 01 04\r"$>
  
def NormalizeVolume_MainZone(level)
+
#361 HDMI
# Normalizes Marantz Volume Level (-99..+10) to 0-100 boundaries for Main Zone
+
log('Switching Input to HDMI 1') <$"kb 01 07\r"$>
temp = (level+100)/110.0*100.0
+
temp=temp.round
+
        log("Normalizing Main Zone Volume Level from : " + level.to_s + " to " + temp.to_s + "\n")
+
return temp
+
end
+
  
def NormalizeVolume_OtherZone(level)
+
#154 RGB
# Normalizes Marantz Volume Level to 0-100 boundaries for Second Zone (-90..0)
+
log('Switching Input to RGB/PC') <$"kb 01 06\r"$>
temp = ((level+90.0)/90.0)*100.0
+
temp=temp.round
+
        log("Normalizing Other Zone Volume Level from : " + level.to_s + " to " + temp.to_s + "\n")
+
return temp
+
end
+
  
def DeNormalizeVolume_MainZone(level)
+
Aspect Ratios
# DeNormalizes volume level in 0-100 boundaries to Marantz Volume Level (-99..+10) for Main Zone
+
#879 16:9
temp = (level/100.0)*110.0-99
+
log('Aspect Ratio 16:9') <$"kc 01 02\r"$>
temp=temp.round
+
        log("DeNormalizing Main Zone Volume Level from : " + level.to_s + " to " + temp.to_s + "\n")
+
return temp
+
end
+
  
def DeNormalizeVolume_OtherZone(level)
+
#877 4:3
# DeNormalizes volume level in 0-100 boundaries to Marantz Volume Level (-90..0) for Other Zone
+
log('Aspect Ratio 4:3') <$"kc 01 01\r"$>
temp = ((level/100.0)*90.0)-90.0
+
temp=temp.round
+
        log("DeNormalizing Other Zone Volume Level from : " + level.to_s + " to " + temp.to_s + "\n")
+
return temp
+
end
+
  
 +
DSP Modes
 +
#116 DSP Mode
 +
  
 +
General
 +
#190 Enter/Go
 +
log('Sending Enter/Go Command') <$"mc 01 44\r"$>
  
 +
Internal
 +
#373 Private Method Listing
 +
def log(line) $log = File.open("/var/log/pluto/" + device_.devid_.to_s + "_Generic_Serial_Device.log", "a") $log.puts "(***):" + line.to_s $log.close end
  
 +
#351 Process IDLE
 +
  
 +
#350 Process Incoming Data
 +
buff = '' while(true) buff=conn_.Recv(30,200) if(buff.length() == 0) log('Nothing Received') break end log('Received: ' + Regexp.escape(buff.to_s)) if !buff.index("OK").nil? log(Regexp.escape(buff.to_s) + ': Command Processed Successfully') elsif !buff.index("NG").nil? log(Regexp.escape(buff.to_s) +': Command Processed Unsuccessfully') end end
  
 +
#355 Process Initialize
 +
for iRetry in 0...4 print "Initializing unit\n" conn_.Send("ke 01 01\r") # Send UnMute Command buf = conn_.Recv(30,200) # Expected Return # ke 01 01\r\ne 00 OK01x\r\n if !buf.nil? && !buf.index("OK").nil? print "Initialized ok\n" print "Setting volume to 30%\n" cmd_313(15) SetDeviceDataInDB( device_.devid_, 158, "15" ) # 158 = DEVICEDATA_Volume_Level_CONST return end print "Failed to initialize. Wait 1 secs and try again\n" sleep(1) end #DisableDevice( device_.devid_, true ) #print "The device would not respond. Disabling it.\n"
  
 +
#384 Process Receive Command For Child
 +
  
 +
#356 Process Release
 +
  
 +
Misc
 +
#587 Preset/Prog/Freq
 +
  
 +
#676 Video Mute
 +
log('Sending Video Mute Command') <$"kd 01 00\r"$>
  
 +
#683 Zoom
 +
log('Aspect Ratio 16:9') <$"kc 01 05\r"$>
  
###########################################################Process Incoming Data
+
Numbers
@buff = conn_.RecvDelimited("\r", 1000)
+
#204 0
log("Info from Marantz: " + @buff + "\n")
+
log('Sending 0 ') <$"mc 01 10\r"$>
temp_line=@buff
+
log("1Calling DecodeReceivedInfo: " + temp_line + "\n")
+
DecodeReceivedInfo(temp_line)
+
log("1End of DecodeReceivedInfo: " + temp_line+ "\n")
+
  
 +
#205 1
 +
log('Sending 1 ') <$"mc 01 11\r"$>
  
 +
#206 2
 +
log('Sending 2 ') <$"mc 01 12r"$>
  
###########################################################Set Tuner Frequency
+
#207 3
identifier = cmd.params_[216]
+
log('Sending 3 ') <$"mc 01 13\r"$>
# Main Frequency "TFQ:0xxxxx" from 08700 till + 10800
+
# Multiroom Frequency “MTF:0xxxxx“  from 08700 till + 10800
+
  
# switch to tuner mode first
+
#208 4
SendMultiZoneCommand(cmd, ["@SRC:G", "@MSC:G", "@MSC:G"])
+
log('Sending 4 ') <$"mc 01 14\r"$>
  
# tune to desired frequency
+
#209 5
SendMultiZoneCommand(cmd, ["@TFQ:0"+identifier, "@MTF:0"+identifier, "@MTF:0"+identifier])
+
log('Sending 5 ') <$"mc 01 15\r"$>
log("Sending Marantz : Setting tuner frequency to "+identifier+"\n")
+
  
 +
#210 6
 +
log('Sending 6 ') <$"mc 01 16\r"$>
  
###########################################################313 Set Volume command
+
#211 7
level = cmd.params_[76]
+
log('Sending 7 ') <$"mc 01 17\r"$>
# Main volume “VOL:0xxx”  from - 99 till + 18
+
# Multiroom Speakers "MSV:0xxx"  from - 99 till + 0
+
# Multiroom Speakers “MVL:0xxx”  from - 99 till + 0
+
zone = GetZone(cmd.devidto_)
+
log("313:Set Volume Command: Got Cmd with ID: " + cmd.id_.to_s + " from: " + cmd.devidfrom_.to_s + " to: " + cmd.devidto_.to_s + " | Zone : " + zone.to_s + "\n")
+
if ( zone == 0)
+
      new_level = DeNormalizeVolume_MainZone(level.to_i)
+
      temp_str = "@VOL:0"+new_level.to_s
+
      log("SetVolumeCommand: About to send command :" + temp_str + "\n")
+
      SendIrCommand(temp_str)
+
elsif ( zone == 1)
+
      new_level = DeNormalizeVolume_OtherZone(level.to_i)
+
      temp_str = "@MSV:0"+new_level.to_s
+
      SendIrCommand(temp_str)
+
elsif ( zone == 2)
+
      new_level = DeNormalizeVolume_OtherZone(level.to_i)
+
      temp_str = "@MVL:0"+new_level.to_s
+
      log("SetVolumeCommand: About to send command :" + temp_str + "\n")
+
      SendIrCommand(temp_str)
+
  
else
+
#212 8
      log("SetVolumeCommand: invalid zone " + zone.to_s + ":" + zone.to_i + ". Send commands only to valid child devices!!!\n")
+
log('Sending 8 ') <$"mc 01 18\r"$>
end
+
  
 +
#213 9
 +
log('Sending 9 ') <$"mc 01 19\r"$>
  
 +
On-Screen Menu Navig
 +
#86 Menu (Show Menu)
 +
log('Sending Menu Command') <$"mc 01 43\r"$>
  
 +
#201 Move Down
 +
log('Menu Down') <$"mc 01 41\r"$>
  
 +
#202 Move Left
 +
log('Menu Left') <$"mc 01 07\r"$>
  
 +
#203 Move Right
 +
log('Menu Right') <$"mc 01 06\r"$>
  
 +
#200 Move Up
 +
log('Menu Up') <$"mc 01 40\r"$>
  
###########################################################Process Initialize
+
Picture Control
$DevicePower = 1
+
#224 Brightness Down
SendIrCommand("@PWR:2")
+
log("Initializing Marantz GSD Device\n")
+
  
 +
#223 Brightness Up
 +
  
 +
#221 Contrast Down
 +
  
SendIrCommand("@AST:F") # max level of feedback
+
#220 Contrast Up
 +
  
SendIrCommand("@MPW:2") # multi room always on
+
Simple Control
 +
#64 Skip Back - Channel/Track Lower
 +
  
SendIrCommand("@MSP:1") # turn multi room speakers off by default
+
#63 Skip Fwd - Channel/Track Greater
 +
  
SendIrCommand("@MAM:2") # mute multi room line out by default
+
Sound & Volume
 +
#97 Mute
 +
if(@mute) <$"ke 01 00\r"$> else <$"ke 01 01\r"$> end @mute=!@mute
  
SendIrCommand("@VOL:0-20") # default main volume -20
+
#313 Set Volume
SendIrCommand("@MSV:0-60") # default multi speaker volume
+
@volume=level.to_i() ilevel = @volume.to_i log( 'setting volume to '+ ilevel.to_s) log('Sending the Following Command: kf 01 '+ilevel.to_s(16)+'\r') <$"kf 01 "+ilevel.to_s(16)+"\r"$> SetDeviceDataInDB( device_.devid_, 158, ilevel .to_s) # 158DEVICEDATA_Volume_Level_CONST # "volume and corresponding device data set\n"
SendIrCommand("@MVL:0-60") # default multi room line out volume
+
  
$ZoneStatus = Hash.new()
+
#90 Vol Down
 +
log('lowering volume from ' + @volume.to_s) cmd_313(@volume-1)
  
InitZones()
+
#89 Vol Up
ShowZonesInitialVolumes()
+
log('Increasing volume from ' + @volume.to_s) cmd_313(@volume+1)
  
  
#$DevicePower = 0
 
#SendIrCommand("@PWR:1")
 
log("Initialization of Marantz GSD Device finished - Device is powered off!!!!\n")
 
 
</nowiki></pre>
 
</nowiki></pre>

Latest revision as of 22:34, 29 June 2008

Temporary copy of LG LCD TV template (based on existing LG_42LB5D template)

'Add Ruby snippets to commands'

Simpler commands from Ruby part of template :

 Power
#193 Off
	log('Sending OFF Command') <$"ka 01 00\r"$> 	

#192 On
	log('Sending ON Command') <$"ka 01 01\r"$> 	

InputsInput commands not implemented: Antenna, Tuner - Digital (Click to add)
#316 AV 1
	log('Switching Input to AV1') <$"kb 01 02\r"$> 	

#317 AV 2
	log('Switching Input to AV2') <$"kb 01 03\r"$> 	

#712 Component 1
	log('Switching Input to Component 1') <$"kb 01 04\r"$> 	

#361 HDMI
	log('Switching Input to HDMI 1') <$"kb 01 07\r"$> 	

#154 RGB
	log('Switching Input to RGB/PC') <$"kb 01 06\r"$> 	

Aspect Ratios
#879 16:9
	log('Aspect Ratio 16:9') <$"kc 01 02\r"$> 	

#877 4:3
	log('Aspect Ratio 4:3') <$"kc 01 01\r"$> 	

DSP Modes
#116 DSP Mode
		

General
#190 Enter/Go
	log('Sending Enter/Go Command') <$"mc 01 44\r"$> 	

Internal
#373 Private Method Listing
	def log(line) $log = File.open("/var/log/pluto/" + device_.devid_.to_s + "_Generic_Serial_Device.log", "a") $log.puts "(***):" + line.to_s $log.close end 	

#351 Process IDLE
		

#350 Process Incoming Data
	buff = '' while(true) buff=conn_.Recv(30,200) if(buff.length() == 0) log('Nothing Received') break end log('Received: ' + Regexp.escape(buff.to_s)) if !buff.index("OK").nil? log(Regexp.escape(buff.to_s) + ': Command Processed Successfully') elsif !buff.index("NG").nil? log(Regexp.escape(buff.to_s) +': Command Processed Unsuccessfully') end end 	

#355 Process Initialize
	for iRetry in 0...4 print "Initializing unit\n" conn_.Send("ke 01 01\r") # Send UnMute Command buf = conn_.Recv(30,200) # Expected Return # ke 01 01\r\ne 00 OK01x\r\n if !buf.nil? && !buf.index("OK").nil? print "Initialized ok\n" print "Setting volume to 30%\n" cmd_313(15) SetDeviceDataInDB( device_.devid_, 158, "15" ) # 158 = DEVICEDATA_Volume_Level_CONST return end print "Failed to initialize. Wait 1 secs and try again\n" sleep(1) end #DisableDevice( device_.devid_, true ) #print "The device would not respond. Disabling it.\n" 	

#384 Process Receive Command For Child
		

#356 Process Release
		

Misc
#587 Preset/Prog/Freq
		

#676 Video Mute
	log('Sending Video Mute Command') <$"kd 01 00\r"$> 	

#683 Zoom
	log('Aspect Ratio 16:9') <$"kc 01 05\r"$> 	

Numbers
#204 0
	log('Sending 0 ') <$"mc 01 10\r"$> 	

#205 1
	log('Sending 1 ') <$"mc 01 11\r"$> 	

#206 2
	log('Sending 2 ') <$"mc 01 12r"$> 	

#207 3
	log('Sending 3 ') <$"mc 01 13\r"$> 	

#208 4
	log('Sending 4 ') <$"mc 01 14\r"$> 	

#209 5
	log('Sending 5 ') <$"mc 01 15\r"$> 	

#210 6
	log('Sending 6 ') <$"mc 01 16\r"$> 	

#211 7
	log('Sending 7 ') <$"mc 01 17\r"$> 	

#212 8
	log('Sending 8 ') <$"mc 01 18\r"$> 	

#213 9
	log('Sending 9 ') <$"mc 01 19\r"$> 	

On-Screen Menu Navig
#86 Menu (Show Menu)
	log('Sending Menu Command') <$"mc 01 43\r"$> 	

#201 Move Down
	log('Menu Down') <$"mc 01 41\r"$> 	

#202 Move Left
	log('Menu Left') <$"mc 01 07\r"$> 	

#203 Move Right
	log('Menu Right') <$"mc 01 06\r"$> 	

#200 Move Up
	log('Menu Up') <$"mc 01 40\r"$> 	

Picture Control
#224 Brightness Down
		

#223 Brightness Up
		

#221 Contrast Down
		

#220 Contrast Up
		

Simple Control
#64 Skip Back - Channel/Track Lower
		

#63 Skip Fwd - Channel/Track Greater
		

Sound & Volume
#97 Mute
	if(@mute) <$"ke 01 00\r"$> else <$"ke 01 01\r"$> end @mute=!@mute 	

#313 Set Volume
	@volume=level.to_i() ilevel = @volume.to_i log( 'setting volume to '+ ilevel.to_s) log('Sending the Following Command: kf 01 '+ilevel.to_s(16)+'\r') <$"kf 01 "+ilevel.to_s(16)+"\r"$> SetDeviceDataInDB( device_.devid_, 158, ilevel .to_s) # 158DEVICEDATA_Volume_Level_CONST # "volume and corresponding device data set\n" 	

#90 Vol Down
	log('lowering volume from ' + @volume.to_s) cmd_313(@volume-1) 	

#89 Vol Up
	log('Increasing volume from ' + @volume.to_s) cmd_313(@volume+1)