/*@@var:*/
//
// SteeringWheel
//
// Implements buttons on the steering wheel.
//
variables
{
  byte gMuteStatus;
}
/*@@end*/

/*@@sysvarChange:SW::NextTrack:*/
// send CAN message if button is pressed on
// steering wheel
on sysvar SW::NextTrack
{
  message SetTrack msg;

  // perform action at button press only
  if(@this == 0)
    return;

  // send CAN message "Next Track"
  msg.TrackChangeCmd = 0;

  output(msg);
}
/*@@end*/

/*@@sysvarChange:SW::Pause:*/
// send CAN message if button is pressed on
// steering wheel
on sysvar SW::Pause
{
  message SetCDPlayer msg;

  // perform action at button press only
  if(@this == 0)
    return;

  // send CAN message "Pause"
  msg.CDPlayerCmd = SetCDPlayer.CDPlayerCmd::Pause;

  output(msg);
}
/*@@end*/

/*@@sysvarChange:SW::Play:*/
// send CAN message if button is pressed on
// steering wheel
on sysvar SW::Play
{
  message SetCDPlayer msg;

  // perform action at button press only
  if(@this == 0)
    return;

  // send CAN message "Play"
  msg.CDPlayerCmd = SetCDPlayer.CDPlayerCmd::Play;

  output(msg);
}
/*@@end*/

/*@@sysvarChange:SW::PreviousTrack:*/
// send CAN message if button is pressed on
// steering wheel
on sysvar SW::PreviousTrack
{
  message SetTrack msg;

  // perform action at button press only
  if(@this == 0)
    return;

  // send CAN message "Previous Track"
  msg.TrackChangeCmd = 1;

  output(msg);
}
/*@@end*/

/*@@sysvarChange:SW::Stop:*/
// send CAN message if button is pressed on
// steering wheel
on sysvar SW::Stop
{
  message SetCDPlayer msg;

  // perform action at button press only
  if(@this == 0)
    return;

  // send CAN message "Stop"
  msg.CDPlayerCmd = SetCDPlayer.CDPlayerCmd::Stop;

  output(msg);
}
/*@@end*/

/*@@sysvarChange:SW::VolumeDec:*/
// send CAN message if button is pressed on
// steering wheel
on sysvar SW::VolumeDec
{
  message SetAmplifier msg;

  // perform action at button press only
  if(@this == 0)
    return;

  // send CAN message "Decrement Volume"
  msg.AmplifierCmd = SetAmplifier.AmplifierCmd::VolumeDec;

  output(msg);
}
/*@@end*/

/*@@sysvarChange:SW::VolumeInc:*/
// send CAN message if button is pressed on
// steering wheel
on sysvar SW::VolumeInc
{
  message SetAmplifier msg;

  // perform action at button press only
  if(@this == 0)
    return;

  // send CAN message "Increment Volume"
  msg.AmplifierCmd = SetAmplifier.AmplifierCmd::VolumeInc;

  output(msg);
}
/*@@end*/

/*@@sysvarChange:SW::VolumeCtrl:*/
// send CAN message if button is pressed on
// steering wheel
on sysvar SW::VolumeCtrl
{
  message ChangeVolumeCtrl msg;

  // perform action at button press only
  if(@this == 0)
    return;

  output(msg);
}
/*@@end*/

/*@@sysvarChange:SW::Mute:*/
on sysvar SW::Mute
{
  message SetAmplifier msg;

  // perform action at button press only
  if(@this == 0)
    return;

  // send CAN message Mute/Demute
  if(gMuteStatus == 1)
    msg.AmplifierCmd = SetAmplifier.AmplifierCmd::Demute;
  else
    msg.AmplifierCmd = SetAmplifier.AmplifierCmd::Mute;

  output(msg);
}
/*@@end*/

/*@@msg:CAN1.CANbus::MuteStatus (0x110):*/
on message MuteStatus
{
  gMuteStatus = this.MuteStatus;
}
/*@@end*/

