Skip to content
Browse files

Added Configurator

  • Loading branch information...
0 parents commit 6bcf2158fc41178e8b040b89480c6b501b880c19 @sarumugam sarumugam committed Jul 12, 2012
932 .cproject
@@ -0,0 +1,932 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+<storageModule moduleId="org.eclipse.cdt.core.settings">
+<cconfiguration id="cdt.managedbuild.config.gnu.exe.debug.2084942658">
+<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.2084942658" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<configuration artifactName="configurator" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.2084942658" name="Debug" parent="cdt.managedbuild.config.gnu.exe.debug">
+<folderInfo id="cdt.managedbuild.config.gnu.exe.debug.2084942658." name="/" resourcePath="">
+<toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.708752364" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.debug">
+<targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.debug.456735033" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.debug"/>
+<builder arguments="-f Makefile.Ubuntu" buildPath="${workspace_loc:/configurator}" command="make" enableAutoBuild="true" id="cdt.managedbuild.target.gnu.builder.exe.debug.1327556857" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.debug"/>
+<tool id="cdt.managedbuild.tool.gnu.archiver.base.1568234564" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
+<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1602699534" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug">
+<option id="gnu.cpp.compiler.exe.debug.option.optimization.level.1546078932" name="Optimization Level" superClass="gnu.cpp.compiler.exe.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+<option id="gnu.cpp.compiler.exe.debug.option.debugging.level.535956165" name="Debug Level" superClass="gnu.cpp.compiler.exe.debug.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1549977520" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.debug.901124164" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.debug">
+<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.exe.debug.option.optimization.level.1401430590" name="Optimization Level" superClass="gnu.c.compiler.exe.debug.option.optimization.level" valueType="enumerated"/>
+<option id="gnu.c.compiler.exe.debug.option.debugging.level.2137755449" name="Debug Level" superClass="gnu.c.compiler.exe.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.373613702" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.c.linker.exe.debug.187775279" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.debug"/>
+<tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug.937499171" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug">
+<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1912778008" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+</inputType>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.assembler.exe.debug.1686564156" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.debug">
+<inputType id="cdt.managedbuild.tool.gnu.assembler.input.366594035" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+</tool>
+</toolChain>
+</folderInfo>
+</configuration>
+</storageModule>
+<storageModule moduleId="scannerConfiguration">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.1965225328;cdt.managedbuild.config.gnu.exe.release.1965225328.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.2075068433;cdt.managedbuild.tool.gnu.cpp.compiler.input.563415649">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.2084942658;cdt.managedbuild.config.gnu.exe.debug.2084942658.;cdt.managedbuild.tool.gnu.c.compiler.exe.debug.901124164;cdt.managedbuild.tool.gnu.c.compiler.input.373613702">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.1965225328;cdt.managedbuild.config.gnu.exe.release.1965225328.;cdt.managedbuild.tool.gnu.c.compiler.exe.release.295939732;cdt.managedbuild.tool.gnu.c.compiler.input.1717799388">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.2084942658;cdt.managedbuild.config.gnu.exe.debug.2084942658.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1602699534;cdt.managedbuild.tool.gnu.cpp.compiler.input.1549977520">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
+<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+</cconfiguration>
+<cconfiguration id="cdt.managedbuild.config.gnu.exe.release.1965225328">
+<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.release.1965225328" moduleId="org.eclipse.cdt.core.settings" name="Release">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<configuration artifactName="configurator" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.release.1965225328" name="Release" parent="cdt.managedbuild.config.gnu.exe.release">
+<folderInfo id="cdt.managedbuild.config.gnu.exe.release.1965225328." name="/" resourcePath="">
+<toolChain id="cdt.managedbuild.toolchain.gnu.exe.release.563198590" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.release">
+<targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.release.1178982008" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.release"/>
+<builder buildPath="${workspace_loc:/configurator/Release}" id="cdt.managedbuild.target.gnu.builder.exe.release.369560884" managedBuildOn="true" name="Gnu Make Builder.Release" superClass="cdt.managedbuild.target.gnu.builder.exe.release"/>
+<tool id="cdt.managedbuild.tool.gnu.archiver.base.1456596932" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
+<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.2075068433" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release">
+<option id="gnu.cpp.compiler.exe.release.option.optimization.level.935148135" superClass="gnu.cpp.compiler.exe.release.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+<option id="gnu.cpp.compiler.exe.release.option.debugging.level.1909201794" superClass="gnu.cpp.compiler.exe.release.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
+<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.563415649" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.release.295939732" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.release">
+<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.exe.release.option.optimization.level.517869732" superClass="gnu.c.compiler.exe.release.option.optimization.level" valueType="enumerated"/>
+<option id="gnu.c.compiler.exe.release.option.debugging.level.1614130971" superClass="gnu.c.compiler.exe.release.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
+<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1717799388" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.c.linker.exe.release.830386040" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.release"/>
+<tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.release.987990338" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.release">
+<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1702928326" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+</inputType>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.assembler.exe.release.1730037891" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.release">
+<inputType id="cdt.managedbuild.tool.gnu.assembler.input.467472534" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+</tool>
+</toolChain>
+</folderInfo>
+</configuration>
+</storageModule>
+<storageModule moduleId="scannerConfiguration">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.1965225328;cdt.managedbuild.config.gnu.exe.release.1965225328.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.2075068433;cdt.managedbuild.tool.gnu.cpp.compiler.input.563415649">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.2084942658;cdt.managedbuild.config.gnu.exe.debug.2084942658.;cdt.managedbuild.tool.gnu.c.compiler.exe.debug.901124164;cdt.managedbuild.tool.gnu.c.compiler.input.373613702">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.1965225328;cdt.managedbuild.config.gnu.exe.release.1965225328.;cdt.managedbuild.tool.gnu.c.compiler.exe.release.295939732;cdt.managedbuild.tool.gnu.c.compiler.input.1717799388">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.2084942658;cdt.managedbuild.config.gnu.exe.debug.2084942658.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1602699534;cdt.managedbuild.tool.gnu.cpp.compiler.input.1549977520">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
+<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+</cconfiguration>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<project id="configurator.cdt.managedbuild.target.gnu.exe.2030296833" name="Executable" projectType="cdt.managedbuild.target.gnu.exe"/>
+</storageModule>
+</cproject>
81 .project
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>configurator</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+ <arguments>
+ <dictionary>
+ <key>?name?</key>
+ <value></value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.append_environment</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.autoBuildTarget</key>
+ <value>all</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildArguments</key>
+ <value>-f Makefile.Ubuntu</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildCommand</key>
+ <value>make</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildLocation</key>
+ <value>${workspace_loc:/configurator}</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
+ <value>clean</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.contents</key>
+ <value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableFullBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.fullBuildTarget</key>
+ <value>all</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.stopOnError</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+ <value>false</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.cdt.core.cnature</nature>
+ <nature>org.eclipse.cdt.core.ccnature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+ </natures>
+</projectDescription>
4 .settings/org.eclipse.cdt.core.prefs
@@ -0,0 +1,4 @@
+#Fri Feb 19 11:33:14 PST 2010
+eclipse.preferences.version=1
+environment/project/cdt.managedbuild.config.gnu.exe.debug.2084942658=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<environment append\="true" appendContributed\="true"/>\n
+environment/project/cdt.managedbuild.config.gnu.exe.release.1965225328=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<environment append\="true" appendContributed\="true"/>\n
41 Configurator.launch
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.cdt.launch.applicationLaunchType">
+<booleanAttribute key="org.eclipse.cdt.debug.mi.core.AUTO_SOLIB" value="true"/>
+<listAttribute key="org.eclipse.cdt.debug.mi.core.AUTO_SOLIB_LIST"/>
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.DEBUG_NAME" value="gdb"/>
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.GDB_INIT" value="/home/user/gdbinit"/>
+<listAttribute key="org.eclipse.cdt.debug.mi.core.SOLIB_PATH"/>
+<booleanAttribute key="org.eclipse.cdt.debug.mi.core.STOP_ON_SOLIB_EVENTS" value="false"/>
+<booleanAttribute key="org.eclipse.cdt.debug.mi.core.breakpointsFullPath" value="false"/>
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.commandFactory" value="org.eclipse.cdt.debug.mi.core.standardCommandFactory"/>
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.protocol" value="mi"/>
+<booleanAttribute key="org.eclipse.cdt.debug.mi.core.verboseMode" value="false"/>
+<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
+<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_ID" value="org.eclipse.cdt.debug.mi.core.CDebuggerNew"/>
+<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
+<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
+<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
+<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
+<booleanAttribute key="org.eclipse.cdt.launch.ENABLE_REGISTER_BOOKKEEPING" value="false"/>
+<booleanAttribute key="org.eclipse.cdt.launch.ENABLE_VARIABLE_BOOKKEEPING" value="false"/>
+<stringAttribute key="org.eclipse.cdt.launch.FORMAT" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&lt;contentList/&gt;"/>
+<stringAttribute key="org.eclipse.cdt.launch.GLOBAL_VARIABLES" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;globalVariableList/&gt;&#10;"/>
+<stringAttribute key="org.eclipse.cdt.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;memoryBlockExpressionList/&gt;&#10;"/>
+<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_ARGUMENTS" value="-c log.conf service"/>
+<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="debug-linux-x86/configurator"/>
+<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="configurator"/>
+<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value=""/>
+<booleanAttribute key="org.eclipse.cdt.launch.use_terminal" value="true"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/configurator"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<mapAttribute key="org.eclipse.debug.core.environmentVariables">
+<mapEntry key="LD_LIBRARY_PATH" value="/opt/Palm/luna/desktop-binaries/lib"/>
+</mapAttribute>
+<mapAttribute key="org.eclipse.debug.core.preferred_launchers">
+<mapEntry key="[debug]" value="org.eclipse.cdt.cdi.launch.localCLaunch"/>
+</mapAttribute>
+</launchConfiguration>
202 LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
10 Makefile
@@ -0,0 +1,10 @@
+# Device makefile
+
+BUILD_TYPE := release
+PLATFORM := linux-arm
+OBJDIR := $(BUILD_TYPE)-$(PLATFORM)
+LOCAL_INCLUDES := -I$(QPEDIR)/include/mojodb
+LOCAL_CFLAGS := $(CFLAGS) -Wall -Werror -DMOJ_LINUX $(LOCAL_INCLUDES) $(shell pkg-config --cflags glib-2.0)
+LOCAL_CPPFLAGS := $(CPPFLAGS) -fno-rtti
+
+include Makefile.inc
14 Makefile.Ubuntu
@@ -0,0 +1,14 @@
+BUILD_TYPE := debug
+PLATFORM := linux-x86
+OBJDIR := $(BUILD_TYPE)-$(PLATFORM)
+LOCAL_CFLAGS := -O0 -g -Wall -Werror -DDEBUG -DMOJ_LINUX -DMOJ_X86 -DMOJ_DEBUG $(shell pkg-config --cflags glib-2.0)
+LOCAL_CPPFLAGS := $(CFLAGS) -fno-rtti
+BEDLAM_ROOT ?= /opt/Palm/luna/desktop-binaries
+ARCH_LDFLAGS ?= -Wl,-rpath-link ${BEDLAM_ROOT}/lib
+LDFLAGS := $(ARCH_LDFLAGS) -L/home/user/eclipse/workspace/mojodb/debug-linux-x86 -L$(BEDLAM_ROOT)/lib
+
+INCLUDES := \
+ -I$(BEDLAM_ROOT)/include \
+ -I$(BEDLAM_ROOT)/include/mojodb
+
+include Makefile.inc
46 Makefile.inc
@@ -0,0 +1,46 @@
+LIBS := -llunaservice -lmojoluna -lmojodb -lmojocore $(LIBS)
+LOCAL_LDFLAGS := $(LDFLAGS) $(LIBS)
+
+GLIBCURL_SOURCES := glibcurl.c
+
+CONFIGURATOR_SOURCES := \
+ ActivityConfigurator.cpp \
+ Configurator.cpp \
+ DbKindConfigurator.cpp \
+ DbPermissionsConfigurator.cpp \
+ FileCacheConfigurator.cpp
+
+CONFIGURATOR_MAIN := BusClient.cpp
+
+SOURCE_DIRS := src
+
+CONFIGURATOR_TARGET := $(OBJDIR)/configurator
+CONFIGURATOR_OBJECTS := $(CONFIGURATOR_SOURCES:%.cpp=$(OBJDIR)/%.o)
+CONFIGURATOR_OBJECTS_MAIN := $(CONFIGURATOR_MAIN:%.cpp=$(OBJDIR)/%.o)
+
+all: setup $(CONFIGURATOR_TARGET)
+
+$(CONFIGURATOR_TARGET): $(CONFIGURATOR_OBJECTS) $(CONFIGURATOR_OBJECTS_MAIN)
+ $(CXX) -o $(CONFIGURATOR_TARGET) $(CONFIGURATOR_OBJECTS) $(CONFIGURATOR_OBJECTS_MAIN) $(LOCAL_LDFLAGS)
+
+$(OBJDIR)/%.o: %.cpp
+ $(CXX) -MMD $(INCLUDES) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -c $< -o $@
+
+setup: $(OBJDIR)
+
+$(OBJDIR):
+ @mkdir -p $(OBJDIR)
+
+vpath %.cpp $(SOURCE_DIRS)
+vpath %.c $(SOURCE_DIRS)
+
+docs:
+ (cd docs && doxygen ./Doxyfile)
+
+clean:
+ rm -rf $(OBJDIR)
+
+SOURCES := $(CONFIGURATOR_SOURCES) $(CONFIGURATOR_MAIN)
+-include $(SOURCES:%.cpp=$(OBJDIR)/%.d)
+
+.PHONY: clean all setup
41 README.md
@@ -0,0 +1,41 @@
+Configurator
+============
+Configurator is a userspace service that creates the database schema (webOS Db8 kinds) for Applications. It scans the /etc/palm/db/kinds directory to read the App's Db8
+schema files to create the db kinds in the Db8.
+
+Dependencies
+============
+Below are the tools and libraries required to build.
+
+ gcc 4.3
+ make (any version)
+ pkg-config
+ glib-2.0 or later
+ openwebos/Db8 libraries (libmojocore, libmojoluna)
+ openwebos/luna-service2 3.0.0
+
+
+Build Instructions
+==================
+This release is provided for informational purpose only. No build support is provided at this time.
+
+
+
+# Copyright and License Information
+
+All content, including all source code files and documentation files in this repository except otherwise noted are:
+
+ Copyright (c) 2010-2012 Hewlett-Packard Development Company, L.P.
+
+All content, including all source code files and documentation files in this repository except otherwise noted are:
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this content except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
57 files/etc/event.d/configurator
@@ -0,0 +1,57 @@
+# not ideal - would like to start this on started mojodb and filecache-ready
+# but our upstart doesn't support this (0.5 needed AFAIK)
+start on stopped finish
+
+# AM may crash or be stopped manually. Need to re-register the activities
+# in this case
+# AM now starts the configurator directly though a service call
+# start on activitymanager-ready
+
+# Some activities can only be registered once first use has completed (otherwise activity
+# manager will launch apps during first use when they don't expect to be running).
+start on first-use-finished
+start on first-use-profile-created
+
+# Need to make sure that AM doesn't hang when it emits it's upstart signal
+# This is actually not safe, as it can cause upstart to eat the events.
+# The Activity Manager will call the configurator directly.
+# service
+
+# The file cache & db kinds need to be configured first
+script
+ if [ "x$UPSTART_EVENT" = "xstopped" ]; then
+ # This is the "stopped finish" event - first pass we register file cache and dbkinds
+ logger -s "Configuring dbkinds & filecache"
+ luna-send -n 1 palm://com.palm.configurator/run '{"types":["dbkinds","filecache"]}'
+ # This has to happen *after* the kinds are created.
+ logger -s "Configuring dbpermissions"
+ luna-send -n 1 palm://com.palm.configurator/run '{"types":["dbpermissions"]}'
+ fi
+
+ # Notify it is safe to run the activity manager if it hasn't started already
+ initctl emit datastore-initialized
+
+ # Now we configure activities doesn't matter if it hasn't started yet
+ # Rely on ls2 delivering the messages once it does
+
+ # The only time we care about the first use distiction is when we're registering
+ # activities - behaviour is the same - just the flag is different
+ #
+ # Don't do this. The Activity Manager will call the configurator directly
+ # to work around the upstart issue.
+
+ #POST_FIRST_USE=0
+ #if [ -f "/var/luna/preferences/ran-first-use" ] && [ -f "/var/luna/preferences/first-use-profile-created" ]; then
+ # POST_FIRST_USE=1
+ #fi
+
+ #if [ $POST_FIRST_USE -eq 1 ]; then
+ # logger -s "Configuring activities"
+ # luna-send -n 1 palm://com.palm.configurator/run '{"types":["activities"]}'
+ #else
+ # logger -s "Configuring activities prior to first-use"
+ # luna-send -n 1 palm://com.palm.configurator/run '{"types":["activities-first-use"]}'
+ #fi
+ logger -s "Configuring activities"
+ luna-send -n 1 palm://com.palm.configurator/run '{"types":["activities"]}'
+end script
14 files/etc/event.d/configurator-async
@@ -0,0 +1,14 @@
+# AM may crash or be stopped manually. Need to re-register the activities
+# in this case
+start on activitymanager-ready
+
+# Need to make sure that AM doesn't hang when it emits it's upstart signal
+# This is actually not safe, as it can cause upstart to eat the events.
+# The Activity Manager will call the configurator directly.
+service
+
+# The file cache & db kinds need to be configured first
+script
+ logger -s "Configuring activities asynchronously"
+ luna-send -n 1 palm://com.palm.configurator/run '{"types":["activities"]}'
+end script
5 log.conf
@@ -0,0 +1,5 @@
+{
+ "log" : {
+ "levels" : {"configurator":"debug"}
+ }
+}
14 service/com.palm.configurator.json.prv
@@ -0,0 +1,14 @@
+{
+ "role": {
+ "exeName":"/usr/bin/configurator",
+ "type": "privileged",
+ "allowedNames": ["com.palm.configurator"]
+ },
+ "permissions": [
+ {
+ "service":"com.palm.configurator",
+ "inbound":["*"],
+ "outbound":["*"]
+ }
+ ]
+}
4 service/com.palm.configurator.service.prv
@@ -0,0 +1,4 @@
+[D-BUS Service]
+Name=com.palm.configurator
+Exec=/usr/bin/configurator -c {\"log\":{\"appender\":{\"type\":\"syslog\"},\"levels\":{\"configurator\":\"notice\"}}} service
+Type=dynamic
229 src/ActivityConfigurator.cpp
@@ -0,0 +1,229 @@
+// @@@LICENSE
+//
+// Copyright (c) 2009-2012 Hewlett-Packard Development Company, L.P.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// LICENSE@@@
+
+#include "core/MojObject.h"
+#include "ActivityConfigurator.h"
+#include "BusClient.h"
+#include "core/MojServiceMessage.h"
+
+#include <string.h>
+
+using namespace std;
+
+const char* const ActivityConfigurator::ACTIVITYMGR_BUS_ADDRESS = "com.palm.activitymanager";
+const char* const ActivityConfigurator::ACTIVITYMGR_CREATE_METHOD = "create";
+const char* const ActivityConfigurator::ACTIVITYMGR_REMOVE_METHOD = "cancel";
+const char* const ActivityConfigurator::ACTIVITY = "activity";
+const char* const ActivityConfigurator::CREATOR = "creator";
+const char* const ActivityConfigurator::APPLICATION_ID = "appId";
+const char* const ActivityConfigurator::SERVICE_ID = "serviceId";
+const char* const ActivityConfigurator::NAME = "name";
+const char* const ActivityConfigurator::ACTIVITY_NAME = "activityName";
+const char* const ActivityConfigurator::FIRST_USE_SAFE = "firstUseSafe";
+const char* const ActivityConfigurator::APP_DIR = "/etc/palm/activities/applications/";
+const char* const ActivityConfigurator::SERVICE_DIR = "/etc/palm/activities/services/";
+const char* const ActivityConfigurator::FIRST_USE_FLAG = "/var/luna/preferences/ran-first-use";
+const char* const ActivityConfigurator::FIRST_USE_PROFILE_FLAG = "/var/luna/preferences/first-use-profile-created";
+
+class ActivityConfigureResponse : public ConfiguratorCallback {
+public:
+ ActivityConfigureResponse(ActivityConfigurator *conf, const string& path)
+ : ConfiguratorCallback(conf, path)
+ {
+ }
+
+ ~ActivityConfigureResponse()
+ {
+ }
+
+ MojErr Response(MojObject& response, MojErr err)
+ {
+ bool success = true;
+ response.get("returnValue", success);
+
+ if (err || !success) {
+ MojInt64 errorCode;
+ if (response.get("errorCode", errorCode)) {
+ if (errorCode == MojErrExists) {
+ MojLogInfo(Logger(), "caching ok negative response for %s", m_config.c_str());
+ bool found = false;
+ response.del("errorCode", found);
+ response.del("errorText", found);
+ err = response.putBool("returnValue", true);
+ MarkConfigured();
+ } else {
+ MojLogWarning(Logger(), "Unrecognized errorCode %d", (int)errorCode);
+ }
+ } else {
+ MojLogWarning(Logger(), "errorCode not provided in request failure");
+ }
+ }
+ return DelegateResponse(response, err);
+ }
+};
+
+const char* ActivityConfigurator::ConfiguratorName() const
+{
+ return "ActivityConfigurator";
+}
+
+const char* ActivityConfigurator::ServiceName() const
+{
+ return ACTIVITYMGR_BUS_ADDRESS;
+}
+
+ConfiguratorCallback* ActivityConfigurator::CreateCallback(const std::string &filePath)
+{
+ return new ActivityConfigureResponse(this, filePath);
+}
+
+ActivityConfigurator::ActivityConfigurator(const std::string& id, ConfigType confType, RunType type, BusClient& busClient, string configDirectory)
+ : Configurator(id, confType, type, busClient, configDirectory),
+ m_firstUseOnly(true)
+{
+ int err;
+ struct stat buf;
+ err = stat(FIRST_USE_FLAG, &buf);
+ if (err == 0) {
+ err = stat(FIRST_USE_PROFILE_FLAG, &buf);
+ if (err == 0) {
+ MojLogInfo(m_log, "Fist Use has completed, installing all "
+ "Activities");
+ m_firstUseOnly = false;
+ }
+ }
+}
+
+ActivityConfigurator::~ActivityConfigurator()
+{
+
+}
+
+bool ActivityConfigurator::CanCacheConfiguratorStatus(const std::string&) const
+{
+ MojLogTrace(m_log);
+ return false;
+}
+
+static void RemoveKey(MojObject& object, const MojChar *key)
+{
+ bool keydeleted;
+ object.del(key, keydeleted);
+}
+
+static bool StartsWith(const std::string& s1, const std::string& prefix)
+{
+ return prefix.length() <= s1.length() && memcmp(s1.c_str(), prefix.c_str(), prefix.length()) == 0;
+}
+
+MojErr ActivityConfigurator::ProcessConfig(const string& filePath, MojObject& params)
+{
+ MojLogTrace(m_log);
+
+ const std::string& creator = ParentId(filePath);
+
+ if (creator.empty()) {
+ MojLogError(m_log, "Service id for activity '%s' is empty - needs to be in an appropriate subdirectory or given as part of the service call", filePath.c_str());
+ return MojErrInvalidArg;
+ }
+
+ if (m_firstUseOnly) {
+ bool firstUseSafe;
+ if (!params.get(FIRST_USE_SAFE, firstUseSafe) || !firstUseSafe) {
+ MojLogDebug(m_log, "Running before first use but activity %s not marked as safe for configuration at this time", filePath.c_str());
+ return MojErrInProgress;
+ }
+ }
+
+ MojLogDebug(m_log, "ActivityConfigurator creator for %s is %s\n", filePath.c_str(), creator.c_str());
+
+ MojObject activity;
+ MojErr err;
+ err = params.getRequired(ACTIVITY, activity);
+ MojErrCheck(err);
+
+ ConfigType confType;
+
+ if (m_confType == ConfigUnknown) {
+ if (StartsWith(filePath, APP_DIR)) {
+ confType = ConfigApplication;
+ } else {
+ if (!StartsWith(filePath, SERVICE_DIR)) {
+ //Fix for DFISH-14510 turn down logging here
+ //MojLogWarning(m_log, "Deprecated usage: %s not in application or service subdirectory as required - assumed to be service", filePath.c_str());
+ }
+ confType = ConfigService;
+ }
+ } else {
+ confType = m_confType;
+ }
+
+ MojObject creatorObj;
+ switch (confType) {
+ case ConfigApplication:
+ err = creatorObj.putString(APPLICATION_ID, creator.c_str());
+ break;
+ case ConfigService:
+ err = creatorObj.putString(SERVICE_ID, creator.c_str());
+ break;
+ case ConfigUnknown:
+ // impossible case
+ assert(false);
+ break;
+ }
+
+ MojErrCheck(err);
+
+ err = activity.put(CREATOR, creatorObj);
+ MojErrCheck(err);
+ err = params.put(ACTIVITY, activity);
+ MojErrCheck(err);
+
+ // strip configurator-specific keys
+ // so that the schema on activity manager isn't violated
+ RemoveKey(params, FIRST_USE_SAFE);
+
+ return m_busClient.CreateRequest()->send(CreateCallback(filePath)->m_slot, ServiceName(), ACTIVITYMGR_CREATE_METHOD, params);
+}
+
+MojErr ActivityConfigurator::ProcessConfigRemoval(const string& filePath, MojObject& params)
+{
+ MojLogTrace(m_log);
+ MojErr err;
+
+ MojObject activity;
+ MojString activityName;
+
+ err = params.getRequired(ACTIVITY, activity); MojErrCheck(err);
+ err = activity.getRequired(NAME, activityName); MojErrCheck(err);
+
+ MojObject request(MojObject::TypeObject);
+ const std::string& creator = ParentId(filePath);
+
+ if (creator.empty()) {
+ MojLogError(m_log, "Service id for activity '%s' is empty - needs to be in an appropriate subdirectory or given as part of the service call", filePath.c_str());
+ return MojErrInvalidArg;
+ }
+
+ // {"activityName": "..."}
+ err = request.putString(ACTIVITY_NAME, activityName); MojErrCheck(err);
+ // {"activityName": "...", "creator": "..."}
+ err = request.putString(CREATOR, creator.c_str()); MojErrCheck(err);
+
+ return m_busClient.CreateRequest()->send(CreateCallback(filePath)->m_slot, ServiceName(), ACTIVITYMGR_REMOVE_METHOD, request);
+}
60 src/ActivityConfigurator.h
@@ -0,0 +1,60 @@
+// @@@LICENSE
+//
+// Copyright (c) 2009-2012 Hewlett-Packard Development Company, L.P.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// LICENSE@@@
+
+#ifndef ACTIVITYCONFIGURATOR_H_
+#define ACTIVITYCONFIGURATOR_H_
+
+#include "Configurator.h"
+
+class ActivityConfigurator : public Configurator
+{
+public:
+ ActivityConfigurator(const std::string& id, ConfigType confType, RunType type, BusClient& busClient, std::string configDirectory);
+ virtual ~ActivityConfigurator();
+
+protected:
+ virtual MojErr ProcessConfig(const std::string& filePath, MojObject& params);
+ virtual MojErr ProcessConfigRemoval(const std::string &filePath, MojObject &json);
+
+ virtual const char* ConfiguratorName() const;
+ virtual const char* ServiceName() const;
+ virtual ConfiguratorCallback* CreateCallback(const std::string &filePath);
+ virtual bool CanCacheConfiguratorStatus(const std::string &confFile) const;
+
+private:
+ static const char* const ACTIVITYMGR_BUS_ADDRESS;
+ static const char* const ACTIVITYMGR_CREATE_METHOD;
+ static const char* const ACTIVITYMGR_REMOVE_METHOD;
+ static const char* const ACTIVITY;
+ static const char* const CREATOR;
+ static const char* const APPLICATION_ID;
+ static const char* const SERVICE_ID;
+ static const char* const NAME;
+ static const char* const ACTIVITY_NAME;
+ static const char* const FIRST_USE_SAFE;
+ static const char* const APP_DIR;
+ static const char* const SERVICE_DIR;
+ static const char* const FIRST_USE_FLAG;
+ static const char* const FIRST_USE_PROFILE_FLAG;
+
+ bool m_firstUseOnly;
+
+ friend class ActivityConfigureResponse;
+};
+
+#endif /* ACTIVITYCONFIGURATOR_H_ */
633 src/BusClient.cpp
@@ -0,0 +1,633 @@
+// @@@LICENSE
+//
+// Copyright (c) 2009-2012 Hewlett-Packard Development Company, L.P.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// LICENSE@@@
+
+#include "BusClient.h"
+#include "db/MojDbServiceDefs.h"
+#include "core/MojServiceMessage.h"
+#include "ActivityConfigurator.h"
+#include "DbKindConfigurator.h"
+#include "DbPermissionsConfigurator.h"
+#include "FileCacheConfigurator.h"
+
+#include <algorithm>
+
+using namespace std;
+
+const char* const BusClient::SERVICE_NAME = "com.palm.configurator";
+const char* const BusClient::ROOT_BASE_DIR = "/etc/palm/";
+const char* const BusClient::OLD_DB_KIND_DIR = "db_kinds"; // deprecated
+const char* const BusClient::DB_KIND_DIR = "db/kinds";
+const char* const BusClient::DB_PERMISSIONS_DIR = "db/permissions";
+const char* const BusClient::TEMPDB_KIND_DIR = "tempdb/kinds";
+const char* const BusClient::TEMPDB_PERMISSIONS_DIR = "tempdb/permissions";
+const char* const BusClient::FILE_CACHE_CONFIG_DIR = "filecache_types";
+const char* const BusClient::ACTIVITY_CONFIG_DIR = "activities";
+const char* const BusClient::FIRST_BOOT_FILE = "/var/luna/preferences/ran-configurator";
+const char* const BusClient::BASE_CRYPTOFS = "/media/cryptofs/apps/";
+const char* const BusClient::BASE_ROOT = "/";
+const char* const BusClient::BASE_PALM_OFFSET = "usr/palm/";
+const char* const BusClient::APPS_DIR = "applications/";
+const char* const BusClient::SERVICES_DIR = "services/";
+const char* const BusClient::CONF_SUBDIR = "/configuration/";
+
+int main(int argc, char** argv)
+{
+ BusClient app;
+ return app.main(argc, argv);
+}
+
+static inline bool startsWith(const char *str, const std::string& prefix)
+{
+ return 0 == strncmp(str, prefix.c_str(), prefix.length());
+}
+
+BusClient::BusMethods::BusMethods(BusClient& client, MojLogger& log)
+: m_client(client), m_log(log)
+{
+ MojErr err = addMethod("run", (Callback) &BusMethods::Run);
+ if (err)
+ MojLogCritical(m_log, "failed to register run method: %i", err);
+
+ err = addMethod("scan", (Callback) &BusMethods::Scan);
+ if (err)
+ MojLogCritical(m_log, "failed to register scan method: %i", err);
+
+ err = addMethod("rescan", (Callback) &BusMethods::Rescan);
+ if (err)
+ MojLogCritical(m_log, "failed to register rescan method: %i", err);
+
+ err = addMethod("unconfigure", (Callback) &BusMethods::Unconfigure);
+ if (err)
+ MojLogCritical(m_log, "failed to register unconfigure method: %i", err);
+}
+
+static MojErr getTypes(MojObject typesArray, BusClient::ScanTypes &bitmask)
+{
+ MojObject::ConstArrayIterator it = typesArray.arrayBegin();
+ if (it == NULL)
+ MojErrThrowMsg(MojErrInvalidMsg, "'types' not an array");
+
+ for (MojObject::ConstArrayIterator ni = typesArray.arrayEnd(); it != ni; it++) {
+ const MojObject& element = *it;
+ MojString type;
+ MojErr err;
+
+ err = element.stringValue(type);
+ MojErrCheck(err);
+
+ if (type == "dbkinds")
+ bitmask |= BusClient::DBKINDS;
+ else if (type == "dbpermissions")
+ bitmask |= BusClient::DBPERMISSIONS;
+ else if (type == "filecache")
+ bitmask |= BusClient::FILECACHE;
+ else if (type == "activities")
+ bitmask |= BusClient::ACTIVITIES;
+ else
+ MojErrThrowMsg(MojErrInvalidMsg, "unrecognized type '%s'", type.data());
+ }
+
+ return MojErrNone;
+}
+
+MojErr BusClient::BusMethods::Run(MojServiceMessage* msg, MojObject& payload)
+{
+ MojLogTrace(m_log);
+
+ if (WorkEnqueued((Callback) &BusMethods::Run, msg, payload))
+ return MojErrNone;
+
+ try {
+ MojObject types;
+ MojErr err = payload.getRequired("types", types);
+ MojErrCheck(err);
+
+ ScanTypes bitmask;
+ err = getTypes(types, bitmask);
+ MojErrCheck(err);
+
+ m_client.m_msg.reset(msg);
+ m_client.Run(bitmask);
+
+ m_client.RunNextConfigurator();
+
+ } catch (const std::exception& e) {
+ MojErrThrowMsg(MojErrInternal, "%s", e.what());
+ } catch(...) {
+ MojErrThrowMsg(MojErrInternal, "uncaught exception");
+ }
+
+ return MojErrNone;
+}
+
+bool BusClient::BusMethods::WorkEnqueued(Callback callback, MojServiceMessage *msg, MojObject &payload)
+{
+ if (m_client.m_msg.get() == NULL)
+ return false;
+
+ BusClient::PendingWork pending;
+ pending.instance = this;
+ pending.callback = callback;
+ pending.msg.reset(msg);
+ pending.payload = payload;
+ m_client.m_pending.push_back(pending);
+ return true;
+}
+
+MojErr BusClient::BusMethods::Rescan(MojServiceMessage* msg, MojObject& payload)
+{
+ MojLogTrace(m_log);
+
+ if (WorkEnqueued((Callback) &BusMethods::Rescan, msg, payload))
+ return MojErrNone;
+
+ return ScanRequest(msg, payload, BusClient::ForceRescan);
+}
+
+MojErr BusClient::BusMethods::Scan(MojServiceMessage* msg, MojObject& payload)
+{
+ MojLogTrace(m_log);
+
+ if (WorkEnqueued((Callback) &BusMethods::Scan, msg, payload))
+ return MojErrNone;
+
+ return ScanRequest(msg, payload, BusClient::LazyScan);
+}
+
+MojErr BusClient::BusMethods::ScanRequest(MojServiceMessage* msg, MojObject& payload, ConfigurationMode confmode)
+{
+ try {
+ MojErr err;
+ if (!payload.type() == MojObject::TypeArray) {
+ MojErrThrowMsg(MojErrInternal, "invalid message format");
+ }
+
+ m_client.m_msg.reset(msg);
+
+ for (MojObject::ConstArrayIterator it = payload.arrayBegin(); it != payload.arrayEnd(); it++) {
+ const MojObject& request = *it;
+ MojString locationStr;
+ MojString typeStr;
+ MojString app;
+ BusClient::PackageType type;
+ BusClient::PackageLocation location;
+
+ err = request.getRequired("id", app);
+ MojErrCheck(err);
+
+ err = request.getRequired("type", typeStr);
+ MojErrCheck(err);
+
+ err = request.getRequired("location", locationStr);
+ MojErrCheck(err);
+
+ if (typeStr == "app") {
+ type = BusClient::Application;
+ } else if (typeStr == "service") {
+ type = BusClient::Service;
+ } else {
+ MojErrThrow(MojErrInvalidMsg);
+ }
+
+ if (locationStr == "system") {
+ location = BusClient::System;
+ } else if (locationStr == "third party") {
+ location = BusClient::ThirdParty;
+ } else {
+ MojErrThrow(MojErrInvalidMsg);
+ }
+
+ m_client.Scan(confmode, app, type, location);
+ }
+
+ m_client.RunNextConfigurator();
+ } catch (const std::exception& e) {
+ MojErrThrowMsg(MojErrInternal, "%s", e.what());
+ } catch (...) {
+ MojErrThrowMsg(MojErrInternal, "uncaught exception");
+ }
+
+ return MojErrNone;
+}
+
+MojErr BusClient::BusMethods::Unconfigure(MojServiceMessage *msg, MojObject &payload)
+{
+ MojLogTrace(m_log);
+
+ if (WorkEnqueued((Callback) &BusMethods::Unconfigure, msg, payload))
+ return MojErrNone;
+
+ try {
+ MojErr err;
+ if (!payload.type() == MojObject::TypeArray) {
+ MojErrThrowMsg(MojErrInternal, "invalid message format");
+ }
+
+ m_client.m_msg.reset(msg);
+
+ for (MojObject::ConstArrayIterator it = payload.arrayBegin(); it != payload.arrayEnd(); it++) {
+ const MojObject& request = *it;
+ MojString locationStr;
+ MojString typeStr;
+ MojObject typesArray;
+ MojString app;
+ BusClient::PackageType type;
+ BusClient::PackageLocation location;
+ BusClient::ScanTypes types;
+
+ err = request.getRequired("id", app);
+ MojErrCheck(err);
+
+ err = request.getRequired("type", typeStr);
+ MojErrCheck(err);
+
+ if (!request.get("types", typesArray)) {
+ types = BusClient::ACTIVITIES | BusClient::FILECACHE | BusClient::DBKINDS | BusClient::DBPERMISSIONS;
+ } else {
+ err = getTypes(typesArray, types);
+ MojErrCheck(err);
+ }
+
+ err = request.getRequired("location", locationStr);
+ MojErrCheck(err);
+
+ if (typeStr == "app") {
+ type = BusClient::Application;
+ } else if (typeStr == "service") {
+ type = BusClient::Service;
+ } else {
+ MojErrThrow(MojErrInvalidMsg);
+ }
+
+ if (locationStr == "system") {
+ location = BusClient::System;
+ } else if (locationStr == "third party") {
+ location = BusClient::ThirdParty;
+ } else {
+ MojErrThrow(MojErrInvalidMsg);
+ }
+
+ m_client.Unconfigure(app, type, location, types);
+ }
+
+ m_client.RunNextConfigurator();
+
+ } catch (const std::exception& e) {
+ MojErrThrowMsg(MojErrInternal, "%s", e.what());
+ } catch (...) {
+ MojErrThrowMsg(MojErrInternal, "uncaught exception");
+ }
+
+ return MojErrNone;
+}
+
+BusClient::BusClient()
+: m_log("configurator"),
+ m_dbClient(&m_service),
+ m_tempDbClient(&m_service, MojDbServiceDefs::TempServiceName),
+ m_configuratorsCompleted(0),
+ m_launchedAsService(false),
+ m_shuttingDown(false),
+ m_timerTimeout(0)
+{
+}
+
+BusClient::~BusClient()
+{
+}
+
+MojDbClient& BusClient::GetDbClient()
+{
+ return m_dbClient;
+}
+
+MojLogger& BusClient::GetLogger()
+{
+ return m_log;
+}
+
+MojRefCountedPtr<MojServiceRequest> BusClient::CreateRequest()
+{
+ MojRefCountedPtr<MojServiceRequest> req;
+ m_service.createRequest(req);
+ return req;
+}
+
+MojRefCountedPtr<MojServiceRequest> BusClient::CreateRequest(const char *forgedAppId)
+{
+ MojRefCountedPtr<MojServiceRequest> req;
+ m_service.createRequest(req, false, forgedAppId);
+ return req;
+}
+
+MojErr BusClient::open()
+{
+ MojLogTrace(m_log);
+
+ // set up luna-service
+
+ MojErr err = Base::open();
+ MojErrCheck(err);
+
+ err = m_service.open(SERVICE_NAME);
+ MojErrCheck(err);
+
+ err = m_service.attach(m_reactor.impl());
+ MojErrCheck(err);
+
+ // If we're not launched as a service, then we're launching at boot,
+ // which means we should run all the configurators.
+ if (!m_launchedAsService) {
+ MojLogInfo(m_log, "Not run as dynamic service - run startup configurations");
+ Run(DBKINDS | DBPERMISSIONS | FILECACHE | ACTIVITIES);
+ RunNextConfigurator();
+ } else {
+ MojLogInfo(m_log, "launched as service");
+
+ m_methods.reset(new BusMethods(*this, m_log));