summaryrefslogtreecommitdiffstats
path: root/common/scripts/application-lifecycle.sh
diff options
context:
space:
mode:
Diffstat (limited to 'common/scripts/application-lifecycle.sh')
-rwxr-xr-x[-rw-r--r--]common/scripts/application-lifecycle.sh40
1 files changed, 38 insertions, 2 deletions
diff --git a/common/scripts/application-lifecycle.sh b/common/scripts/application-lifecycle.sh
index 9e3a92c..15d505c 100644..100755
--- a/common/scripts/application-lifecycle.sh
+++ b/common/scripts/application-lifecycle.sh
@@ -1,7 +1,14 @@
#!/bin/sh
+set -x
+
export TERM=dumb
+SERVICE_PLATFORM=0
+SERVICE_USER=0
+APPLICATION_USER=0
+AGLDRIVER=agl-driver
+
while [ $# -ge 1 ]
do
case $1 in
@@ -49,6 +56,19 @@ do
else
echo "DEBUG: not hidden package"
fi
+ # a service sets urn:AGL:widget:provided-api
+ if $(grep "urn:AGL:widget:provided-api" config.xml) ; then
+ # we are a service, now determine the scope ...
+ if $(grep "urn:AGL:permission::partner:scope-platform" config.xml) ; then
+ SERVICE_PLATFORM=1
+ else
+ SERVICE_USER=1
+ fi
+ else
+ # we are an application
+ APPLICATION_USER=1
+ # no other type known (yet)
+ fi
else
echo "DEBUG: fail to unzip"
fi
@@ -150,8 +170,24 @@ do
echo "DEBUG: check if we see the package with systemctl -a (before start)"
systemctl -a |grep "afm.*$WGTNAME"
+ # here we need to differ between SERVICE_PLATFORM, SERVICE_USER and APPLICATION_USER
+ if test x"1" = x"$SERVICE_PLATFORM" ; then
+ PRE_CMD="su -c"
+ fi
+ if test x"1" = x"$SERVICE_USER" ; then
+ PRE_CMD="su $AGLDRIVER -c"
+ fi
+ if test x"1" = x"$APPLICATION_USER" ; then
+ PRE_CMD="su $AGLDRIVER -c"
+ fi
+
+ # construct the command to call
+ CMD=( "$PRE_CMD" )
+ CMD+=( " ' " )
+ CMD+=( "afm-util start $NAMEID" )
+ CMD+=( " ' " )
echo "DEBUG: start $NAMEID"
- afm-util start $NAMEID > "rid"
+ exec "${CMD[@]}" > "rid"
if [ $? -ne 0 ];then
echo "ERROR: afm-util start"
lava-test-case afm-util-start-$WGTNAME --result fail
@@ -200,7 +236,7 @@ do
fi
echo "DEBUG: start2 $NAMEID"
- afm-util start $NAMEID
+ exec "${CMD[@]}"
if [ $? -ne 0 ];then
echo "ERROR: afm-util start2"
lava-test-case afm-util-start2-$WGTNAME --result fail
.Whitespace */ .highlight .mb { color: #ae81ff } /* Literal.Number.Bin */ .highlight .mf { color: #ae81ff } /* Literal.Number.Float */ .highlight .mh { color: #ae81ff } /* Literal.Number.Hex */ .highlight .mi { color: #ae81ff } /* Literal.Number.Integer */ .highlight .mo { color: #ae81ff } /* Literal.Number.Oct */ .highlight .sa { color: #e6db74 } /* Literal.String.Affix */ .highlight .sb { color: #e6db74 } /* Literal.String.Backtick */ .highlight .sc { color: #e6db74 } /* Literal.String.Char */ .highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */ .highlight .sd { color: #e6db74 } /* Literal.String.Doc */ .highlight .s2 { color: #e6db74 } /* Literal.String.Double */ .highlight .se { color: #ae81ff } /* Literal.String.Escape */ .highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */ .highlight .si { color: #e6db74 } /* Literal.String.Interpol */ .highlight .sx { color: #e6db74 } /* Literal.String.Other */ .highlight .sr { color: #e6db74 } /* Literal.String.Regex */ .highlight .s1 { color: #e6db74 } /* Literal.String.Single */ .highlight .ss { color: #e6db74 } /* Literal.String.Symbol */ .highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #a6e22e } /* Name.Function.Magic */ .highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */ .highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ .highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ .highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */ .highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ } @media (prefers-color-scheme: light) { .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { 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 */ }
From 10327a700491ba7412ce1296cb709b4d3303326f Mon Sep 17 00:00:00 2001
From: Petr Nechaev <petr.nechaev@cogentembedded.com>
Date: Wed, 29 Jul 2015 17:58:49 +0300
Subject: [PATCH 4/9] cansocketbcm: Fix reading of frames in case of RX_TIMEOUT

If bcms.hdr.nframes==0 we must not read any frames.
Also, frame size can vary with the number of messages.
---
 plugins/common/cansocketbcm.cpp | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/plugins/common/cansocketbcm.cpp b/plugins/common/cansocketbcm.cpp
index d923ce3..7ee663c 100644
--- a/plugins/common/cansocketbcm.cpp
+++ b/plugins/common/cansocketbcm.cpp
@@ -145,7 +145,7 @@ int CANSocketBCM::waitData(unsigned int timeout)
 
 /**
  * BCM header with one message.
- * @note hdr.nframes must always be 0 or 1.
+ * @note As a result, hdr.nframes must always be 0 or 1.
  */
 struct __attribute__ ((__packed__)) bcm_msg_one{
     struct bcm_msg_head hdr;
@@ -190,7 +190,7 @@ CANSocket::CANSocketReadSuccess CANSocketBCM::readMessage(CANFrameInfo& message)
     switch (bcms.hdr.opcode)
     {
     case RX_CHANGED:
-        if (bcms.hdr.nframes >= 1 && nbytes == sizeof(bcms))
+        if (bcms.hdr.nframes >= 1 && nbytes == sizeof(bcm_msg_head) + bcms.hdr.nframes*sizeof(can_frame))
         {
             if (bcms.hdr.nframes > 1)
             {
@@ -211,10 +211,24 @@ CANSocket::CANSocketReadSuccess CANSocketBCM::readMessage(CANFrameInfo& message)
             return CANSocket::CANSocketReadSuccess::READING_FAILED;
         }
     case RX_TIMEOUT:
-        memcpy(&message.frame, &bcms.frames[0], sizeof(bcms.frames[0]));
-        message.frame.can_id = bcms.hdr.can_id; //doubtful. Do we need to override this?
-        message.status = CANFrameInfo::CANMessageStatus::TIMEOUT;
-        return CANSocket::CANSocketReadSuccess::READING_SUCCEEDED;
+        if (bcms.hdr.nframes >= 0 && nbytes == sizeof(bcm_msg_head) + bcms.hdr.nframes*sizeof(can_frame))
+        {
+            if (bcms.hdr.nframes > 0)
+            {
+                memcpy(&message.frame, &bcms.frames[0], sizeof(bcms.frames[0]));
+            }
+            message.frame.can_id = bcms.hdr.can_id; //doubtful. Do we need to override this?
+            message.status = CANFrameInfo::CANMessageStatus::TIMEOUT;
+            return CANSocket::CANSocketReadSuccess::READING_SUCCEEDED;
+        }
+        else
+        {
+            LOG_ERROR("Unexpected data from the socket"
+                      << " " << bcms.hdr.opcode
+                      << " " << bcms.hdr.nframes
+                      << " " << nbytes);
+            return CANSocket::CANSocketReadSuccess::READING_FAILED;
+        }
 
     case TX_EXPIRED:
         // do nothing
-- 
1.9.1