All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.com.divpundir.mavlink.definitions.matrixpilot.SerialUdbExtraF20.kt Maven / Gradle / Ivy

package com.divpundir.mavlink.definitions.matrixpilot

import com.divpundir.mavlink.api.GeneratedMavField
import com.divpundir.mavlink.api.GeneratedMavMessage
import com.divpundir.mavlink.api.MavMessage
import com.divpundir.mavlink.serialization.MavDataDecoder
import com.divpundir.mavlink.serialization.MavDataEncoder
import com.divpundir.mavlink.serialization.encodeInt16
import com.divpundir.mavlink.serialization.encodeUInt8
import com.divpundir.mavlink.serialization.safeDecodeInt16
import com.divpundir.mavlink.serialization.safeDecodeUInt8
import com.divpundir.mavlink.serialization.truncateZeros
import kotlin.Byte
import kotlin.ByteArray
import kotlin.Int
import kotlin.Short
import kotlin.UByte
import kotlin.UInt
import kotlin.Unit

/**
 * Backwards compatible version of SERIAL_UDB_EXTRA F20 format
 *
 * @param sueNumberOfInputs SUE Number of Input Channels
 * @param sueTrimValueInput1 SUE UDB PWM Trim Value on Input 1
 * @param sueTrimValueInput2 SUE UDB PWM Trim Value on Input 2
 * @param sueTrimValueInput3 SUE UDB PWM Trim Value on Input 3
 * @param sueTrimValueInput4 SUE UDB PWM Trim Value on Input 4
 * @param sueTrimValueInput5 SUE UDB PWM Trim Value on Input 5
 * @param sueTrimValueInput6 SUE UDB PWM Trim Value on Input 6
 * @param sueTrimValueInput7 SUE UDB PWM Trim Value on Input 7
 * @param sueTrimValueInput8 SUE UDB PWM Trim Value on Input 8
 * @param sueTrimValueInput9 SUE UDB PWM Trim Value on Input 9
 * @param sueTrimValueInput10 SUE UDB PWM Trim Value on Input 10
 * @param sueTrimValueInput11 SUE UDB PWM Trim Value on Input 11
 * @param sueTrimValueInput12 SUE UDB PWM Trim Value on Input 12
 */
@GeneratedMavMessage(
  id = 186u,
  crcExtra = -112,
)
public data class SerialUdbExtraF20(
  /**
   * SUE Number of Input Channels
   */
  @GeneratedMavField(type = "uint8_t")
  public val sueNumberOfInputs: UByte = 0u,
  /**
   * SUE UDB PWM Trim Value on Input 1
   */
  @GeneratedMavField(type = "int16_t")
  public val sueTrimValueInput1: Short = 0,
  /**
   * SUE UDB PWM Trim Value on Input 2
   */
  @GeneratedMavField(type = "int16_t")
  public val sueTrimValueInput2: Short = 0,
  /**
   * SUE UDB PWM Trim Value on Input 3
   */
  @GeneratedMavField(type = "int16_t")
  public val sueTrimValueInput3: Short = 0,
  /**
   * SUE UDB PWM Trim Value on Input 4
   */
  @GeneratedMavField(type = "int16_t")
  public val sueTrimValueInput4: Short = 0,
  /**
   * SUE UDB PWM Trim Value on Input 5
   */
  @GeneratedMavField(type = "int16_t")
  public val sueTrimValueInput5: Short = 0,
  /**
   * SUE UDB PWM Trim Value on Input 6
   */
  @GeneratedMavField(type = "int16_t")
  public val sueTrimValueInput6: Short = 0,
  /**
   * SUE UDB PWM Trim Value on Input 7
   */
  @GeneratedMavField(type = "int16_t")
  public val sueTrimValueInput7: Short = 0,
  /**
   * SUE UDB PWM Trim Value on Input 8
   */
  @GeneratedMavField(type = "int16_t")
  public val sueTrimValueInput8: Short = 0,
  /**
   * SUE UDB PWM Trim Value on Input 9
   */
  @GeneratedMavField(type = "int16_t")
  public val sueTrimValueInput9: Short = 0,
  /**
   * SUE UDB PWM Trim Value on Input 10
   */
  @GeneratedMavField(type = "int16_t")
  public val sueTrimValueInput10: Short = 0,
  /**
   * SUE UDB PWM Trim Value on Input 11
   */
  @GeneratedMavField(type = "int16_t")
  public val sueTrimValueInput11: Short = 0,
  /**
   * SUE UDB PWM Trim Value on Input 12
   */
  @GeneratedMavField(type = "int16_t")
  public val sueTrimValueInput12: Short = 0,
) : MavMessage {
  override val instanceCompanion: MavMessage.MavCompanion = Companion

  override fun serializeV1(): ByteArray {
    val encoder = MavDataEncoder(SIZE_V1)
    encoder.encodeInt16(sueTrimValueInput1)
    encoder.encodeInt16(sueTrimValueInput2)
    encoder.encodeInt16(sueTrimValueInput3)
    encoder.encodeInt16(sueTrimValueInput4)
    encoder.encodeInt16(sueTrimValueInput5)
    encoder.encodeInt16(sueTrimValueInput6)
    encoder.encodeInt16(sueTrimValueInput7)
    encoder.encodeInt16(sueTrimValueInput8)
    encoder.encodeInt16(sueTrimValueInput9)
    encoder.encodeInt16(sueTrimValueInput10)
    encoder.encodeInt16(sueTrimValueInput11)
    encoder.encodeInt16(sueTrimValueInput12)
    encoder.encodeUInt8(sueNumberOfInputs)
    return encoder.bytes
  }

  override fun serializeV2(): ByteArray {
    val encoder = MavDataEncoder(SIZE_V2)
    encoder.encodeInt16(sueTrimValueInput1)
    encoder.encodeInt16(sueTrimValueInput2)
    encoder.encodeInt16(sueTrimValueInput3)
    encoder.encodeInt16(sueTrimValueInput4)
    encoder.encodeInt16(sueTrimValueInput5)
    encoder.encodeInt16(sueTrimValueInput6)
    encoder.encodeInt16(sueTrimValueInput7)
    encoder.encodeInt16(sueTrimValueInput8)
    encoder.encodeInt16(sueTrimValueInput9)
    encoder.encodeInt16(sueTrimValueInput10)
    encoder.encodeInt16(sueTrimValueInput11)
    encoder.encodeInt16(sueTrimValueInput12)
    encoder.encodeUInt8(sueNumberOfInputs)
    return encoder.bytes.truncateZeros()
  }

  public companion object : MavMessage.MavCompanion {
    private const val SIZE_V1: Int = 25

    private const val SIZE_V2: Int = 25

    override val id: UInt = 186u

    override val crcExtra: Byte = -112

    override fun deserialize(bytes: ByteArray): SerialUdbExtraF20 {
      val decoder = MavDataDecoder(bytes)

      val sueTrimValueInput1 = decoder.safeDecodeInt16()
      val sueTrimValueInput2 = decoder.safeDecodeInt16()
      val sueTrimValueInput3 = decoder.safeDecodeInt16()
      val sueTrimValueInput4 = decoder.safeDecodeInt16()
      val sueTrimValueInput5 = decoder.safeDecodeInt16()
      val sueTrimValueInput6 = decoder.safeDecodeInt16()
      val sueTrimValueInput7 = decoder.safeDecodeInt16()
      val sueTrimValueInput8 = decoder.safeDecodeInt16()
      val sueTrimValueInput9 = decoder.safeDecodeInt16()
      val sueTrimValueInput10 = decoder.safeDecodeInt16()
      val sueTrimValueInput11 = decoder.safeDecodeInt16()
      val sueTrimValueInput12 = decoder.safeDecodeInt16()
      val sueNumberOfInputs = decoder.safeDecodeUInt8()

      return SerialUdbExtraF20(
        sueNumberOfInputs = sueNumberOfInputs,
        sueTrimValueInput1 = sueTrimValueInput1,
        sueTrimValueInput2 = sueTrimValueInput2,
        sueTrimValueInput3 = sueTrimValueInput3,
        sueTrimValueInput4 = sueTrimValueInput4,
        sueTrimValueInput5 = sueTrimValueInput5,
        sueTrimValueInput6 = sueTrimValueInput6,
        sueTrimValueInput7 = sueTrimValueInput7,
        sueTrimValueInput8 = sueTrimValueInput8,
        sueTrimValueInput9 = sueTrimValueInput9,
        sueTrimValueInput10 = sueTrimValueInput10,
        sueTrimValueInput11 = sueTrimValueInput11,
        sueTrimValueInput12 = sueTrimValueInput12,
      )
    }

    public operator fun invoke(builderAction: Builder.() -> Unit): SerialUdbExtraF20 =
        Builder().apply(builderAction).build()
  }

  public class Builder {
    public var sueNumberOfInputs: UByte = 0u

    public var sueTrimValueInput1: Short = 0

    public var sueTrimValueInput2: Short = 0

    public var sueTrimValueInput3: Short = 0

    public var sueTrimValueInput4: Short = 0

    public var sueTrimValueInput5: Short = 0

    public var sueTrimValueInput6: Short = 0

    public var sueTrimValueInput7: Short = 0

    public var sueTrimValueInput8: Short = 0

    public var sueTrimValueInput9: Short = 0

    public var sueTrimValueInput10: Short = 0

    public var sueTrimValueInput11: Short = 0

    public var sueTrimValueInput12: Short = 0

    public fun build(): SerialUdbExtraF20 = SerialUdbExtraF20(
      sueNumberOfInputs = sueNumberOfInputs,
      sueTrimValueInput1 = sueTrimValueInput1,
      sueTrimValueInput2 = sueTrimValueInput2,
      sueTrimValueInput3 = sueTrimValueInput3,
      sueTrimValueInput4 = sueTrimValueInput4,
      sueTrimValueInput5 = sueTrimValueInput5,
      sueTrimValueInput6 = sueTrimValueInput6,
      sueTrimValueInput7 = sueTrimValueInput7,
      sueTrimValueInput8 = sueTrimValueInput8,
      sueTrimValueInput9 = sueTrimValueInput9,
      sueTrimValueInput10 = sueTrimValueInput10,
      sueTrimValueInput11 = sueTrimValueInput11,
      sueTrimValueInput12 = sueTrimValueInput12,
    )
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy