2 * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 ///////////////////////////////////////////////////////////////////////////////
18 /// \ingroup tag_SystemManager
19 /// \brief This file provides support for System Manager process launching.
21 ///////////////////////////////////////////////////////////////////////////////
27 #include "ss_sm_dynamic_launch_table.h"
28 #include "ss_sm_systemmanagerlog.h"
30 DynamicLaunchBase::DynamicLaunchBase():
32 m_iterOrderedGroup() {
36 DynamicLaunchBase::~DynamicLaunchBase() {
39 UI_32 DynamicLaunchBase::get_id() const {
40 // FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " DLB: Active Group ID is %d", *m_iterOrderedGroup);
41 return *m_iterOrderedGroup;
44 UI_32 DynamicLaunchBase::advance_id() {
48 // FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " DLB: Active Group ID is %d", *m_iterOrderedGroup);
49 return *m_iterOrderedGroup;
52 UI_32 DynamicLaunchBase::decrement_id() {
53 if (!is_begin()) { // LCOV_EXCL_BR_LINE 5: stdlib error case.
56 // FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " DLB: Active Group ID is %d", *m_iterOrderedGroup);
57 return *m_iterOrderedGroup;
60 BOOL DynamicLaunchBase::is_begin() {
61 // FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " DLB: Active Group ID is %d", *m_iterOrderedGroup);
62 return (m_iterOrderedGroup == m_vOrderedGroup.begin());
65 BOOL DynamicLaunchBase::is_end() {
66 // FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " DLB: Active Group ID is %d", *m_iterOrderedGroup);
67 DynamicOrderedIter l_it = m_iterOrderedGroup;
69 return (l_it == m_vOrderedGroup.end());
72 VOID DynamicLaunchBase::to_begin() {
73 m_iterOrderedGroup = m_vOrderedGroup.begin();
77 VOID DynamicLaunchBase::to_end() {
78 m_iterOrderedGroup = m_vOrderedGroup.end();
83 VOID DynamicLaunchBase::print_info() {
85 std::stringstream l_logMsg;
86 DynamicOrderedIter l_dyn_iter = m_vOrderedGroup.begin();
87 for (; l_dyn_iter != m_vOrderedGroup.end(); l_dyn_iter++) {
88 l_logMsg << std::endl << "Index: " << std::setw(2) << idx
89 << " Group Id: " << std::setw(2) << *l_dyn_iter;
94 std::string l_logStr = l_logMsg.str();
95 FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "%s", l_logStr.c_str());
98 DynamicLauncher::DynamicLauncher() :DynamicLaunchBase(),
100 m_nLaunchBeforeGroupId(0),
101 m_nLaunchAfterGroupId(0),
102 m_nAviageTriggerId(0),
103 m_bDynamicLaunchEnabled(FALSE), // by default until set by some one will this be disabled.
104 m_eSourceType(SS_SOURCE_NA) { // invalid
107 DynamicLauncher::~DynamicLauncher() {
110 BOOL DynamicLauncher::dynamic_launch_enabled() const { // LCOV_EXCL_START 8: Dead code
111 AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
112 return m_bDynamicLaunchEnabled;
116 VOID DynamicLauncher::configure_dynamic_launch(const SS_SOURCE& source_type,
117 GroupLaunchMap& group_info, LaunchOrderedVector& order_info) {
118 FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+");
119 m_eSourceType = source_type;
120 // "Dynamic Launch" is not used due to high dependency on a service table
121 create_normal_launch_vector(group_info, order_info);
122 FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-");
125 BOOL DynamicLauncher::is_inGroupLaunchMap(UI_32& id,
126 GroupLaunchMap& group_info) { // LCOV_EXCL_START 8: Dead code
127 AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
128 FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+");
130 GroupLaunchMapIter l_grp_iter = group_info.find(id);
131 if (l_grp_iter != group_info.end()) {
134 FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-");
139 // LCOV_EXCL_START 8: Dead code
140 DynamicLaunchInfo* DynamicLauncher::get_dynamic_source_info(
141 const SS_SOURCE& source_type, BOOL& source_trigger,
142 BOOL& is_aviage_required) {
143 AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
144 UI_32 num_of_items = static_cast<UI_32>(_countof(g_arrDynamicLaunchTableCfg));
145 DynamicLaunchInfo * point_to_this = NULL;
146 for (UI_32 arr_idx = 0; arr_idx < num_of_items; arr_idx++) {
147 if (g_arrDynamicLaunchTableCfg[arr_idx].source == source_type) {
148 source_trigger = g_arrDynamicLaunchTableCfg[arr_idx].group_trigger;
149 point_to_this = &g_arrDynamicLaunchTableCfg[arr_idx];
150 if ((SS_SOURCE_FM == source_type) || (SS_SOURCE_AM == source_type)
151 || (SS_SOURCE_FM_DAB == source_type)
152 || (SS_SOURCE_SDARS == source_type)) {
153 is_aviage_required = FALSE;
159 return point_to_this;
163 UI_32 DynamicLauncher::get_id_using_group_name(PCSTR group_name,
164 GroupLaunchMap& group_info) { // LCOV_EXCL_START 8: Dead code
165 AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
166 GroupLaunchMapIter l_grp_iter = group_info.begin();
167 UI_32 rtn_grp_id = 0;
168 for (; l_grp_iter != group_info.end(); l_grp_iter++) {
169 if (0 == strcmp(group_name, l_grp_iter->second.name.c_str())) {
170 rtn_grp_id = l_grp_iter->second.id;
179 VOID DynamicLauncher::create_normal_launch_vector(GroupLaunchMap& group_info,
180 LaunchOrderedVector& order_info) {
181 m_vOrderedGroup.clear();
183 if (order_info.size() != 0) { // LCOV_EXCL_BR_LINE 6: To initialize conditions for launching SystemManager
184 // LCOV_EXCL_START 6: To initialize conditions for launching SystemManager
185 AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
186 LaunchOrderedIter l_ord_iter = order_info.begin();
187 while (l_ord_iter != order_info.end()) {
188 if (is_inGroupLaunchMap(*l_ord_iter, group_info) == TRUE) {
189 m_vOrderedGroup.push_back(*l_ord_iter);
195 GroupLaunchMapIter l_grp_iter = group_info.begin();
196 while (l_grp_iter != group_info.end()) {
197 m_vOrderedGroup.push_back(l_grp_iter->second.id);
201 m_iterOrderedGroup = m_vOrderedGroup.begin();
202 m_bDynamicLaunchEnabled = TRUE;
206 VOID DynamicLauncher::copyDynOrderedVector(DynamicModuleStart& Start) {
207 Start.setGroupVector(this->m_vOrderedGroup);
210 // DynamicModuleStart
212 DynamicModuleStart::DynamicModuleStart() :DynamicLaunchBase() {
215 DynamicModuleStart::~DynamicModuleStart() {
218 VOID DynamicModuleStart::setGroupVector(DynamicOrderedVector& Vector) {
219 m_vOrderedGroup.assign(Vector.begin(), Vector.end());
220 m_iterOrderedGroup = m_vOrderedGroup.begin();
221 } // LCOV_EXCL_BR_LINE 10: Final line