9cba57d10a0b5a0e8f5ab3b23c313ccd2cc7b596
[platform/adaptation/npu/trix-engine.git] / src / core / ne-request.h
1 /**
2  * Proprietary
3  * Copyright (C) 2021 Samsung Electronics
4  * Copyright (C) 2021 Dongju Chae <dongju.chae@samsung.com>
5  */
6 /**
7  * @file ne-request.h
8  * @date 30 June 2021
9  * @brief Internal data structure for requests.
10  * @see https://code.sec.samsung.net/confluence/display/ODLC/2020+Overall+Software+Stack
11  * @author Dongju Chae <dongju.chae@samsung.com>
12  * @bug No known bugs except for NYI items
13  */
14 #ifndef NE_REQUEST_H__
15 #define NE_REQUEST_H__
16
17 #include <atomic>
18
19 #include <typedef.h>
20
21 #include "ne-model.h"
22 #include "ne-hwmem.h"
23
24 /** @brief class def. of requests created from host handler */
25
26 class Request {
27  public:
28   Request (int req_id = 0);
29   ~Request ();
30
31   void setModel (const Model *model) { model_ = model; }
32   const Model *getModel () const { return model_; }
33
34   void setInferData (HWmem *data) { data_ = data; }
35   HWmem *getInferData () const { return data_; }
36
37   void setCallback (outputCallback cb) { cb_ = cb; }
38   outputCallback getCallback () const { return cb_; }
39
40   void setForceStop (bool force_stop) { force_stop_ = force_stop; }
41   bool getForceStop () const { return force_stop_; }
42
43   void setPreserved (bool preserved) { preserved_ = preserved; }
44   bool isPreserved () const { return preserved_; }
45
46   void setSubmitted (bool submitted) { submitted_ = submitted; }
47   bool isSubmitted () const { return submitted_; }
48
49   void setOpmode (npu_input_opmode opmode) { opmode_ = opmode; }
50   npu_input_opmode getOpmode () const { return opmode_; }
51   int getID () const { return request_id_; }
52
53   void setStopped () { stopped_ = true; }
54   bool isStopped () const { return stopped_; }
55
56   void setHwDevice (std::string hw_dev) { hw_dev_ = hw_dev; }
57   std::string getHwDevice () const { return hw_dev_; }
58
59   void setOutputBuffers (output_buffers *out_bufs) { out_bufs_ = out_bufs; }
60   output_buffers *getOutputBuffers () const { return out_bufs_; }
61
62   void setInferMode (npu_infer_mode infer_mode) { infer_mode_ = infer_mode; }
63   npu_infer_mode getInferMode () const { return infer_mode_; }
64
65   void setScheduler (const npu_scheduler &sched,
66                      const npu_scheduler_param &sched_param) {
67     sched_ = sched;
68     sched_param_ = sched_param;
69   }
70   npu_scheduler getScheduler () const { return sched_; }
71   npu_scheduler_param getSchedulerParam () const { return sched_param_; }
72
73  private:
74   int request_id_; /**< request id */
75
76   npu_input_opmode opmode_; /**< opmode of the request */
77   bool force_stop_;         /**< indicates force stop */
78   bool stopped_;            /**< stopped request */
79   bool preserved_;          /**< preserved request */
80   bool submitted_;          /**< submitted request */
81
82   const Model *model_; /**< model of the request */
83   HWmem *data_;        /**< inference data of the request */
84
85   outputCallback cb_;        /**< request callback */
86   output_buffers *out_bufs_; /**< output buffers */
87   std::string hw_dev_;       /**< HW device path */
88
89   npu_infer_mode infer_mode_;
90
91   npu_scheduler sched_;
92   npu_scheduler_param sched_param_;
93 };
94
95 #endif /* NE_REQUEST_H__ */