• R/O
  • HTTP
  • SSH
  • HTTPS

提交

标签
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

テスト用のあれこれ共用フォルダ


Commit MetaInfo

修订版1926592164ce07c86b4637b6d2d96cdc43d77d9c (tree)
时间2018-02-21 22:52:09
作者takemasa <suikan@user...>
Commitertakemasa

Log Message

Added new files

更改概述

差异

--- /dev/null
+++ b/stm32_development/murasaki/murasaki/abstracttask.cpp
@@ -0,0 +1,65 @@
1+/*
2+ * abstracttask.cpp
3+ *
4+ * Created on: 2018/02/20
5+ * Author: takemasa
6+ */
7+
8+#include <abstracttask.hpp>
9+#include "murasaki_assert.hpp"
10+
11+namespace murasaki {
12+
13+AbstractTask::AbstractTask(const char * task_name, unsigned short stack_depth, void * parameter, UBaseType_t priority)
14+ : name_(task_name),
15+ stack_depth_(stack_depth),
16+ parameter_(parameter),
17+ priority_(priority)
18+{
19+ MURASAKI_ASSERT(NULL!= task_name);
20+ MURASAKI_ASSERT(0 == stack_depth); // reject only very explict fault.
21+ task_ = 0;
22+}
23+
24+AbstractTask::~AbstractTask()
25+{
26+ vTaskDelete(task_);
27+}
28+
29+void AbstractTask::Start()
30+{
31+ BaseType_t task_result = ::xTaskCreate(AbstractTask::Launch, // task entity;
32+ name_, // name of task
33+ stack_depth_, // stack depth
34+ this, // parameter to task
35+ priority_, // execusion priority of task
36+ &task_ // receive task handle
37+ );
38+ MURASAKI_ASSERT(task_result != errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY);
39+
40+}
41+
42+void AbstractTask::Resume()
43+{
44+ vTaskResume(task_);
45+}
46+
47+void AbstractTask::Suspend()
48+{
49+ vTaskSuspend(task_);
50+}
51+
52+const char* AbstractTask::GetName()
53+{
54+ return name_;
55+}
56+
57+void AbstractTask::Launch(void* ptr)
58+{
59+ MURASAKI_ASSERT(NULL != ptr);
60+
61+ static_cast<AbstractTask *>(ptr)->TaskBody();
62+}
63+
64+
65+} /* namespace murasaki */
--- /dev/null
+++ b/stm32_development/murasaki/murasaki/abstracttask.hpp
@@ -0,0 +1,39 @@
1+/*
2+ * abstracttask.hpp
3+ *
4+ * Created on: 2018/02/20
5+ * Author: takemasa
6+ */
7+
8+#ifndef ABSTRACTTASK_HPP_
9+#define ABSTRACTTASK_HPP_
10+
11+#include <FreeRTOS.h>
12+#include <task.h>
13+
14+namespace murasaki {
15+
16+class AbstractTask
17+{
18+ public:
19+ AbstractTask() = delete;
20+ AbstractTask(const char * task_name, unsigned short stack_depth, void * task_parameter, UBaseType_t task_priority);
21+ virtual ~AbstractTask();
22+ void Start();
23+ void Resume();
24+ void Suspend();
25+ const char * GetName();
26+ protected:
27+ TaskHandle_t task_;
28+ const char * name_;
29+ const unsigned short stack_depth_;
30+ const void * parameter_;
31+ const UBaseType_t priority_;
32+
33+ static void Launch(void * ptr);
34+ virtual void TaskBody() = 0;
35+};
36+
37+} /* namespace murasaki */
38+
39+#endif /* ABSTRACTTASK_HPP_ */