Improve:sd card hal.
This commit is contained in:
parent
385884baec
commit
ec7634f22d
|
@ -82,11 +82,13 @@ StatusCode AppMonitor::GetLockVideoStatus(LockVideoStatus ¶m)
|
||||||
StatusCode AppMonitor::GetStorageInfo(std::vector<AppGetStorageInfo> ¶m)
|
StatusCode AppMonitor::GetStorageInfo(std::vector<AppGetStorageInfo> ¶m)
|
||||||
{
|
{
|
||||||
AppGetStorageInfo info;
|
AppGetStorageInfo info;
|
||||||
|
SdCardInfo sdInfo;
|
||||||
|
IStorageManager::GetInstance()->GetSdCardInfo(sdInfo);
|
||||||
info.mIndex = 0;
|
info.mIndex = 0;
|
||||||
info.mName = "TF card";
|
info.mName = "TF card";
|
||||||
info.mType = StorageType::SD_CARD_1;
|
info.mType = StorageType::SD_CARD_1;
|
||||||
info.mFree = 1024 * 32;
|
info.mFree = sdInfo.mFreeSizeMB;
|
||||||
info.mTotal = 1024 * 32;
|
info.mTotal = sdInfo.mTotalSizeMB;
|
||||||
param.push_back(info);
|
param.push_back(info);
|
||||||
return CreateStatusCode(STATUS_CODE_OK);
|
return CreateStatusCode(STATUS_CODE_OK);
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,7 +73,7 @@ SdCardHalStatus VSdCardHal::GetSdCardStatus(void)
|
||||||
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION.\n");
|
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION.\n");
|
||||||
return SdCardHalStatus::END;
|
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);
|
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,7 +106,7 @@ public:
|
||||||
virtual ~VSdCardHal() = default;
|
virtual ~VSdCardHal() = default;
|
||||||
virtual void SetSdCardMonitor(std::shared_ptr<VSdCardHalMonitor> &monitor);
|
virtual void SetSdCardMonitor(std::shared_ptr<VSdCardHalMonitor> &monitor);
|
||||||
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);
|
||||||
};
|
};
|
||||||
class IHalCpp
|
class IHalCpp
|
||||||
{
|
{
|
||||||
|
|
|
@ -23,8 +23,10 @@
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/statvfs.h>
|
#include <sys/statvfs.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
#include <sys/vfs.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
const char *SD_CARD_DEVICE = SD_CARD_DEV;
|
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)
|
SdCardHal::SdCardHal() : mStatus(SdCardHalStatus::END), mThreadRuning(false), mDeviceFd(-1)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -38,20 +40,27 @@ SdCardHalStatus SdCardHal::GetSdCardStatus(void)
|
||||||
{
|
{
|
||||||
return mStatus;
|
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;
|
using SD_SIZE = unsigned long long;
|
||||||
struct statvfs stat;
|
constexpr SD_SIZE ONE_MB = 1024ULL * 1024;
|
||||||
if (statvfs(SD_CARD_DEVICE, &stat) != 0) {
|
if (SdCardHalStatus::MOUNTED != mStatus) {
|
||||||
perror("statvfs");
|
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);
|
return CreateStatusCode(STATUS_CODE_NOT_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
totalSizeMB = (stat.f_frsize * stat.f_blocks) / ONE_MB;
|
totalSizeMB = ((SD_SIZE)sd_fs.f_blocks * (SD_SIZE)sd_fs.f_bsize) / ONE_MB;
|
||||||
freeSizeMB = (stat.f_frsize * stat.f_bfree) / 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("Total size: %llu MB\n", totalSizeMB);
|
||||||
LogInfo("Free size: %llu MB\n", freeSizeMB);
|
LogInfo("Free size: %llu MB\n", freeSizeMB);
|
||||||
|
LogInfo("Used size: %llu MB\n", usedSizeMB);
|
||||||
return CreateStatusCode(STATUS_CODE_OK);
|
return CreateStatusCode(STATUS_CODE_OK);
|
||||||
}
|
}
|
||||||
void SdCardHal::Init(void)
|
void SdCardHal::Init(void)
|
||||||
|
|
|
@ -23,7 +23,7 @@ public:
|
||||||
virtual ~SdCardHal() = default;
|
virtual ~SdCardHal() = default;
|
||||||
void SetSdCardMonitor(std::shared_ptr<VSdCardHalMonitor> &monitor) override;
|
void SetSdCardMonitor(std::shared_ptr<VSdCardHalMonitor> &monitor) override;
|
||||||
SdCardHalStatus GetSdCardStatus(void) 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 Init(void);
|
||||||
void UnInit(void);
|
void UnInit(void);
|
||||||
void DevDetectingThread(void);
|
void DevDetectingThread(void);
|
||||||
|
|
|
@ -236,8 +236,8 @@ typedef struct app_get_storage_info
|
||||||
int mIndex;
|
int mIndex;
|
||||||
StorageType mType;
|
StorageType mType;
|
||||||
std::string mName;
|
std::string mName;
|
||||||
int mFree;
|
unsigned long long mFree;
|
||||||
int mTotal;
|
unsigned long long mTotal;
|
||||||
} AppGetStorageInfo;
|
} AppGetStorageInfo;
|
||||||
typedef struct app_get_file_info
|
typedef struct app_get_file_info
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,6 +32,7 @@ typedef struct sd_card_info
|
||||||
StorageEvent mEvent;
|
StorageEvent mEvent;
|
||||||
unsigned long long mTotalSizeMB;
|
unsigned long long mTotalSizeMB;
|
||||||
unsigned long long mFreeSizeMB;
|
unsigned long long mFreeSizeMB;
|
||||||
|
unsigned long long mUsedSizeMB;
|
||||||
} SdCardInfo;
|
} SdCardInfo;
|
||||||
class VStorageMoniter
|
class VStorageMoniter
|
||||||
{
|
{
|
||||||
|
|
|
@ -28,7 +28,7 @@ void SdCardHandle::ReportEvent(const SdCardHalStatus &status)
|
||||||
StatusCode SdCardHandle::GetSdCardInfo(SdCardInfo &info)
|
StatusCode SdCardHandle::GetSdCardInfo(SdCardInfo &info)
|
||||||
{
|
{
|
||||||
info.mEvent = StorageEventConvert(mSdCardHal->GetSdCardStatus());
|
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)
|
void SdCardHandle::SdCardInit(void)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user