📄 aud_vm.c
字号:
/*****************************************************************************
* FUNCTION
* aud_vm_record_callback
* DESCRIPTION
*
* PARAMETERS
* event [IN]
* RETURNS
* void
*****************************************************************************/
void aud_vm_record_callback(Media_Event event)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
aud_vm_read_data_ind_struct *ind_p = NULL;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
ind_p = (aud_vm_read_data_ind_struct*) construct_local_para(sizeof(aud_vm_read_data_ind_struct), TD_CTRL);
ind_p->event = (kal_uint8) event;
aud_send_ilm(MOD_MED, MSG_ID_AUD_VM_READ_DATA_IND, ind_p, NULL);
}
/*****************************************************************************
* FUNCTION
* aud_vm_check_existing_file_name
* DESCRIPTION
*
* PARAMETERS
* file_name [?]
* RETURNS
*
*****************************************************************************/
kal_bool aud_vm_check_existing_file_name(kal_wchar *file_name)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_uint16 i;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
for (i = 0; i < aud_context_p->vm_info.num_of_vm && i < MAX_NUM_OF_VM_FILE; i++)
{
if (kal_wstrcmp(file_name, aud_context_p->vm_info.file_name_list[i]) == 0)
{
return KAL_TRUE;
}
}
return KAL_FALSE;
}
/*****************************************************************************
* FUNCTION
* aud_vm_new_file_name
* DESCRIPTION
*
* PARAMETERS
* file_name [?]
* RETURNS
* void
*****************************************************************************/
void aud_vm_new_file_name(kal_wchar *file_name)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
t_rtc rtc_time;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
RTC_GetTime(&rtc_time);
#ifdef _WIN32
rtc_time.rtc_year = 123;
rtc_time.rtc_mon = 3;
rtc_time.rtc_day = 6;
rtc_time.rtc_hour = 12;
rtc_time.rtc_min = 34;
rtc_time.rtc_sec = 56;
#endif /* _WIN32 */
kal_wsprintf(
file_name,
"%02d%02d%02d%02da.vm",
rtc_time.rtc_mon,
rtc_time.rtc_day,
rtc_time.rtc_hour,
rtc_time.rtc_min);
}
/*****************************************************************************
* FUNCTION
* aud_vm_increase_file_name
* DESCRIPTION
*
* PARAMETERS
* file_name [?]
* RETURNS
* void
*****************************************************************************/
void aud_vm_increase_file_name(kal_wchar *file_name)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
file_count++;
if (file_count >= MAX_NUM_OF_VM_FILE)
{
file_count = 0;
}
file_name[RANDOM_POS] = (kal_wchar) (file_count + 'a');
}
/*****************************************************************************
* FUNCTION
* aud_vm_get_current_file_name
* DESCRIPTION
*
* PARAMETERS
* file_name [?]
* RETURNS
* void
*****************************************************************************/
void aud_vm_get_current_file_name(kal_wchar *file_name)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
file_count = 0;
aud_vm_new_file_name(file_name);
while (aud_vm_check_existing_file_name(file_name))
{
aud_vm_increase_file_name(file_name);
}
}
/*****************************************************************************
* FUNCTION
* aud_vm_change_file_name
* DESCRIPTION
*
* PARAMETERS
* old_name [?]
* new_name [?]
* RETURNS
*
*****************************************************************************/
kal_uint8 aud_vm_change_file_name(kal_wchar *old_name, kal_wchar *new_name)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_uint16 i;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
for (i = 0; i < aud_context_p->vm_info.num_of_vm; i++)
{
if (kal_wstrcmp(old_name, aud_context_p->vm_info.file_name_list[i]) == 0)
{
kal_wchar full_name_1[FULL_NAME_LEN];
kal_wchar full_name_2[FULL_NAME_LEN];
kal_wsprintf(full_name_1, "%w\\%w", VM_DIR, old_name);
kal_wsprintf(full_name_2, "%w\\%w", VM_DIR, new_name);
if (FS_Rename(full_name_1, full_name_2) == FS_NO_ERROR)
{
kal_mem_cpy(aud_context_p->vm_info.file_name_list[i], new_name, MAX_VM_FILE_NAME * ENCODE_BYTE);
return MED_RES_OK;
}
else
{
return MED_RES_FAIL;
}
}
}
return MED_RES_FAIL;
}
/*****************************************************************************
* FUNCTION
* aud_vm_remove_file_from_list
* DESCRIPTION
*
* PARAMETERS
* file_name [?]
* RETURNS
*
*****************************************************************************/
kal_uint8 aud_vm_remove_file_from_list(kal_wchar *file_name)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_uint16 i = 0, j = 0;
kal_int32 result;
kal_wchar *file_name_p;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
while (i < aud_context_p->vm_info.num_of_vm)
{
if (kal_wstrcmp(file_name, aud_context_p->vm_info.file_name_list[i]) == 0)
{
kal_wchar full_name[FULL_NAME_LEN];
kal_wsprintf(full_name, "%w\\%w", VM_DIR, file_name);
result = FS_Delete(full_name);
if (result == FS_NO_ERROR)
{
file_name_p = aud_context_p->vm_info.file_name_list[i];
for (j = i + 1; j < aud_context_p->vm_info.num_of_vm; j++)
{
aud_context_p->vm_info.file_name_list[j - 1] = aud_context_p->vm_info.file_name_list[j];
}
aud_context_p->vm_info.file_name_list[aud_context_p->vm_info.num_of_vm] = file_name_p;
aud_context_p->vm_info.num_of_vm--;
aud_context_p->disc_full = KAL_FALSE;
return MED_RES_OK;
}
else
{
return MED_RES_FAIL;
}
}
i++;
}
return MED_RES_OPEN_FILE_FAIL;
}
/*****************************************************************************
* FUNCTION
* aud_vm_remove_all_file_from_list
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
*
*****************************************************************************/
kal_uint8 aud_vm_remove_all_file_from_list(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_uint16 i;
kal_int32 result;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
for (i = 0; i < aud_context_p->vm_info.num_of_vm && i < MAX_NUM_OF_VM_FILE; i++)
{
kal_wchar full_name[FULL_NAME_LEN];
kal_wsprintf(full_name, "%w\\%w", VM_DIR, aud_context_p->vm_info.file_name_list[i]);
result = FS_Delete(full_name);
if (result != FS_NO_ERROR)
{
kal_print("[AUD][VM]Delete non-existing file.");
}
}
aud_context_p->vm_info.num_of_vm = 0;
aud_context_p->disc_full = KAL_FALSE;
return MED_RES_OK;
}
/*****************************************************************************
* FUNCTION
* aud_vm_add_file_to_list
* DESCRIPTION
*
* PARAMETERS
* file_name [?]
* RETURNS
*
*****************************************************************************/
kal_bool aud_vm_add_file_to_list(kal_wchar *file_name)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (aud_context_p->vm_info.num_of_vm < MAX_NUM_OF_VM_FILE &&
aud_context_p->vm_info.file_name_list[aud_context_p->vm_info.num_of_vm] != NULL)
{
kal_mem_cpy(
aud_context_p->vm_info.file_name_list[aud_context_p->vm_info.num_of_vm],
file_name,
MAX_VM_FILE_NAME * ENCODE_BYTE);
aud_context_p->vm_info.num_of_vm++;
return KAL_TRUE;
}
else
{
return KAL_FALSE;
}
}
/*****************************************************************************
* FUNCTION
* aud_check_free_space
* DESCRIPTION
*
* PARAMETERS
* drive_name [?]
* RETURNS
*
*****************************************************************************/
kal_bool aud_check_free_space(kal_wchar *drive_name)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
FS_DiskInfo disk_info;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
FS_GetDiskInfo(drive_name, &disk_info, FS_DI_FREE_SPACE);
if (disk_info.FreeClusters > 0)
{
return KAL_TRUE;
}
else
{
return KAL_FALSE;
}
}
/*****************************************************************************
* FUNCTION
* aud_vm_record_req_hdlr
* DESCRIPTION
*
* PARAMETERS
* ilm_ptr [?]
* RETURNS
* void
*****************************************************************************/
void aud_vm_record_req_hdlr(ilm_struct *ilm_ptr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_uint8 cnf_result;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -