Format sd card.
This commit is contained in:
parent
ce3e00d4d7
commit
d15663c9f7
|
@ -30,6 +30,7 @@ enum class InternalStateEvent
|
||||||
MEDIA_REPORT_EVENT,
|
MEDIA_REPORT_EVENT,
|
||||||
KEY_EVENT_HANDLE,
|
KEY_EVENT_HANDLE,
|
||||||
RESET_KEY_MEDIA_TASK,
|
RESET_KEY_MEDIA_TASK,
|
||||||
|
FORMAT_KEY_FORMAT_SD_CARD,
|
||||||
MEDIA_HANDLE_STATE_TASK_TIME_OUT,
|
MEDIA_HANDLE_STATE_TASK_TIME_OUT,
|
||||||
MEDIA_HANDLE_STATE_TASK_FINISHED,
|
MEDIA_HANDLE_STATE_TASK_FINISHED,
|
||||||
END
|
END
|
||||||
|
|
|
@ -24,6 +24,8 @@ IdleState::IdleState() : State("IdleState")
|
||||||
// mEventHandle[InternalStateEvent::SD_CARD_HANDLE_STATE_SD_STATUS_REPORTED] =
|
// mEventHandle[InternalStateEvent::SD_CARD_HANDLE_STATE_SD_STATUS_REPORTED] =
|
||||||
// std::bind(&IdleState::SdCardEventHandle, this, _1);
|
// std::bind(&IdleState::SdCardEventHandle, this, _1);
|
||||||
mEventHandle[InternalStateEvent::RESET_KEY_MEDIA_TASK] = std::bind(&IdleState::ResetKeyMediaTaskHandle, this, _1);
|
mEventHandle[InternalStateEvent::RESET_KEY_MEDIA_TASK] = std::bind(&IdleState::ResetKeyMediaTaskHandle, this, _1);
|
||||||
|
mEventHandle[InternalStateEvent::FORMAT_KEY_FORMAT_SD_CARD] =
|
||||||
|
std::bind(&IdleState::FormatKeyFormattingSDCardHandle, this, _1);
|
||||||
}
|
}
|
||||||
void IdleState::GoInState()
|
void IdleState::GoInState()
|
||||||
{
|
{
|
||||||
|
@ -38,6 +40,12 @@ bool IdleState::ExecuteStateMsg(VStateMachineData *msg)
|
||||||
return DataProcessing::EventHandle(msg);
|
return DataProcessing::EventHandle(msg);
|
||||||
}
|
}
|
||||||
bool IdleState::ResetKeyMediaTaskHandle(VStateMachineData *msg)
|
bool IdleState::ResetKeyMediaTaskHandle(VStateMachineData *msg)
|
||||||
|
{
|
||||||
|
MissionStateMachine::GetInstance()->DelayMessage(msg);
|
||||||
|
MissionStateMachine::GetInstance()->SwitchState(SystemState::STORAGE_HANDLE_STATE);
|
||||||
|
return EXECUTED;
|
||||||
|
}
|
||||||
|
bool IdleState::FormatKeyFormattingSDCardHandle(VStateMachineData *msg)
|
||||||
{
|
{
|
||||||
MissionStateMachine::GetInstance()->DelayMessage(msg);
|
MissionStateMachine::GetInstance()->DelayMessage(msg);
|
||||||
MissionStateMachine::GetInstance()->SwitchState(SystemState::STORAGE_HANDLE_STATE);
|
MissionStateMachine::GetInstance()->SwitchState(SystemState::STORAGE_HANDLE_STATE);
|
||||||
|
|
|
@ -27,6 +27,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool ResetKeyMediaTaskHandle(VStateMachineData *msg);
|
bool ResetKeyMediaTaskHandle(VStateMachineData *msg);
|
||||||
|
bool FormatKeyFormattingSDCardHandle(VStateMachineData *msg);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
};
|
};
|
||||||
|
|
|
@ -32,6 +32,8 @@ SdCardHandleState::SdCardHandleState() : State("SdCardHandleState"), mSdCardStat
|
||||||
std::bind(&SdCardHandleState::SdCardEventHandle, this, _1);
|
std::bind(&SdCardHandleState::SdCardEventHandle, this, _1);
|
||||||
mEventHandle[InternalStateEvent::RESET_KEY_MEDIA_TASK] =
|
mEventHandle[InternalStateEvent::RESET_KEY_MEDIA_TASK] =
|
||||||
std::bind(&SdCardHandleState::ResetKeyMediaTaskHandle, this, _1);
|
std::bind(&SdCardHandleState::ResetKeyMediaTaskHandle, this, _1);
|
||||||
|
mEventHandle[InternalStateEvent::FORMAT_KEY_FORMAT_SD_CARD] =
|
||||||
|
std::bind(&SdCardHandleState::FormatKeyFormattingSDCardHandle, this, _1);
|
||||||
}
|
}
|
||||||
void SdCardHandleState::GoInState()
|
void SdCardHandleState::GoInState()
|
||||||
{
|
{
|
||||||
|
@ -109,4 +111,14 @@ bool SdCardHandleState::ResetKeyMediaTaskHandle(VStateMachineData *msg)
|
||||||
}
|
}
|
||||||
LogWarning("Sd card is not inserted, ignore reset key media task.\n");
|
LogWarning("Sd card is not inserted, ignore reset key media task.\n");
|
||||||
return HANDLE_HELPESS;
|
return HANDLE_HELPESS;
|
||||||
|
}
|
||||||
|
bool SdCardHandleState::FormatKeyFormattingSDCardHandle(VStateMachineData *msg)
|
||||||
|
{
|
||||||
|
if (StorageEvent::SD_CARD_INSERT == mSdCardStatus) {
|
||||||
|
LogInfo("FormatKeyFormattingSDCardHandle.\n");
|
||||||
|
IStorageManager::GetInstance()->FormatSDCardNow();
|
||||||
|
return EXECUTED;
|
||||||
|
}
|
||||||
|
LogWarning("Sd card is not inserted, ignore format key.\n");
|
||||||
|
return EXECUTED;
|
||||||
}
|
}
|
|
@ -38,6 +38,7 @@ protected:
|
||||||
bool MediaReportHandle(VStateMachineData *msg);
|
bool MediaReportHandle(VStateMachineData *msg);
|
||||||
bool SdCardEventHandle(VStateMachineData *msg);
|
bool SdCardEventHandle(VStateMachineData *msg);
|
||||||
bool ResetKeyMediaTaskHandle(VStateMachineData *msg);
|
bool ResetKeyMediaTaskHandle(VStateMachineData *msg);
|
||||||
|
bool FormatKeyFormattingSDCardHandle(VStateMachineData *msg);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
StorageEvent mSdCardStatus;
|
StorageEvent mSdCardStatus;
|
||||||
|
|
|
@ -24,13 +24,15 @@
|
||||||
#include "MissionStateMachine.h"
|
#include "MissionStateMachine.h"
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
TestMissionState::TestMissionState() : MissionState("TestMissionState")
|
TestMissionState::TestMissionState() : MissionState("TestMissionState"), mFormattingSDCard(false)
|
||||||
{
|
{
|
||||||
mEventHandle[InternalStateEvent::ANY_STATE_SD_STATUS_PERORIED] =
|
mEventHandle[InternalStateEvent::ANY_STATE_SD_STATUS_PERORIED] =
|
||||||
std::bind(&TestMissionState::SdCardEventReportSendToApp, this, _1);
|
std::bind(&TestMissionState::SdCardEventReportSendToApp, this, _1);
|
||||||
mEventHandle[InternalStateEvent::RESET_KEY_MEDIA_TASK] =
|
mEventHandle[InternalStateEvent::RESET_KEY_MEDIA_TASK] =
|
||||||
std::bind(&TestMissionState::ResetKeyMediaTaskHandle, this, _1);
|
std::bind(&TestMissionState::ResetKeyMediaTaskHandle, this, _1);
|
||||||
mKeyClickHandle["reset"] = std::bind(&TestMissionState::ClickResetKey, this, _1);
|
mKeyClickHandle["reset"] = std::bind(&TestMissionState::ClickResetKey, this, _1);
|
||||||
|
mKeyHoldDownHandle["format"] = std::bind(&TestMissionState::HoldDownFormatKey, this, _1);
|
||||||
|
mKeyHoldUpHandle["format"] = std::bind(&TestMissionState::HoldUpFormatKey, this, _1);
|
||||||
}
|
}
|
||||||
void TestMissionState::GoInState()
|
void TestMissionState::GoInState()
|
||||||
{
|
{
|
||||||
|
@ -75,6 +77,24 @@ bool TestMissionState::ClickResetKey(const KeyEventData &data)
|
||||||
MissionStateMachine::GetInstance()->SendStateMessage(message);
|
MissionStateMachine::GetInstance()->SendStateMessage(message);
|
||||||
return EXECUTED;
|
return EXECUTED;
|
||||||
}
|
}
|
||||||
|
bool TestMissionState::HoldDownFormatKey(const KeyEventData &data)
|
||||||
|
{
|
||||||
|
constexpr int FORMAT_SD_CARD_PRESSING_TIME_MS = 1000 * 15;
|
||||||
|
if (FORMAT_SD_CARD_PRESSING_TIME_MS <= data.mHoldTime && false == mFormattingSDCard) {
|
||||||
|
LogInfo("format key down.\n");
|
||||||
|
mFormattingSDCard = true;
|
||||||
|
std::shared_ptr<VMissionData> message =
|
||||||
|
std::make_shared<VMissionData>(static_cast<MissionEvent>(InternalStateEvent::FORMAT_KEY_FORMAT_SD_CARD));
|
||||||
|
MissionStateMachine::GetInstance()->SendStateMessage(message);
|
||||||
|
return EXECUTED;
|
||||||
|
}
|
||||||
|
return NOT_EXECUTED;
|
||||||
|
}
|
||||||
|
bool TestMissionState::HoldUpFormatKey(const KeyEventData &data)
|
||||||
|
{
|
||||||
|
mFormattingSDCard = false;
|
||||||
|
return EXECUTED;
|
||||||
|
}
|
||||||
SdCardStatus TestMissionState::SdCardStatusConvert(const StorageEvent &event)
|
SdCardStatus TestMissionState::SdCardStatusConvert(const StorageEvent &event)
|
||||||
{
|
{
|
||||||
switch (event) {
|
switch (event) {
|
||||||
|
|
|
@ -30,8 +30,13 @@ private:
|
||||||
bool SdCardEventReportSendToApp(VStateMachineData *msg);
|
bool SdCardEventReportSendToApp(VStateMachineData *msg);
|
||||||
bool ResetKeyMediaTaskHandle(VStateMachineData *msg);
|
bool ResetKeyMediaTaskHandle(VStateMachineData *msg);
|
||||||
bool ClickResetKey(const KeyEventData &data);
|
bool ClickResetKey(const KeyEventData &data);
|
||||||
|
bool HoldDownFormatKey(const KeyEventData &data);
|
||||||
|
bool HoldUpFormatKey(const KeyEventData &data);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SdCardStatus SdCardStatusConvert(const StorageEvent &event);
|
SdCardStatus SdCardStatusConvert(const StorageEvent &event);
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool mFormattingSDCard;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
|
@ -133,6 +133,11 @@ StatusCode VSdCardHal::GetCapacity(unsigned long long &totalSizeMB, unsigned lon
|
||||||
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION.\n");
|
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION.\n");
|
||||||
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
|
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
|
||||||
}
|
}
|
||||||
|
StatusCode VSdCardHal::FormatSDCard(void)
|
||||||
|
{
|
||||||
|
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION.\n");
|
||||||
|
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
|
||||||
|
}
|
||||||
StatusCode IHalCpp::Init(void)
|
StatusCode IHalCpp::Init(void)
|
||||||
{
|
{
|
||||||
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION.\n");
|
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION.\n");
|
||||||
|
|
|
@ -151,6 +151,7 @@ public:
|
||||||
virtual SdCardHalStatus GetSdCardStatus(void);
|
virtual SdCardHalStatus GetSdCardStatus(void);
|
||||||
virtual StatusCode GetCapacity(unsigned long long &totalSizeMB, unsigned long long &freeSizeMB,
|
virtual StatusCode GetCapacity(unsigned long long &totalSizeMB, unsigned long long &freeSizeMB,
|
||||||
unsigned long long &usedSizeMB);
|
unsigned long long &usedSizeMB);
|
||||||
|
virtual StatusCode FormatSDCard(void);
|
||||||
};
|
};
|
||||||
class IHalCpp
|
class IHalCpp
|
||||||
{
|
{
|
||||||
|
|
|
@ -65,6 +65,18 @@ StatusCode SdCardHal::GetCapacity(unsigned long long &totalSizeMB, unsigned long
|
||||||
LogInfo("Used size: %llu MB\n", usedSizeMB);
|
LogInfo("Used size: %llu MB\n", usedSizeMB);
|
||||||
return CreateStatusCode(STATUS_CODE_OK);
|
return CreateStatusCode(STATUS_CODE_OK);
|
||||||
}
|
}
|
||||||
|
StatusCode SdCardHal::FormatSDCard(void)
|
||||||
|
{
|
||||||
|
char command[128] = {0};
|
||||||
|
sprintf(command, "mkfs.ext4 -F %s", SD_CARD_DEVICE);
|
||||||
|
int ret = fx_system(command);
|
||||||
|
if (ret != 0) {
|
||||||
|
LogError("Format sd card failed [%s].\n", SD_CARD_DEVICE);
|
||||||
|
return CreateStatusCode(STATUS_CODE_NOT_OK);
|
||||||
|
}
|
||||||
|
LogInfo("Format sd card success.\n");
|
||||||
|
return CreateStatusCode(STATUS_CODE_OK);
|
||||||
|
}
|
||||||
void SdCardHal::Init(void)
|
void SdCardHal::Init(void)
|
||||||
{
|
{
|
||||||
auto detectThread = [](std::shared_ptr<SdCardHal> sdCardHal) {
|
auto detectThread = [](std::shared_ptr<SdCardHal> sdCardHal) {
|
||||||
|
|
|
@ -25,6 +25,7 @@ public:
|
||||||
SdCardHalStatus GetSdCardStatus(void) override;
|
SdCardHalStatus GetSdCardStatus(void) override;
|
||||||
StatusCode GetCapacity(unsigned long long &totalSizeMB, unsigned long long &freeSizeMB,
|
StatusCode GetCapacity(unsigned long long &totalSizeMB, unsigned long long &freeSizeMB,
|
||||||
unsigned long long &usedSizeMB) override;
|
unsigned long long &usedSizeMB) override;
|
||||||
|
StatusCode FormatSDCard(void) override;
|
||||||
void Init(void);
|
void Init(void);
|
||||||
void UnInit(void);
|
void UnInit(void);
|
||||||
void DevDetectingThread(void);
|
void DevDetectingThread(void);
|
||||||
|
|
|
@ -157,24 +157,7 @@ bool SqliteHandle::SyncFile(const SyncFileInfo &info)
|
||||||
sqlite3_free(errMsg);
|
sqlite3_free(errMsg);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// if (UpdateCreateTime(mDb, info.mSerialNumber, info.mCreateTime_s) == false) {
|
LogInfo("Sync file success.\n");
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
// if (UpdateFileName(mDb, info.mSerialNumber, info.mFileName) == false) {
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
// if (UpdateFileSize(mDb, info.mSerialNumber, info.mFileSize) == false) {
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
// if (UpdateFileStatus(mDb, info.mSerialNumber, info.mStatus) == false) {
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
// if (UpdateFileType(mDb, info.mSerialNumber, info.mType) == false) {
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
// if (UpdateFileDuration(mDb, info.mSerialNumber, info.mFileDuration) == false) {
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
bool SqliteHandle::SearchFiles(const std::vector<FileCreateType> &types, std::vector<SyncFileInfo> &info)
|
bool SqliteHandle::SearchFiles(const std::vector<FileCreateType> &types, std::vector<SyncFileInfo> &info)
|
||||||
|
|
|
@ -56,5 +56,6 @@ public:
|
||||||
virtual StatusCode GetSdCardInfo(SdCardInfo &info);
|
virtual StatusCode GetSdCardInfo(SdCardInfo &info);
|
||||||
virtual std::string GetFilesDatabasePath(void);
|
virtual std::string GetFilesDatabasePath(void);
|
||||||
virtual std::string GetFilesSavingPath(void);
|
virtual std::string GetFilesSavingPath(void);
|
||||||
|
virtual StatusCode FormatSDCardNow(void);
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
|
@ -77,4 +77,9 @@ std::string IStorageManager::GetFilesSavingPath(void)
|
||||||
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION\n");
|
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION\n");
|
||||||
std::string path = "undefined";
|
std::string path = "undefined";
|
||||||
return path;
|
return path;
|
||||||
|
}
|
||||||
|
StatusCode IStorageManager::FormatSDCardNow(void)
|
||||||
|
{
|
||||||
|
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION\n");
|
||||||
|
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
|
||||||
}
|
}
|
|
@ -37,6 +37,11 @@ StatusCode SdCardHandle::GetSdCardInfo(SdCardInfo &info)
|
||||||
info.mEvent = StorageEventConvert(mSdCardHal->GetSdCardStatus());
|
info.mEvent = StorageEventConvert(mSdCardHal->GetSdCardStatus());
|
||||||
return mSdCardHal->GetCapacity(info.mTotalSizeMB, info.mFreeSizeMB, info.mUsedSizeMB);
|
return mSdCardHal->GetCapacity(info.mTotalSizeMB, info.mFreeSizeMB, info.mUsedSizeMB);
|
||||||
}
|
}
|
||||||
|
StatusCode SdCardHandle::FormatSDCardNow(void)
|
||||||
|
{
|
||||||
|
mSdCardHal->FormatSDCard();
|
||||||
|
return CreateStatusCode(STATUS_CODE_OK);
|
||||||
|
}
|
||||||
void SdCardHandle::SdCardInit(void)
|
void SdCardHandle::SdCardInit(void)
|
||||||
{
|
{
|
||||||
IHalCpp::GetInstance()->GetSdCardHal(mSdCardHal);
|
IHalCpp::GetInstance()->GetSdCardHal(mSdCardHal);
|
||||||
|
|
|
@ -25,6 +25,7 @@ public:
|
||||||
virtual ~SdCardHandle() = default;
|
virtual ~SdCardHandle() = default;
|
||||||
void ReportEvent(const SdCardHalStatus &status) override;
|
void ReportEvent(const SdCardHalStatus &status) override;
|
||||||
StatusCode GetSdCardInfo(SdCardInfo &info) override;
|
StatusCode GetSdCardInfo(SdCardInfo &info) override;
|
||||||
|
StatusCode FormatSDCardNow(void) override;
|
||||||
void SdCardInit(void);
|
void SdCardInit(void);
|
||||||
void SdCardUnInit(void);
|
void SdCardUnInit(void);
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,21 @@ TEST_F(HuntingCameraTest, HS_INTEGRATION_HunttingCamera_EXAMPLE_KeyControlClick)
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||||
MainThread::GetInstance()->Runing();
|
MainThread::GetInstance()->Runing();
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @brief Construct a new test f object
|
||||||
|
* ../output_files/test/bin/HuntingCameraTest
|
||||||
|
* --gtest_filter=HuntingCameraTest.HS_INTEGRATION_HunttingCamera_EXAMPLE_FormatSDCard
|
||||||
|
*/
|
||||||
|
TEST_F(HuntingCameraTest, HS_INTEGRATION_HunttingCamera_EXAMPLE_FormatSDCard)
|
||||||
|
{
|
||||||
|
SetAllCamerasResult(mAllCamerasMock);
|
||||||
|
MockOtherSideIpcMissionReply(IpcMission::TEST);
|
||||||
|
MainThread::GetInstance()->Init();
|
||||||
|
TestManager::ResetTimeOut(1000 * 17);
|
||||||
|
HalTestTool::MockKeyClick("format", 1000 * 16); // Simulate pressing a button.
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||||
|
MainThread::GetInstance()->Runing();
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Construct a new test f object
|
* @brief Construct a new test f object
|
||||||
* ../output_files/test/bin/HuntingCameraTest
|
* ../output_files/test/bin/HuntingCameraTest
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include "MainThread.h"
|
#include "MainThread.h"
|
||||||
#include <thread>
|
#include <thread>
|
||||||
const char *KEY_RESET = "reset";
|
const char *KEY_RESET = "reset";
|
||||||
|
const char *KEY_FORMAT_SD_CARD = "format";
|
||||||
const char *LED_DEVICE_STATUS = "device_status";
|
const char *LED_DEVICE_STATUS = "device_status";
|
||||||
void MainThreadTest::CustomizationInit(void)
|
void MainThreadTest::CustomizationInit(void)
|
||||||
{
|
{
|
||||||
|
@ -90,6 +91,8 @@ void HuntingCameraTest::CreateAllKeysMcok(void)
|
||||||
{
|
{
|
||||||
std::shared_ptr<VKeyHal> key = HalTestTool::MakeKeyHalTest(KEY_RESET);
|
std::shared_ptr<VKeyHal> key = HalTestTool::MakeKeyHalTest(KEY_RESET);
|
||||||
mAllKeysMock[KEY_RESET] = key;
|
mAllKeysMock[KEY_RESET] = key;
|
||||||
|
std::shared_ptr<VKeyHal> key2 = HalTestTool::MakeKeyHalTest(KEY_FORMAT_SD_CARD);
|
||||||
|
mAllKeysMock[KEY_FORMAT_SD_CARD] = key2;
|
||||||
HalTestTool::SetAllKeysResult(mAllKeysMock);
|
HalTestTool::SetAllKeysResult(mAllKeysMock);
|
||||||
}
|
}
|
||||||
void HuntingCameraTest::DestroyAllKeysMock(void)
|
void HuntingCameraTest::DestroyAllKeysMock(void)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user