<?xml version="1.0" encoding="utf-8"?>

<package schemaVersion="1.7.7" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="https://raw.githubusercontent.com/Open-CMSIS-Pack/Open-CMSIS-Pack-Spec/v1.7.7/schema/PACK.xsd">
  <vendor>ARM</vendor>
  <name>Arm-2D</name>
  <description>A 2D graphic library optimized for Cortex-M processors.</description>
  <!-- web download link -->
  <url>https://www.keil.com/pack/</url>
  <supportContact>https://github.com/ARM-software/Arm-2D/issues</supportContact>
  <license>LICENSE</license>
  <repository type="git">https://github.com/ARM-software/Arm-2D.git</repository>
  
  <releases>
    <release version="9.9.9" tag="v9.9.9">
      Active development ...
    </release>
  </releases>

  <keywords>
    <!-- keywords for indexing -->
    <keyword>Cortex-M</keyword>
    <keyword>Arm-2D</keyword>
    <keyword>Image Processing</keyword>
  </keywords>
  
    <requirements>
        <languages>
            <language name="C" version="99"/>
        </languages>
    </requirements>
  
    <conditions> 
        <!--
        <condition id="Arm Compiler">
            <description>Arm Compiler 5 (armcc) or Arm Compiler 6 (armclang).</description>
            <accept Tcompiler="ARMCC" Toptions="AC6"/>
            <accept Tcompiler="ARMCC" Toptions="AC6LTO"/>
            <accept Tcompiler="ARMCC" Toptions="AC5"/>
        </condition>
        <condition id="Arm GCC">
            <description>GNU Tools for Arm Embedded Processors.</description>
            <accept Tcompiler="GCC"/>
        </condition>
        
        <condition id="Cortex-M Processors">
            <description>Support All Cortex-M based processors</description>
            <accept  Dcore="Cortex-M0"/>
            <accept  Dcore="Cortex-M0+"/>
            <accept  Dcore="Cortex-M1"/>
            <accept  Dcore="Cortex-M3"/>
            <accept  Dcore="Cortex-M4"/>
            <accept  Dcore="Cortex-M7"/>
            <accept  Dcore="Cortex-M23"/>
            <accept  Dcore="Cortex-M33"/>
            <accept  Dcore="Cortex-M35P"/>
            <accept  Dcore="Cortex-M55"/>
            <accept  Dcore="Cortex-M85"/>
            <accept  Dcore="Star-MC1"/>
            <accept  Dcore="SC000"/>
            <accept  Dcore="SC300"/>
            <accept  Dcore="ARMV8MBL"/>
            <accept  Dcore="ARMV8MML"/>
            <accept  Dcore="ARMV81MML"/>
        </condition>
        -->

        <condition id="Helium">
            <description>Support All processors with Helium</description>
            <accept  Dcore="Cortex-M55"/>
            <accept  Dcore="Cortex-M85"/>
            <accept  Dcore="ARMV81MML"/>
        </condition>
        
        <condition id="CMSIS-CORE">
            <description>Require CMSIS-CORE Support</description>
            <require Cclass="CMSIS" Cgroup="CORE"/>
        </condition>
        
        <condition id="CMSIS-DSP">
            <description>Require CMSIS-DSP Support</description>
            <require condition="CMSIS-CORE"/>
            <require Cclass="CMSIS" Cgroup="DSP" Cversion="1.8.0"/>
        </condition>
        
        <condition id="Arm-2D-CORE">
            <description>Require Arm-2D Core Service</description>
            <require Cclass="Acceleration" Cgroup="Arm-2D" Csub="Core"/>
        </condition>
        
        <condition id="Arm-2D-EXTRA">
            <description>Require Arm-2D Core Service</description>
            <require condition="Arm-2D-CORE"/>
            <require Cclass="Acceleration" Cgroup="Arm-2D" Csub="Alpha-Blending"/>
            <require Cclass="Acceleration" Cgroup="Arm-2D" Csub="Transform"/>
        </condition>
        
        <condition id="Arm-2D-PFB">
            <description>Require Arm-2D Core Service</description>
            <require condition="Arm-2D-CORE"/>
            <require Cclass="Acceleration" Cgroup="Arm-2D Helper" Csub="PFB"/>
        </condition>
        
        <condition id="CMSIS-RTOS2">
            <description>Require CMSIS-RTOS2</description>
            <require Cclass="CMSIS" Cgroup="RTOS2"/>
        </condition>
        
        <condition id="PFB CMSIS-RTOS2">
            <description>Require CMSIS-RTOS2</description>
            <require condition="CMSIS-RTOS2"/>
            <require condition="Arm-2D-PFB"/>
        </condition>
        
        <!--
        <condition id="Arm-2D-DSP">
            <description>Require Arm-2D Core Service</description>
            <require condition="Arm-2D-CORE"/>
            <require condition="CMSIS-DSP"/>
        </condition>
        -->
        <condition id="Arm-2D-Helper">
            <description>Require Arm-2D Helper Services</description>
            <require condition="Arm-2D-CORE"/>
            <require Cclass="Acceleration" Cgroup="Arm-2D Helper" Csub="PFB" Cversion="1.4.16" />
            <require Cclass="Acceleration" Cgroup="Arm-2D Extras" Csub="LCD ASCII Printf"/>
            <require Cclass="Acceleration" Cgroup="Arm-2D Extras" Csub="Controls"/>
        </condition>
        
        <condition id="Arm-2D-Benchmark-Generic">
            <description>The Dependency Requirement for running arm-2d generic bemchmark</description>
            <require condition="Arm-2D-Helper"/>
            <deny Cclass="Acceleration" Cgroup="Arm-2D Extras" Csub="Benchmark-WatchPanel" />
        </condition>
        
        <condition id="Arm-2D-Benchmark-WatchPanel">
            <description>The Dependency Requirement for running arm-2d watch-panel bemchmark</description>
            <require condition="Arm-2D-Helper"/>
            <deny Cclass="Acceleration" Cgroup="Arm-2D Extras" Csub="Benchmark-Generic" />
        </condition>
        
        <!--
        <condition id="Cortex-M CMSIS-CORE">
            <description>Compile Cortex-M Processors CMSIS-CORE.</description>
            <require condition="Cortex-M Processors"/>
            <require condition="CMSIS-CORE"/>
        </condition>
        
        <condition id="Cortex-M CMSIS-DSP">
            <description>Compile Cortex-M Processors with CMSIS-DSP</description>
            <require condition="Cortex-M Processors"/>
            <require condition="CMSIS-DSP"/>
        </condition>
        -->
    </conditions>
  <!-- apis section (optional - for Application Programming Interface descriptions) -->
  <!-- 
  <apis>
  </apis>
  -->

  <!-- boards section (mandatory for Board Support Packs) -->
  <!-- 
  <boards>
  </boards>
  -->

  <!-- devices section (mandatory for Device Family Packs) -->
  <!--
  <devices>
  </devices>
  -->

  <!-- examples section (optional for all Software Packs)-->
  <!--
  <examples>
  </examples>
  -->
  
  <!-- conditions section (optional for all Software Packs)-->
  <!--
  <conditions>
  </conditions>
  -->

    <components>
        <component Cclass="Acceleration" Cgroup="Arm-2D" Csub="Core" Cversion="1.1.4" condition="CMSIS-DSP">
          <description>A 2D image processing library for Cortex-M processors</description>
          <files>
            <file category="include"     name="Library/Include/" />
            <file category="sourceC"     name="Library/Source/arm_2d.c"                         attr="config" version="1.1.0" />
            <file category="sourceC"     name="Library/Source/arm_2d_async.c" />
            <file category="sourceC"     name="Library/Source/arm_2d_draw.c" />
            <file category="sourceC"     name="Library/Source/arm_2d_conversion.c" />
            <file category="sourceC"     name="Library/Source/arm_2d_helium.c"                  condition="Helium" />
            <file category="doc"         name="documentation/index.html"/>
            <file category="preIncludeGlobal"    name="Library/Include/template/arm_2d_cfg.h"   attr="config" version="1.2.0" />
            <file category="utility"     name="tools/img2c.py"                                  attr="config" version="1.2.2"/>
            <file category="utility"     name="tools/ttf2c.py"                                  attr="config" version="1.0.0"/>
            <file category="other"       name="tools/README.md"                                 attr="config" version="1.2.1"/>
            
            <!-- code template -->
            <file category="header"      name="examples/common/controls/template/user_control_template.h"   attr="template"  select="User Control Template" version="1.0.0"/>
            <file category="sourceC"     name="examples/common/controls/template/user_control_template.c"   attr="template"  select="User Control Template" version="1.0.0"/>
            
            <file category="sourceC"     name="Helper/Source/template/arm_2d_scene_template.c"  attr="template"  select="User Scene Template"   version="1.1.7" />
            <file category="header"      name="Helper/Include/template/arm_2d_scene_template.h" attr="template"  select="User Scene Template"   version="1.1.7" />

          </files>
          
          <RTE_Components_h>

#define RTE_Acceleration_Arm_2D
#define __RTE_ACCELERATION_ARM_2D__     /* this macro is deprecated, please use the macro above in your code */
          </RTE_Components_h>
          
          <Pre_Include_Global_h>
#define ___ARM_2D_CFG_HEADER___
          </Pre_Include_Global_h>
          
        </component>
        
        <component Cclass="Acceleration" Cgroup="Arm-2D" Csub="Alpha-Blending" Cversion="1.1.4" condition="Arm-2D-CORE">
          <description>Alpha-blending related APIs for Arm-2D</description>
          <files>
            <file category="sourceC"     name="Library/Source/arm_2d_alpha_blending.c" />
            <file category="doc"         name="documentation/html/group__gAlpha.html"/>
          </files>
          <RTE_Components_h>

    #define RTE_Acceleration_Arm_2D_Alpha_Blending
          </RTE_Components_h>
        </component>
        
        <component Cclass="Acceleration" Cgroup="Arm-2D" Csub="Transform" Cversion="1.1.4" condition="Arm-2D-CORE">
          <description>Transform (rotation and zooming)</description>
          <files>
            <file category="sourceC"     name="Library/Source/arm_2d_transform.c"           condition="CMSIS-DSP"/>
            <file category="doc"         name="documentation/html/group__gTransform.html"/>
          </files>
          <RTE_Components_h>

    #define RTE_Acceleration_Arm_2D_Transform
          </RTE_Components_h>
        </component>
        
        
        <component Cclass="Acceleration" Cgroup="Arm-2D Helper" Csub="PFB" Cversion="1.7.2" condition="Arm-2D-CORE">
          <description>Helper services for LCD adaptor(s), e.g. Generic Partial Framebuffer, Scene Player etc.</description>
          <files>
            <file category="include"     name="Helper/Include/" />
            <file category="sourceC"     name="Helper/Source/arm_2d_helper.c" />
            <file category="sourceC"     name="Helper/Source/arm_2d_helper_pfb.c" />
            <file category="sourceC"     name="Helper/Source/arm_2d_helper_scene.c" />
            <file category="sourceC"     name="Helper/Source/arm_2d_helper_list.c" />
            <file category="doc"         name="documentation/html/group__gHelper.html"/>
            
            <file category="sourceC"     name="Helper/Source/template/arm_2d_helper_rtos_user.c"  attr="template"  select="User RTOS Support Template"   version="1.0.1" />
            
            <!-- scene template -->
            <file category="sourceC"     name="examples/common/scenes/meter/arm_2d_scene_meter.c"   attr="template"  select="Scene Template: Meter"   version="1.2.1" />
            <file category="sourceC"     name="examples/common/asset/MeterPanel.c"                  attr="template"  select="Scene Template: Meter"   version="1.2.1" />
            <file category="header"      name="examples/common/scenes/meter/arm_2d_scene_meter.h"   attr="template"  select="Scene Template: Meter"   version="1.2.1" />
            
            <file category="sourceC"     name="examples/common/scenes/watch/arm_2d_scene_watch.c"   attr="template"  select="Scene Template: Watch"   version="1.0.1" />
            <file category="header"      name="examples/common/scenes/watch/arm_2d_scene_watch.h"   attr="template"  select="Scene Template: Watch"   version="1.0.1" />
          </files>
          <RTE_Components_h>
    #define RTE_Acceleration_Arm_2D_Helper_PFB
          </RTE_Components_h>
        </component>

        <component Cclass="Acceleration" Cgroup="Arm-2D Helper" Csub="RTOS Helper" Cvariant="CMSIS-RTOS2" Cversion="1.0.1" condition="PFB CMSIS-RTOS2">
          <description>A helper service enables the asynchronose mode on CMSIS-RTOS2.</description>
          <files>
            <file category="sourceC"     name="Helper/Source/template/arm_2d_helper_rtos_cmsis_rtos2.c" attr="config" version="1.0.1" />
          </files>
          <RTE_Components_h>
    #define RTE_Acceleration_Arm_2D_Helper_RTOS_CMSIS_RTOS2
          </RTE_Components_h>
        </component>

        <component Cclass="Acceleration" Cgroup="Arm-2D Helper" Csub="RTOS Helper" Cvariant="RT-Thread" Cversion="1.0.0" condition="Arm-2D-PFB">
          <description>A helper service enables the asynchronose mode on RT-Thread.</description>
          <files>
            <file category="sourceC"     name="Helper/Source/template/arm_2d_helper_rtos_rt_thread.c" attr="config" version="1.0.0" />
          </files>
          <RTE_Components_h>
    #define RTE_Acceleration_Arm_2D_Helper_RTOS_RT_Thread
          </RTE_Components_h>
        </component>

        <component Cclass="Acceleration" Cgroup="Arm-2D Helper" Csub="RTOS Helper" Cvariant="User Custom" Cversion="1.0.1" condition="Arm-2D-PFB">
          <description>A template for user to custom a RTOS wrapper</description>
          <files>
            <file category="sourceC"     name="Helper/Source/template/arm_2d_helper_rtos_user.c" attr="config" version="1.0.1" />
          </files>
          <RTE_Components_h>
    #define RTE_Acceleration_Arm_2D_Helper_RTOS_USER
          </RTE_Components_h>
        </component>

        <component Cclass="Acceleration" Cgroup="Arm-2D Helper" Csub="Display Adapter" Cversion="1.6.2" condition="Arm-2D-Helper" maxInstances="8">
          <description>The Display Adapter.</description>
          <files>
            <file category="sourceC"     name="Helper/Source/template/arm_2d_disp_adapter.c" attr="config" version="1.6.2" />
            <file category="header"      name="Helper/Include/template/arm_2d_disp_adapter.h" attr="config" version="1.6.2" />
          </files>
          <RTE_Components_h>
    #define RTE_Acceleration_Arm_2D_Helper_Disp_Adapter%Instance%
    #define __RTE_ACCELERATION_ARM_2D_HELPER_DISP_ADAPTER%Instance%__  /* this macro is deprecated, please use the macro above in your code */
          </RTE_Components_h>
        </component>

        <component Cclass="Acceleration" Cgroup="Arm-2D Helper" Csub="Scene" Cversion="1.1.9" condition="Arm-2D-Helper" maxInstances="1000">
          <description>A template for scene</description>
          <files>
            <file category="sourceC"     name="Helper/Source/template/arm_2d_scene.c" attr="config" version="1.1.9" />
            <file category="header"      name="Helper/Include/template/arm_2d_scene.h" attr="config" version="1.1.9" />
          </files>
          <RTE_Components_h>
    #define RTE_Acceleration_Arm_2D_Scene%Instance%
    #define __RTE_ACCELERATION_ARM_2D_SCENE%Instance%__    /* this macro is deprecated, please use the macro above in your code */
          </RTE_Components_h>
        </component>

        <component Cclass="Acceleration" Cgroup="Arm-2D Extras" Csub="LCD ASCII Printf" Cversion="1.3.1" condition="Arm-2D-CORE">
          <description>A example module to print ASCII strings to target string.</description>
          <files>
            <file category="include"     name="examples/common/controls/" />
            <file category="sourceC"     name="examples/common/controls/lcd_printf.c" />
            <file category="sourceC"     name="examples/common/controls/GLCD_Fonts.c" />
          </files>
          <RTE_Components_h>

    #define RTE_Acceleration_Arm_2D_Extra_LCD_printf__
          </RTE_Components_h>
        </component>

        <component Cclass="Acceleration" Cgroup="Arm-2D Extras" Csub="Controls" Cversion="1.4.3" condition="Arm-2D-EXTRA">
          <description>A set of example controls, e.g. round-corner-box, spinning-wheels etc</description>
          <files>
            <file category="include"     name="examples/common/controls/" />
            <file category="sourceC"     name="examples/common/controls/controls.c" />
            <file category="sourceC"     name="examples/common/controls/busy_wheel.c" />
            <file category="sourceC"     name="examples/common/controls/shape_round_corner_box.c" />
            <file category="sourceC"     name="examples/common/controls/spinning_wheel.c" />
            <file category="sourceC"     name="examples/common/controls/progress_bar_drill.c" />
            <file category="sourceC"     name="examples/common/controls/progress_bar_flowing.c" />
            <file category="sourceC"     name="examples/common/controls/progress_bar_simple.c" />
            <file category="sourceC"     name="examples/common/controls/number_list.c" />
            <file category="sourceC"     name="examples/common/controls/progress_wheel.c" />
            <file category="sourceC"     name="examples/common/controls/list_view.c" />
            <file category="sourceC"     name="examples/common/controls/battery_gasgauge.c" />
            <file category="sourceC"     name="examples/common/asset/white_dot.c" />
            <file category="sourceC"     name="examples/common/asset/SpinWheel.c" />
            <file category="sourceC"     name="examples/common/asset/blue_slashes.c" />
            <file category="sourceC"     name="examples/common/asset/wave.c" />
            <file category="sourceC"     name="examples/common/asset/cmsis_logo.c" />
            <file category="sourceC"     name="examples/common/asset/GreenCircle.c" />
            <file category="sourceC"     name="examples/common/asset/QuaterArc.c" />
            <file category="sourceC"     name="examples/common/asset/ListCover.c" />
            <file category="sourceC"     name="examples/common/asset/DigitsFont.c" />
            <file category="sourceC"     name="examples/common/asset/battery_boarder_1.c" />
            <file category="sourceC"     name="examples/common/asset/battery_gasgauge_block.c" />
            <file category="sourceC"     name="examples/common/asset/battery_gasgauge_grade_boarder.c" />
            <file category="sourceC"     name="examples/common/asset/SinWave.c" />
            <file category="sourceC"     name="examples/common/asset/glass_reflection_wide.c" />
            <file category="sourceC"     name="examples/common/asset/glass_reflection_narrow.c" />
            <file category="sourceC"     name="examples/common/asset/Lighting.c" />
            <file category="sourceC"     name="examples/common/asset/Pointer.c" />
            <file category="sourceC"     name="examples/common/asset/watch_panel.c" />
            <file category="sourceC"     name="examples/common/asset/pointer_sec.c" />
            <file category="sourceC"     name="examples/common/asset/gear_01.c" />
            <file category="sourceC"     name="examples/common/asset/gear_02.c" />
            <file category="sourceC"     name="examples/common/asset/star.c" />
            <file category="sourceC"     name="examples/common/asset/small_icon_sun.c" />
            <file category="sourceC"     name="examples/common/asset/software.c" />
            <file category="sourceC"     name="examples/common/asset/circle_mask.c" />
            <file category="sourceC"     name="examples/common/asset/circle_small.c" />
            <file category="sourceC"     name="examples/common/asset/wifi_signal.c" />
            <file category="sourceC"     name="examples/common/asset/helium.c" />
            <file category="sourceC"     name="examples/common/asset/background.c" />
          </files>
          <RTE_Components_h>

    #define RTE_Acceleration_Arm_2D_Extra_Controls
          </RTE_Components_h>
        </component>
        
        <component Cclass="Acceleration" Cgroup="Arm-2D Extras" Csub="Benchmark-Generic" Cversion="1.3.1" condition="Arm-2D-Benchmark-Generic">
          <description>An all-in-one generic benchmark for arm-2d.</description>
          <files>
            <file category="include"     name="examples/common/benchmark/" />
            <file category="sourceC"     name="examples/common/benchmark/benchmark_generic.c" />
            <file category="sourceC"     name="examples/common/benchmark/arm_2d_scene_benchmark_generic.c" />
			<file category="sourceC"     name="examples/common/benchmark/arm_2d_scene_benchmark_generic_cover.c" />
          </files>
          <RTE_Components_h>
#define RTE_Acceleration_Arm_2D_Extra_Benchmark
    #define RTE_Acceleration_Arm_2D_Extra_Benchmark_Generic
          </RTE_Components_h>
        </component>

        <component Cclass="Acceleration" Cgroup="Arm-2D Extras" Csub="Benchmark-WatchPanel" Cversion="1.4.1" condition="Arm-2D-Benchmark-WatchPanel">
          <description>An watch-panel benchmark for arm-2d.</description>
          <files>
            <file category="include"     name="examples/common/benchmark/" />
            <file category="sourceC"     name="examples/common/benchmark/benchmark_watch_panel.c" />
            <file category="sourceC"     name="examples/common/benchmark/arm_2d_scene_benchmark_watch_panel.c" />
			<file category="sourceC"     name="examples/common/benchmark/arm_2d_scene_benchmark_watch_panel_cover.c" />
          </files>
          <RTE_Components_h>
#define RTE_Acceleration_Arm_2D_Extra_Benchmark
    #define RTE_Acceleration_Arm_2D_Extra_Benchmark_Watch_Panel
          </RTE_Components_h>
        </component>

    </components>

  <!-- optional taxonomy section for defining new component Class and Group names -->

  <taxonomy>
      <description Cclass="Acceleration" Cgroup="Arm-2D" doc="documentation/index.html">A 2D Image Processing Library for Cortex-M Processors</description>
  </taxonomy>

  
</package>
