component("stack") {
    parent "nu.os.conn.usb.func"
    version "2.8.0"
    description "This component implements the base USB Function Stack component."
    enable true
    runlevel 5

    requires("nu.os.conn.usb.com.stack")

    library("nucleus.lib") {
        sources {
            Dir.glob("src/*.c")
        }
    }

    option("ncontroller") {
      description "Number of function controllers present on the board"
      default 4
      enregister false
   }

    option("PID") {
      description "Product ID to be mentioned in the USB Device Descriptor"
      default 0x4005
      enregister true
      binary_build_editable
   }

    option("VID") {
      description "Vendor ID to be mentioned in the USB Device Descriptor"
      default 0x04D6
      enregister true
      binary_build_editable
   }

    option("manuf_string") {
      description "Optional Manufacturer String to be mentioned in the USB String Descriptor"
      default "Mentor_Graphics"
      enregister true
      binary_build_editable
   }

    option("product_string") {
      description "Optional Product String to be mentioned in the USB String Descriptor"
      default "USB Device"
      enregister true
      binary_build_editable
   }

   option("serial_number") {
      description "Serial number to be mentioned in the USB String Descriptor"
      default "0123456789ABCDEF"
      enregister true
      binary_build_editable
   }

    option("max_configurations") {
      description "Maximum number of configurations supported"
      default 4
      enregister false
   }

    option("max_interfaces") {
      description "Maximum number of interfaces supported"
      default 8
      enregister false
   }

    option("max_endpoints") {
      description "Maximum number of endpoints supported"
      default 10
      enregister false
   }

    option("max_strings") {
      description "Maximum number of string descriptors supported"
      default 16
      enregister false
   }

    option("max_iads") {
      description "Maximum number of IADs supported"
      default 5
      enregister false
   }

    option("max_alt_settings") {
      description "Maximum number of alternate settings supported"
      default 3
      enregister false
   }

    option("max_unicode_string_len") {
      description "Maximum length of UNICODE string"
      default 100
      enregister false
   }

    option("max_class_drivers") {
      description "Maximum number of class drivers supported"
      default 3
      enregister false
   }

    option("max_users") {
      description "Maximum number of user drivers supported"
      default 2
      enregister false
   }

    option("max_irqs") {
      description "Maximum IRQs for hardware controllers"
      default 2
      enregister false
   }

   option("hibernate_dev") {
        enregister  true
        default true
        description "This marks the component to be hibernate aware"
        hidden true
    }

}
