/*****************************************************************************
函 数 名  : USIMM_Mkdir
功能描述  : 建立文件夹
输入参数  : pcDirName   --- 文件夹路径
输出参数  : 无
返 回 值  : SI_UINT32 函数执行结果
调用函数  :
被调函数  : 外部接口

修改历史      :
1.日    期  : 2013年08月28日
  作    者  : zhuli
  修改内容  : Create
*****************************************************************************/
VOS_INT32 USIMM_Mkdir(VOS_CHAR *pcDirName)
{
    VOS_INT32 ulRslt;

    ulRslt = DRV_FILE_MKDIR(pcDirName);

    if(VOS_OK != ulRslt)
    {
        USIMM_WARNING_LOG("Make Dir fail!");
    }

    return ulRslt;
}
/*****************************************************************************
Function   : NV_Mkdir
Description: make a directory
Input      : VOS_CHAR *pcDirName -> Directory name
Return     : OK, or ERROR if the directory cannot be created
Other      :
*****************************************************************************/
VOS_INT32 NV_Mkdir(VOS_CHAR *pcDirName)
{
    VOS_INT32 ulRslt;

    ulRslt = DRV_FILE_MKDIR(pcDirName);

    if(VOS_OK != ulRslt)
    {
        NV_Printf("Make Dir %s fail.\r\n", pcDirName);
    }

    return ulRslt;
}
VOS_UINT32 OM_LittleImgInitLogFile(VOS_UINT32 ulFileSize)
{
    LOG_FILE_DISK_INFO_STRU stDiskInfo;

    /* 创建LOG文件对应的信号量 */
    if (VOS_OK != VOS_SmMCreate("FILE", VOS_SEMA4_FIFO, &g_stLogFileSaveInfo.ulSem))
    {
        g_ulLittleImgLogErr = LOG_OPERATION_CREATE_SEM_FAIL;

        return VOS_ERR;
    }

    if (VOS_OK != VOS_SmP(g_stLogFileSaveInfo.ulSem, LOG_SEM_TIMEOUT_VALUE))
    {
        g_ulLittleImgLogErr = LOG_OPERATION_POST_SEM_FAIL;

        return VOS_ERR;
    }

    /* 判断LOG目录是否已经存在 */
    if (VOS_OK != DRV_FILE_ACCESS(g_acLogFileSaveDir, 0))
    {
        /* 如果目录不存在则创建LOG目录 */
        if(DRV_ERROR == DRV_FILE_MKDIR(g_acLogFileSaveDir))
        {
            g_ulLittleImgLogErr = LOG_OPERATION_MKDIR_FAIL;
            VOS_SmV(g_stLogFileSaveInfo.ulSem);
            return VOS_ERR;
        }
    }

    g_stLogFileSaveInfo.ulFileMinId = 1;
    g_stLogFileSaveInfo.ulFileMaxId = 1;
    g_stLogFileSaveInfo.ulCurLogFileMaxSize = ulFileSize * LOG_FILE_UNIT_SIZE;

    /* 调用底软接口返回 */
    if (DRV_ERROR == DRV_FILE_GET_DISKSPACE(
                    g_acFileSystemRoot,
                    (VOS_UINT*)&stDiskInfo.ulDiskSpace,
                    (VOS_UINT*)&stDiskInfo.ulUsedSpace,
                    (VOS_UINT*)&stDiskInfo.ulValidSpace))
    {
        PS_LOG(WUEPS_PID_OM, 0, PS_PRINT_ERROR, "OM_LittleImgInitLogFile: DRV_FILE_GET_DISKSPACE Failed!");
        return VOS_ERR;
    }

    g_stLogFileSaveInfo.ulFSFreeSpace = stDiskInfo.ulValidSpace;

    /* 如果NV项中文件大小不合法,修改为默认值 */
    if (g_stLogFileSaveInfo.ulCurLogFileMaxSize > g_stLogFileSaveInfo.ulFSFreeSpace)
    {
        g_stLogFileSaveInfo.ulCurLogFileMaxSize = LOG_FILE_SIZE * LOG_FILE_UNIT_SIZE;
    }

    /* 如果默认值大于文件系统大小,返回失败 */
    if (g_stLogFileSaveInfo.ulCurLogFileMaxSize > g_stLogFileSaveInfo.ulFSFreeSpace)
    {
        g_ulLittleImgLogErr = LOG_OPERATION_LENGTH_TOOBIG;
        VOS_SmV(g_stLogFileSaveInfo.ulSem);
        return VOS_ERR;
    }

    if (VOS_OK != OM_LittleImgCreateLogFile(g_stLogFileSaveInfo.ulCurLogFileMaxSize))
    {
        LogPrint("\r\n OM_LittleImgInitLogFile: Create Log File Failed.! \r\n");
        VOS_SmV(g_stLogFileSaveInfo.ulSem);
        return VOS_ERR;
    }

    g_ulLogFileSaveFlg = LOG_FILE_ENABLE;

    VOS_SmV(g_stLogFileSaveInfo.ulSem);

    return VOS_OK;

}