nt9856x/code/application/sifarsdk/333DE/hal/SDCardHal.cpp

65 lines
2.0 KiB
C++

#include "SDCardHal.h"
#include "Log.h"
SDCardHal::SDCardHal()
{
mState = SdCardEvent::END;
mSDCardMessageConvert[CMD_SD_MOUNT_SUCCESS] = SdCardEvent::MOUNT_SUCCEED;
mSDCardMessageConvert[CMD_SF_SD_FORMAT] = SdCardEvent::MOUNT_FAILED; // TODO:
mSDCardMessageConvert[CMD_SD_ERROR] = SdCardEvent::SD_ERROR;
mSDCardMessageConvert[CMD_SD_OUT] = SdCardEvent::SD_OUT;
mSDCardMessageConvert[CMD_SD_FULL] = SdCardEvent::SD_FULL;
}
RETURN_CODE SDCardHal::GetSdCardState(SdCardEvent &state)
{
state = mState;
return VReturnCode::NewCode(VReturnCodeDefine::OK);
}
RETURN_CODE SDCardHal::SetOwner(const std::shared_ptr<VSDCardOwner> &owner)
{
mOwner = owner;
return VReturnCode::NewCode(VReturnCodeDefine::OK);
}
void SDCardHal::SetSDCardMessage(const SF_MESSAGE_CMD_SD_E &message)
{
std::map<SF_MESSAGE_CMD_SD_E, SdCardEvent>::iterator iter;
iter = mSDCardMessageConvert.find(message);
if (iter != mSDCardMessageConvert.end())
{
LogInfo("SetSDCardMessage = %d\n", static_cast<int>(message));
mState = mSDCardMessageConvert[message];
ReportMessageToOwner(mState);
return;
}
LogError("SF_MESSAGE_CMD_SD_E wrong = %d.\n", static_cast<int>(message));
}
RETURN_CODE SDCardHal::Format(void)
{
system("echo format > /tmp/cardv_fifo");
return VReturnCode::NewCode(VReturnCodeDefine::OK);
}
RETURN_CODE SDCardHal::MsdcMode(void)
{
system("/customer/gadget/udc-msdc.sh");
return VReturnCode::NewCode(VReturnCodeDefine::OK);
}
RETURN_CODE SDCardHal::UvcMode(void)
{
system("echo uvc 1 > /tmp/cardv_fifo");
return VReturnCode::NewCode(VReturnCodeDefine::OK);
}
void SDCardHal::ReportMessageToOwner(const SdCardEvent &message)
{
auto owner = mOwner.lock();
if (!owner)
{
LogWarning("Owner is nullptr.\n");
return;
}
if (mOwner.expired())
{
LogWarning("Owner shared ptr expired failed.\n");
return;
}
LogInfo("ReportMessageToOwner.\n");
owner->SDCardHalEvent(message);
}