summaryrefslogtreecommitdiffstats
path: root/meta-app-framework/recipes-graphics/wayland/agl-compositor-init_agl-app-fw.inc
diff options
context:
space:
mode:
Diffstat (limited to 'meta-app-framework/recipes-graphics/wayland/agl-compositor-init_agl-app-fw.inc')
-rw-r--r--meta-app-framework/recipes-graphics/wayland/agl-compositor-init_agl-app-fw.inc46
1 files changed, 46 insertions, 0 deletions
diff --git a/meta-app-framework/recipes-graphics/wayland/agl-compositor-init_agl-app-fw.inc b/meta-app-framework/recipes-graphics/wayland/agl-compositor-init_agl-app-fw.inc
new file mode 100644
index 000000000..eef88a60c
--- /dev/null
+++ b/meta-app-framework/recipes-graphics/wayland/agl-compositor-init_agl-app-fw.inc
@@ -0,0 +1,46 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/agl-compositor-init:"
+
+SRC_URI = " \
+ file://agl-compositor.conf \
+ file://agl-compositor.service.in \
+ file://agl-compositor.socket \
+ "
+
+# Reset systemd services list
+SYSTEMD_SERVICE:${PN} = ""
+
+do_install() {
+ # Process ".in" files
+ files=agl-compositor.service.in
+ for f in ${files}; do
+ g=${f%.in}
+ if [ "${f}" != "${g}" ]; then
+ sed -e "s,@AGL_COMPOSITOR_ARGS@,${AGL_COMPOSITOR_ARGS},g" \
+ ${WORKDIR}/${f} > ${WORKDIR}/${g}
+ fi
+ done
+
+ install -d ${D}${systemd_system_unitdir}/agl-session@agl-driver.service.d
+ install -m 0644 ${WORKDIR}/agl-compositor.conf \
+ ${D}${systemd_system_unitdir}/agl-session@agl-driver.service.d/agl-compositor.conf
+
+ install -D -p -m0644 ${WORKDIR}/agl-compositor.service ${D}${systemd_user_unitdir}/agl-compositor.service
+ install -D -p -m0644 ${WORKDIR}/agl-compositor.socket ${D}${systemd_user_unitdir}/agl-compositor.socket
+
+ # Enable the compositor as part of the user session
+ install -d ${D}${systemd_user_unitdir}/agl-session.target.wants
+ ln -s ../agl-compositor.service ${D}${systemd_user_unitdir}/agl-session.target.wants/agl-compositor.service
+}
+
+FILES:${PN} = "\
+ ${systemd_system_unitdir} \
+ ${systemd_user_unitdir} \
+"
+
+RDEPENDS:${PN} = " \
+ agl-compositor \
+ agl-session \
+ weston-ini-conf \
+"
+
+RCONFLICTS:${PN} = "weston-init"
{ color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
/*
 * Copyright (C) 2015, 2016 "IoT.bzh"
 * Author "Romain Forlot" <romain.forlot@iot.bzh>
 * Author "Loic Collignon" <loic.collignon@iot.bzh>
 *
 * 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.
 */

#pragma once

#include <string>
#include <json-c/json.h>
#include <sys/timeb.h>

#include "openxc.pb.h"

/**
 * @fn openxc_VehicleMessage build_VehicleMessage_with_SimpleMessage(openxc_DynamicField_Type type, const openxc_SimpleMessage& message);
 *
 * @brief Build a specific VehicleMessage containing a SimpleMessage.
 *
 * @param[in] type - The type of message to build
 * @param[in] message - simple message to include into openxc_VehicleMessage
 *
 * @return a vehicle message including simple message that will be convert into 
 * a JSON object before being pushed to the subscribers
 */
openxc_VehicleMessage build_VehicleMessage_with_SimpleMessage(openxc_DynamicField_Type type, const openxc_SimpleMessage& message);

/**
 * @fn openxc_SimpleMessage build_SimpleMessage(const std::string& name, const openxc_DynamicField& value);
 *
 * @brief Build an openxc_SimpleMessage associating a name to an openxc_DynamicField
 *
 * @param[in] name - const string reference name to assign to the created SimpleMessage
 *  this will set has_name member to true and assign name to the name member. Maximum size for name is 
 *  set to 100 char.
 * @param[in] value - const reference with DynamicField to assign to SimpleMessage
 *  value.
 *
 * @return an openxc_SimpleMessage struct initialized with name and value provided.
 */
openxc_SimpleMessage build_SimpleMessage(const std::string& name, const openxc_DynamicField& value);

/**
 * @fn openxc_DynamicField build_DynamicField(const std::string& value);
 *
 * @brief Build an openxc_DynamicField with a string value
 *
 * @param[in] value - const string reference value to assign to builded
 *  openxc_DynamicField.
 *
 * @return openxc_DynamicField initialized with a string value.
 */
openxc_DynamicField build_DynamicField(const std::string& value);

/**
 * @fn openxc_DynamicField build_DynamicField(double value);
 *
 * @brief Build an openxc_DynamicField with a double value
 *
 * @param[in] value - double value to assign to builded openxc_DynamicField.
 *
 * @return openxc_DynamicField initialized with a double value.
 */
openxc_DynamicField build_DynamicField(double value);

/**
 * @fn openxc_DynamicField build_DynamicField(bool value);
 *
 * @brief Build an openxc_DynamicField with a boolean value
 *
 * @param[in] value - boolean value to assign to builded openxc_DynamicField.
 *
 * @return openxc_DynamicField initialized with a boolean value.
 */
openxc_DynamicField build_DynamicField(bool value);

/**
 * @fn void jsonify_DynamicField(const openxc_DynamicField& field, json_object* value);
 *
 * @brief Make a JSON object from a DynamicField
 *
 * @param[in] field - openxc_DynamicField struct to convert into
 *  a json object.
 * @param[out] value - pointer to the object to set up.
 */
void jsonify_DynamicField(const openxc_DynamicField& field, json_object* value);

/**
 * @fn openxc_SimpleMessage get_simple_message(const openxc_VehicleMessage& v_msg);
 *
 * @brief Extract the simple message value from an openxc_VehicleMessage
 *  and return it. If there isn't SimpleMessage in the VehicleMessage then
 *  returned value will be a SimpleMessage with all field set at false.
 *  DynamicField from SimpleMessage will be boolean DynamicField set to false too.
 *
 * @param[in] v_msg - const reference to openxc_VehicleMessage
 *
 * @return A simpleMessage from the provided VehicleMessage.
 */
openxc_SimpleMessage get_simple_message(const openxc_VehicleMessage& v_msg);

/**
 * @fn json_object* jsonify_simple(const openxc_SimpleMessage& s_msg);
 *
 * @brief Make a JSON object from a SimpleMessage
 *
 * @param[in] s_msg - const reference to an openxc_SimpleMessage 
 * struct to convert into a json object.
 * @param[out] json - pointer with the DynamicField converted into json object
 * 
 * @return True if SimpleMessage has been transformed into json object
 *  and false if not. In such case, a json object is returned { "error": "error msg"}
 */
bool jsonify_simple(const openxc_SimpleMessage& s_msg, json_object* json);