summaryrefslogtreecommitdiffstats
path: root/flounder_6.0.2.xml
blob: 1bf1806ea02e2875329f81f0fcf339a305d1c30d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote fetch="https://gerrit.automotivelinux.org/gerrit/" name="agl" pushurl="ssh://gerrit.automotivelinux.org:29418" review="https://gerrit.automotivelinux.org/gerrit/"/>
  <remote fetch="https://github.com/" name="github"/>
  <remote fetch="git://git.openembedded.org/" name="openembedded"/>
  <remote fetch="git://code.qt.io/" name="qt.io"/>
  <remote fetch="git://git.yoctoproject.org/" name="yocto"/>
  
  <default remote="agl" revision="refs/tags/flounder/6.0.2" sync-j="4"/>
  
  <project name="01org/meta-security-isafw" path="meta-security-isafw" remote="github" revision="489abdc65cefb566d696c8b218aa0b9b99a350ae" upstream="master"/>
  <project name="AGL/meta-agl" path="meta-agl"/>
  <project name="AGL/meta-agl-demo" path="meta-agl-demo"/>
  <project name="AGL/meta-agl-devel" path="meta-agl-devel"/>
  <project name="AGL/meta-agl-extra" path="meta-agl-extra"/>
  <project name="AGL/meta-renesas-rcar-gen3" path="meta-renesas-rcar-gen3"/>
  <project name="CogentEmbedded/meta-rcar" path="meta-rcar" remote="github" revision="a0551596548ef3a4c9132161f3d9c4ae538d6fdc" upstream="v3.7.0"/>
  <project name="advancedtelematic/meta-updater" path="meta-updater" remote="github" revision="ff555e8690eb47177ade42dc6912ae17a759cc45" upstream="rocko"/>
  <project name="advancedtelematic/meta-updater-qemux86-64" path="meta-updater-qemux86-64" remote="github" revision="697632ddd98ed7ae3dbd0bd84abb04079767bc56" upstream="rocko"/>
  <project name="boundarydevices/meta-boundary" path="meta-boundary" remote="github" revision="f96f41b2e5beda2b51acb702d082568898b36a68" upstream="rocko"/>
  <project name="kraj/meta-altera" path="meta-altera" remote="github" revision="14e08a419cb9d4017f40360c14fcc3c2c1ce8e42" upstream="rocko"/>
  <project name="meta-freescale" remote="yocto" revision="a4158e3425a79720ddc4c02e76251d567bdceb51" upstream="rocko"/>
  <project name="meta-gplv2" remote="yocto" revision="f875c60ecd6f30793b80a431a2423c4b98e51548" upstream="rocko"/>
  <project name="meta-intel" remote="yocto" revision="718bb384942675437c081f6795da7f421da1fee6" upstream="rocko"/>
  <project name="meta-oic" remote="yocto" revision="6e831e4bcdfa6ab8c26eb4fca4bdc98faf028818" upstream="1.2.1"/>
  <project name="meta-openembedded" remote="openembedded" revision="eae996301d9c097bcbeb8046f08041dc82bb62f8" upstream="rocko"/>
  <project name="meta-qcom" remote="yocto" revision="955ce2625de5d8c7fe313bd4630c8a290e4b96f8" upstream="rocko"/>
  <project name="meta-qt5/meta-qt5" path="meta-qt5" remote="github" revision="682ad61c071a9710e9f9d8a32ab1b5f3c14953d1" upstream="rocko"/>
  <project name="meta-raspberrypi" remote="yocto" revision="8e4c537d84fdde8e3b4642d0dda2c0f4af76d52f" upstream="rocko"/>
  <project name="meta-security" remote="yocto" revision="8f6969a775fa6afbf553e72ba83e71197780b2d8" upstream="master"/>
  <project name="meta-ti" remote="yocto" revision="ed83a43c6a76875ee5f0388b3b60a28f2a373a10" upstream="rocko"/>
  <project name="meta-virtualization" remote="yocto" revision="bd77388f31929f38e7d4cc9c711f0f83f563007e" upstream="rocko"/>
  <project name="phongt/meta-sdl" path="meta-sdl" remote="github" revision="60c9fe8a4a9c6ca95f222685f8d6248f16236f2a" upstream="release/4.4.0"/>
  <project name="poky" remote="yocto" revision="05711ba18587aaaf4a9c465a1dd4537f27ceda93" upstream="rocko"/>
</manifest>
>*alm_inst_ptr); /*------------------------------------------------------------------------------------------------*/ /* Implementation of class CApiLockingManager */ /*------------------------------------------------------------------------------------------------*/ /*! \brief Constructor of the API locking manager class. * \param self Instance pointer * \param tm_ptr Reference to timer management instance * \param eh_ptr Reference to event handler instance * \param mns_inst_id MOST NetServices instance ID */ void Alm_Ctor(CApiLockingManager *self, CTimerManagement *tm_ptr, CEventHandler *eh_ptr, uint8_t mns_inst_id) { MISC_MEM_SET(self, 0, sizeof(*self)); T_Ctor(&self->garbage_collector); self->tm_ptr = tm_ptr; self->eh_ptr = eh_ptr; self->mns_inst_id = mns_inst_id; /* Observe internal errors and events */ Mobs_Ctor(&self->internal_error_obs, self, EH_M_TERMINATION_EVENTS, &Alm_HandleInternalErrors); Eh_AddObsrvInternalEvent(self->eh_ptr, &self->internal_error_obs); } /*! \brief Handles internal errors and events * \param self Instance pointer * \param error_code_ptr Reference to reported error code */ static void Alm_HandleInternalErrors(void *self, void *error_code_ptr) { CApiLockingManager *self_ = (CApiLockingManager *)self; MISC_UNUSED(error_code_ptr); Tm_ClearTimer(self_->tm_ptr, &self_->garbage_collector); /* Clear timeout */ Alm_ResetRegisteredApis(self_); /* Reset all registered APIs */ } /*! \brief Checks for API locking timeouts. This method is the callback function of timer * \c garbage_collector. * \param self Instance pointer */ static void Alm_GarbageCollector(void *self) { CApiLockingManager *self_ = (CApiLockingManager *)self; (void)Dl_Foreach(&self_->api_list, &Alm_CheckRegisteredApi, self_); } /*! \brief This method is used by Alm_GarbageCollector() to process each registered API. * \param current_alm_ptr Reference to the current API * \param alm_inst_ptr Instance of the API locking manager * \return \c false to process all registered APIs */ static bool Alm_CheckRegisteredApi(void *current_alm_ptr, void *alm_inst_ptr) { CApiLockingManager *self = (CApiLockingManager *)alm_inst_ptr; CApiLocking *alm_ptr_ = (CApiLocking *)current_alm_ptr; MISC_UNUSED(self); if(alm_ptr_->timeout_mask != 0U) { Alm_ModuleMask_t tmp_mask = 1U; while(alm_ptr_->timeout_mask != 0U) { if(tmp_mask == (tmp_mask & alm_ptr_->timeout_mask)) { Ssub_Notify(&alm_ptr_->subject, &tmp_mask, false); alm_ptr_->method_mask &= ~tmp_mask; alm_ptr_->timeout_mask &= ~tmp_mask; } tmp_mask <<= 1; } Alm_ClearTimeout(self); } if(alm_ptr_->method_mask != 0U) { alm_ptr_->timeout_mask = alm_ptr_->method_mask; } return false; } /*! \brief Registers a new API locking object. * \param self Instance pointer * \param al_ptr Reference to the API to register */ void Alm_RegisterApi(CApiLockingManager *self, CApiLocking *al_ptr) { Dl_InsertTail(&self->api_list, &al_ptr->node); Dln_SetData(&al_ptr->node, al_ptr); al_ptr->alm_ptr = self; } /*! \brief Starts the garbage collecting timer. * \param self Instance pointer */ static void Alm_StartTimeout(CApiLockingManager *self) { if(T_IsTimerInUse(&self->garbage_collector) == false) { Tm_SetTimer(self->tm_ptr, &self->garbage_collector, &Alm_GarbageCollector, self, ALM_GARBAGE_COLLECTOR_INTERVAL, ALM_GARBAGE_COLLECTOR_INTERVAL); } } /*! \brief Clears the garbage collecting timer. The timer is clear if no API locking flag is * currently pending. * \param self Instance pointer */ static void Alm_ClearTimeout(CApiLockingManager *self) { if(NULL == Dl_Foreach(&self->api_list, &Alm_SearchLockedApi, self)) { Tm_ClearTimer(self->tm_ptr, &self->garbage_collector); } } /*! \brief Used by Alm_ClearTimeout() to check if at least one registered API is locked. * \param current_alm_ptr Reference to the current API locking object * \param alm_inst_ptr Instance of the API locking manager * \return \c true if a locked API was found, otherwise \c false */ static bool Alm_SearchLockedApi(void *current_alm_ptr, void *alm_inst_ptr) { CApiLocking *alm_ptr_ = (CApiLocking *)current_alm_ptr; bool ret_val = false; MISC_UNUSED(alm_inst_ptr); if(alm_ptr_->method_mask != 0U) { ret_val = true; } return ret_val; } /*! \brief Resets all registered APIs. Called if an internal error has been occurred. * \param self Instance pointer */ static void Alm_ResetRegisteredApis(CApiLockingManager *self) { (void)Dl_Foreach(&self->api_list, &Alm_ResetApi, self); } /*! \brief Used by Alm_ResetRegisteredApis() to reset all registered APIs. * \param current_alm_ptr Reference to the current API locking object * \param alm_inst_ptr Instance of the API locking manager * \return \c false (process all registered APIs) */ static bool Alm_ResetApi(void *current_alm_ptr, void *alm_inst_ptr) { CApiLocking *alm_ptr_ = (CApiLocking *)current_alm_ptr; MISC_UNUSED(alm_inst_ptr); alm_ptr_->method_mask = 0U; alm_ptr_->timeout_mask = 0U; return false; } /*------------------------------------------------------------------------------------------------*/ /* Implementation of class CApiLocking */ /*------------------------------------------------------------------------------------------------*/ /*! \brief Constructor of the API locking class. * \param self Instance pointer * \param obs_ptr Observer to signal locked API methods * \param mns_inst_id MOST NetServices instance ID */ void Al_Ctor(CApiLocking *self, CSingleObserver *obs_ptr, uint8_t mns_inst_id) { MISC_MEM_SET(self, 0, sizeof(*self)); self->mns_inst_id = mns_inst_id; Dln_Ctor(&self->node, NULL); if(obs_ptr != NULL) { Ssub_Ctor(&self->subject, self->mns_inst_id); (void)Ssub_AddObserver(&self->subject, obs_ptr); } } /*! \brief Locks the given API method. * \param self Instance pointer * \param method Bitmask of method to lock * \return \c true if the API has been locked successfully * \return \c false if the API was already locked */ bool Al_Lock(CApiLocking *self, Alm_ModuleMask_t method) { bool ret_val = false; if((self->method_mask & method) == 0U) { ret_val = true; self->method_mask |= method; self->timeout_mask &= ~method; Alm_StartTimeout(self->alm_ptr); } return ret_val; } /*! \brief Releases the lock of the given API method. * \param self Instance pointer * \param method Bitmask of method to lock */ void Al_Release(CApiLocking *self, Alm_ModuleMask_t method) { self->method_mask &= ~method; self->timeout_mask &= ~method; Alm_ClearTimeout(self->alm_ptr); } /*! * @} * \endcond */ /*------------------------------------------------------------------------------------------------*/ /* End of file */ /*------------------------------------------------------------------------------------------------*/