This commit is contained in:
aozhiwei 2022-12-05 09:58:15 +08:00
parent 7ed35b47e8
commit 1a230fccab
3 changed files with 32 additions and 0 deletions

View File

@ -17,6 +17,7 @@ Android::Android():Human()
if (!agent_) {
abort();
}
agent_->SetOwner(this);
}
Android::~Android()

View File

@ -1,6 +1,8 @@
#include "precompile.h"
#include "android_agent.h"
#include "android.h"
#include "room.h"
AndroidAgent::AndroidAgent()
{
@ -14,5 +16,26 @@ AndroidAgent::~AndroidAgent()
behaviac::EBTStatus AndroidAgent::DoIdle(int time)
{
if (status_ == behaviac::BT_RUNNING) {
return status_runing_cb_();
}
xtimer_list* timer = GetOwner()->room->xtimer.AddDeadLineTimerAndAttach
(
time / FRAME_RATE_MS,
a8::XParams(),
[] (const a8::XParams& param)
{
},
&GetOwner()->xtimer_attacher.timer_list_);
std::weak_ptr<a8::XTimerPtr> timer_ptr = GetOwner()->room->xtimer.GetTimerPtr(timer);
status_runing_cb_ =
[timer_ptr] ()
{
if (timer_ptr.lock()) {
return behaviac::BT_RUNNING;
} else {
return behaviac::BT_SUCCESS;
}
};
return behaviac::BT_RUNNING;
}

View File

@ -2,6 +2,7 @@
#include "behaviac_headers.h"
class Android;
class AndroidAgent : public behaviac::Agent
{
public:
@ -12,6 +13,13 @@ public:
BEHAVIAC_DECLARE_AGENTTYPE(AndroidAgent, behaviac::Agent)
public:
void SetOwner(Android* owner) { owner_ = owner; };
Android* GetOwner() { return owner_; };
behaviac::EBTStatus DoIdle(int time);
private:
Android* owner_ = nullptr;
behaviac::EBTStatus status_= behaviac::BT_SUCCESS;
std::function<behaviac::EBTStatus()> status_runing_cb_;
};