Improve:sd card hal.

This commit is contained in:
Fancy code 2024-05-11 17:25:45 +08:00
parent 385884baec
commit ec7634f22d
8 changed files with 28 additions and 16 deletions

View File

@ -82,11 +82,13 @@ StatusCode AppMonitor::GetLockVideoStatus(LockVideoStatus &param)
StatusCode AppMonitor::GetStorageInfo(std::vector<AppGetStorageInfo> &param)
{
AppGetStorageInfo info;
SdCardInfo sdInfo;
IStorageManager::GetInstance()->GetSdCardInfo(sdInfo);
info.mIndex = 0;
info.mName = "TF card";
info.mType = StorageType::SD_CARD_1;
info.mFree = 1024 * 32;
info.mTotal = 1024 * 32;
info.mFree = sdInfo.mFreeSizeMB;
info.mTotal = sdInfo.mTotalSizeMB;
param.push_back(info);
return CreateStatusCode(STATUS_CODE_OK);
}

View File

@ -73,7 +73,7 @@ SdCardHalStatus VSdCardHal::GetSdCardStatus(void)
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION.\n");
return SdCardHalStatus::END;
}
StatusCode VSdCardHal::GetCapacity(unsigned long long &totalSizeMB, unsigned long long &freeSizeMB)
StatusCode VSdCardHal::GetCapacity(unsigned long long &totalSizeMB, unsigned long long &freeSizeMB, unsigned long long &usedSizeMB)
{
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
}

View File

@ -106,7 +106,7 @@ public:
virtual ~VSdCardHal() = default;
virtual void SetSdCardMonitor(std::shared_ptr<VSdCardHalMonitor> &monitor);
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);
};
class IHalCpp
{

View File

@ -23,8 +23,10 @@
#include <sys/stat.h>
#include <sys/statvfs.h>
#include <sys/types.h>
#include <sys/vfs.h>
#include <unistd.h>
const char *SD_CARD_DEVICE = SD_CARD_DEV;
const char *SD_MOUNT_PATH = SD_CARD_MOUNT_PATH;
SdCardHal::SdCardHal() : mStatus(SdCardHalStatus::END), mThreadRuning(false), mDeviceFd(-1)
{
}
@ -38,20 +40,27 @@ SdCardHalStatus SdCardHal::GetSdCardStatus(void)
{
return mStatus;
}
StatusCode SdCardHal::GetCapacity(unsigned long long &totalSizeMB, unsigned long long &freeSizeMB)
StatusCode SdCardHal::GetCapacity(unsigned long long &totalSizeMB, unsigned long long &freeSizeMB,
unsigned long long &usedSizeMB)
{
constexpr int ONE_MB = 1024 * 1024;
struct statvfs stat;
if (statvfs(SD_CARD_DEVICE, &stat) != 0) {
perror("statvfs");
using SD_SIZE = unsigned long long;
constexpr SD_SIZE ONE_MB = 1024ULL * 1024;
if (SdCardHalStatus::MOUNTED != mStatus) {
LogWarning("SdCardHalStatus::MOUNTED != mStatus\n");
return CreateStatusCode(STATUS_CODE_NOT_OK);
}
struct statfs sd_fs;
if (statfs(SD_MOUNT_PATH, &sd_fs) != 0) {
LogError("statfs failed!\n");
return CreateStatusCode(STATUS_CODE_NOT_OK);
}
totalSizeMB = (stat.f_frsize * stat.f_blocks) / ONE_MB;
freeSizeMB = (stat.f_frsize * stat.f_bfree) / ONE_MB;
totalSizeMB = ((SD_SIZE)sd_fs.f_blocks * (SD_SIZE)sd_fs.f_bsize) / ONE_MB;
freeSizeMB = ((SD_SIZE)sd_fs.f_bavail * (SD_SIZE)sd_fs.f_bsize) / ONE_MB;
usedSizeMB = (((SD_SIZE)sd_fs.f_blocks - (SD_SIZE)sd_fs.f_bfree) * (SD_SIZE)sd_fs.f_bsize) / ONE_MB;
LogInfo("Total size: %llu MB\n", totalSizeMB);
LogInfo("Free size: %llu MB\n", freeSizeMB);
LogInfo("Used size: %llu MB\n", usedSizeMB);
return CreateStatusCode(STATUS_CODE_OK);
}
void SdCardHal::Init(void)

View File

@ -23,7 +23,7 @@ public:
virtual ~SdCardHal() = default;
void SetSdCardMonitor(std::shared_ptr<VSdCardHalMonitor> &monitor) override;
SdCardHalStatus GetSdCardStatus(void) override;
StatusCode GetCapacity(unsigned long long &totalSizeMB, unsigned long long &freeSizeMB) override;
StatusCode GetCapacity(unsigned long long &totalSizeMB, unsigned long long &freeSizeMB, unsigned long long &usedSizeMB) override;
void Init(void);
void UnInit(void);
void DevDetectingThread(void);

View File

@ -236,8 +236,8 @@ typedef struct app_get_storage_info
int mIndex;
StorageType mType;
std::string mName;
int mFree;
int mTotal;
unsigned long long mFree;
unsigned long long mTotal;
} AppGetStorageInfo;
typedef struct app_get_file_info
{

View File

@ -32,6 +32,7 @@ typedef struct sd_card_info
StorageEvent mEvent;
unsigned long long mTotalSizeMB;
unsigned long long mFreeSizeMB;
unsigned long long mUsedSizeMB;
} SdCardInfo;
class VStorageMoniter
{

View File

@ -28,7 +28,7 @@ void SdCardHandle::ReportEvent(const SdCardHalStatus &status)
StatusCode SdCardHandle::GetSdCardInfo(SdCardInfo &info)
{
info.mEvent = StorageEventConvert(mSdCardHal->GetSdCardStatus());
return mSdCardHal->GetCapacity(info.mTotalSizeMB, info.mFreeSizeMB);
return mSdCardHal->GetCapacity(info.mTotalSizeMB, info.mFreeSizeMB, info.mUsedSizeMB);
}
void SdCardHandle::SdCardInit(void)
{