Adapt the AIL filter used to new ones
[profile/ivi/ico-uxf-homescreen.git] / lib / system-controller / CicoSCResourceManager.h
index 92dbbee..c1b7df5 100644 (file)
@@ -23,6 +23,7 @@
 using namespace std;
 
 #include "ico_syc_mrp_resource_private.h"
+#include "ico_syc_appresctl.h"
 
 //==========================================================================
 //  Forward declaration
@@ -64,6 +65,9 @@ public:
     // receive changed state
     void receiveChangedState(int state);
 
+    // get resource manager instance
+    CicoSCPolicyManager * getPolicyManager(void);
+
 private:
     // assignment operator
     CicoSCResourceManager& operator=(const CicoSCResourceManager &object);
@@ -97,7 +101,7 @@ private:
 
     resource_request_t * popInputResReq(resource_request_t *req);
 
-    void updateDisplayResource(resource_request_t *req);
+    void updateDisplayResource(resource_request_t *req, int chgzoneid=-1);
     void updateSoundResource(resource_request_t *req);
     void updateInputResource(resource_request_t *req);
 
@@ -105,19 +109,91 @@ private:
     void updateSoundResourceRegulation(int state);
     void updateInputResourceRegulation(int state);
 
+    void updateDispResRegulationPreProc(resource_request_t *req);
+    void updateSoundResRegulationPreProc(resource_request_t *req);
+    void updateInputResRegulationPreProc(resource_request_t *req);
+
+    resource_request_t * findCurDispResOwerReq(resource_request_t *req);
+    resource_request_t * popCurDispResOwerReq(resource_request_t *req);
+    void dumpCurDispResOwerReq(void);
+
+    resource_request_t * findWaitingDispResReq(resource_request_t *req);
+    resource_request_t * popWaitingDispResReq(resource_request_t *req);
+    void dumpWaitingDispResReq(void);
+
+    bool isMatchDisplayed(void);
+    bool acquireOnScreenDisplayResource(resource_request_t *req);
+    bool releaseOnScreenDisplayResource(resource_request_t *req);
+    const resource_request_t* getNoticeOfHighOder();
+    bool resCB(const ico_syc_ev_e ev, const resource_request_t& p) const;
+    bool resCB(const char* sendToAppid, const int ev, const char* ECU,
+               const char* display, const char* layer, const char* layout,
+               const char* area, const char* dispatchApp, const char* role,
+               uint32_t resourceId) const;
+    bool isTypeBaseic(const resource_request_t& p);
+    bool isTypeInterrupt(const resource_request_t& p);
+    bool isTypeOnScreen(const resource_request_t& p);
 private:
     CicoSCPolicyManager       *m_policyMgr;
     CicoSCWindowController    *m_winCtrl;
     CicoSCInputController     *m_inputCtrl;
 
     // pair zoneid and request
-    map<int, resource_request_t*> m_curDispResReq;
-    map<int, resource_request_t*> m_curSoundResReq;
-    map<int, resource_request_t*> m_curInputResReq;
+    std::map<unsigned int, resource_request_t*> m_curDispResOwerReq;
+    std::map<int, resource_request_t*> m_curSoundResReq;
+    std::map<int, resource_request_t*> m_curInputResReq;
 
-    map<int, list<resource_request_t*> > m_dispReqQueue;
+    std::list<resource_request_t*> m_waitingDispResReq;
     map<int, list<resource_request_t*> > m_soundReqQueue;
     map<int, list<resource_request_t*> > m_inputReqQueue;
+    std::list<resource_request_t*> m_OnScreenItems;
+    const resource_request_t*  m_rrtHO; // resource_request_t of High Oder
+
+    // show/hide animation name at regulation on or off
+    const std::string m_animaName;
+
+    // show/hide animation time at regulation on or off
+    int m_animaTime;
 };
+
+//==========================================================================
+/**
+ *  @brief  check type is basic
+ *  @param  p resorce request info
+ *  @ret   bool
+ *  @retval true: basic
+ *  @retval false: not basic
+ */
+inline bool CicoSCResourceManager::isTypeBaseic(const resource_request_t& p)
+{
+    return (RESID_TYPE_BASIC == (p.resid & RESID_TYPE_MASK));
+}
+
+//==========================================================================
+/**
+ *  @brief  check type is interrupt
+ *  @param  p resorce request info
+ *  @ret   bool
+ *  @retval true: interrupt
+ *  @retval false: not interrupt
+ */
+inline bool CicoSCResourceManager::isTypeInterrupt(const resource_request_t& p)
+{
+    return (RESID_TYPE_INTERRUPT == (p.resid & RESID_TYPE_MASK));
+}
+
+//==========================================================================
+/**
+ *  @brief  check type is onscreen
+ *  @param  p resorce request info
+ *  @ret   bool
+ *  @retval true: onscreen
+ *  @retval false: not onscreen
+ */
+//==========================================================================
+inline bool CicoSCResourceManager::isTypeOnScreen(const resource_request_t& p)
+{
+    return (RESID_TYPE_ONSCREEN == (p.resid & RESID_TYPE_MASK));
+}
 #endif  // __CICO_SC_RESOURCE_MANAGER_H__
 // vim:set expandtab ts=4 sw=4: