📄 dskmanager.c
字号:
//---------------------------------------------------------------------------------
//
// Copyright (C) SEIKO EPSON CORP. 2004
//
// GROUP : SEE LSI
// FILE : dskmanager.c
// MODULE : disk manage app
// Function description : application
// Revision history :
// Date userName Description
// 2004/06/7 David.Ji start
//
// Notes :
//
//---------------------------------------------------------------------------------
//---------------------------------------------------------------------------------
// Include files (#include)
//---------------------------------------------------------------------------------
#include "ros33.h"
#include "sysGUI.h"
#include "comFS.h"
//---------------------------------------------------------------------------------
// Marco definition
//---------------------------------------------------------------------------------
#define IDC_BTN1 100
#define IDC_BTN2 110
#define IDC_BTN3 120
#define IDC_BTN4 130
#define IDC_PROGBAR 140
typedef struct t_DskInfo
{
unsigned int ulTotalBytes;
unsigned int ulFreeBytes;
float fFreePer;
unsigned char ubStatus;
}T_DISKINFO;
typedef T_DISKINFO* pT_DISKINFO;
T_MODULE T_WORD fnDSKM_GetDiskInfo(T_DISKINFO*);
T_MODULE T_VOID fnDSKM_ShowDiskInfo(T_GUI_HWND, T_DISKINFO*);
/******************************************************************
* FUNCTION: DskManagerWinProc(
*
* PURPOSE:
* disk manager win proc
*
* PARAMETERS
* Input:
* Output:
* InOut:
*
* Return value:
*
* Reentrant : No
*****************************************************************/
T_WORD DskManagerWinProc(T_GUI_HWND hWnd, T_WORD message, T_GUI_WPARAM wParam, T_GUI_LPARAM lParam)
{
T_MODULE T_GUI_HWND hChildWnd1, hChildWnd2, hChildWnd3, hChildWnd4,
hChildWnd5, hChildWnd6, hChildWnd7;
T_MODULE T_DISKINFO stDiskInfo;
T_MODULE T_UBYTE ubFmtStep = FMT_STAGE1;
T_MODULE T_UBYTE ubSelDsk;
switch (message) {
case MSG_CREATE:
{
hChildWnd1 = fnGUI_CreateWindow (CTRL_BUTTON,
"OK",
WS_CHILD
| STY_BTN_DEFPUSHBUTTON
| WS_VISIBLE,
IDC_BTN1,
80, 10, 60, 20, hWnd, 0);
hChildWnd2 = fnGUI_CreateWindow (CTRL_BUTTON,
"Exit",
WS_CHILD
| STY_BTN_PUSHBUTTON
| WS_VISIBLE,
IDC_BTN2,
80, 40, 60, 20, hWnd, 0);
hChildWnd3 = fnGUI_CreateWindow (CTRL_BUTTON,
"Format",
WS_CHILD
| STY_BTN_PUSHBUTTON
| WS_VISIBLE,
IDC_BTN3,
80, 70, 60, 20, hWnd, 0);
hChildWnd4 = fnGUI_CreateWindow (CTRL_BUTTON,
"Ram disk",
WS_CHILD | STY_BTN_AUTORADIOBUTTON
| WS_VISIBLE | WS_GROUP,
IDC_BTN4,
5, 15, 80, 15, hWnd, 0);
hChildWnd5 = fnGUI_CreateWindow (CTRL_BUTTON,
"Smt disk",
WS_CHILD | STY_BTN_AUTORADIOBUTTON
| WS_VISIBLE,
IDC_BTN4 + 1,
5, 45, 80, 15, hWnd, 0);
hChildWnd6 = fnGUI_CreateWindow (CTRL_BUTTON,
"Mcp disk",
WS_CHILD | STY_BTN_AUTORADIOBUTTON
| WS_VISIBLE,
IDC_BTN4 + 2,
5, 75, 80, 15, hWnd, 0);
switch(g_StgUseDrv)
{
case DRV_RAM:
fnGUI_SendMessage (hChildWnd4, MSG_BTN_SETCHECK, STA_BTN_CHECKED, 0);
break;
case DRV_SMT:
fnGUI_SendMessage (hChildWnd5, MSG_BTN_SETCHECK, STA_BTN_CHECKED, 0);
break;
case DRV_MCP:
case DRV_ADV:
fnGUI_SendMessage (hChildWnd6, MSG_BTN_SETCHECK, STA_BTN_CHECKED, 0);
}
hChildWnd7 = fnGUI_CreateWindow (CTRL_PROGBAR,
"",
WS_VISIBLE | STY_PB_NOTIFY,
IDC_PROGBAR,
5, 170, 140, 20, hWnd, 0);
fnGUI_SendMessage (hChildWnd7, MSG_PB_SETRANGE , 0, 180);
fnGUI_SendMessage (hChildWnd7, MSG_PB_SETSTEP , 10, 0);
ubSelDsk = g_StgUseDrv;
if(fnDSKM_GetDiskInfo(&stDiskInfo) != FS_SUCCESS)
{
fnGUI_SendMessage (hChildWnd1, MSG_ENABLE, 0, 0);
fnGUI_SendMessage (hChildWnd3, MSG_ENABLE, 0, 0);
fnGUI_SendMessage (hChildWnd4, MSG_ENABLE, 0, 0);
fnGUI_SendMessage (hChildWnd5, MSG_ENABLE, 0, 0);
fnGUI_SendMessage (hChildWnd6, MSG_ENABLE, 0, 0);
}
fnDSKM_ShowDiskInfo (hWnd, &stDiskInfo);
fnGUI_InvalidateRect (hWnd, NULL, FALSE);
}
break;
case MSG_PAINT:
{
fnDSKM_ShowDiskInfo(hWnd, &stDiskInfo);
}
break;
case MSG_COMMAND:
{
T_WORD id = LOHWORD(wParam);
T_WORD code = HIHWORD(wParam);
switch(id)
{
case IDC_BTN1:
if(ComFS_SelDsk(ubSelDsk) == FS_SUCCESS){
fnDSKM_GetDiskInfo(&stDiskInfo);
fnGUI_InvalidateRect (hWnd, NULL, FALSE);
}
else{
if(fnGUI_MessageBox (hWnd,
"Disk open error,format disk?", "Disk Manager",
MB_YESNO | MB_ICONQUESTION | MB_ALIGNCENTER)== IDYES){
fnGUI_SendMessage (hChildWnd7, MSG_PB_SETPOS, 0, 0);
fnGUI_SetTimer (hWnd, 10, 20);
ubFmtStep = FMT_STAGE1;
ComFS_Format(ubSelDsk, ubFmtStep);
}
}
break;
case IDC_BTN2:
fnGUI_PostMessage (hWnd, MSG_CLOSE, 0, 0);
break;
case IDC_BTN3: //formate buttion click
if(code == SIG_BTN_CLICKED){
if(fnGUI_MessageBox (hWnd,
"All data will be lost?", "Disk Manager",
MB_YESNO | MB_ICONQUESTION | MB_ALIGNCENTER) == IDYES)
{
fnGUI_SendMessage (hChildWnd7, MSG_PB_SETPOS, 0, 0);
fnGUI_SetTimer (hWnd, 10, 20);
ubFmtStep = FMT_STAGE1;
ComFS_Format(ubSelDsk, ubFmtStep);
}
}
break;
case IDC_BTN4:
if(code == SIG_BTN_SETFOCUS){
ubSelDsk = DRV_RAM;
}
break;
case IDC_BTN4+1:
if(code == SIG_BTN_SETFOCUS){
ubSelDsk = DRV_SMT;
}
break;
case IDC_BTN4+2:
if(code == SIG_BTN_SETFOCUS){
ubSelDsk = DRV_MCP;
}
break;
case IDC_PROGBAR: //progress bar step
if(code == SIG_PB_REACHMAX)
{
fnGUI_KillTimer (hWnd, 10);
ubFmtStep = FMT_STAGE1;
fnGUI_MessageBox (hWnd,
"Disk format complete", "Disk Manager",
MB_OK | MB_ICONINFORMATION | MB_ALIGNCENTER);
fnDSKM_GetDiskInfo(&stDiskInfo);
g_StgUseDrv = ubSelDsk;
fnGUI_InvalidateRect (hWnd, NULL, FALSE);
}
break;
}
}
break;
case MSG_TIMER:
ubFmtStep ++;
if(ubFmtStep > FMT_MAXSTAGE){
fnGUI_SendMessage (hChildWnd7, MSG_PB_STEPIT, 0, 0);
break;
}
if(ComFS_Format(ubSelDsk, ubFmtStep) != SMT_E_SUCCESS)
{
fnGUI_KillTimer (hWnd, 10);
ubFmtStep = FMT_STAGE1;
fnGUI_MessageBox (hWnd,
"Disk format error", "Disk Manager",
MB_OK | MB_ICONASTERISK | MB_ALIGNCENTER);
fnGUI_SendMessage (hChildWnd7, MSG_PB_SETPOS, 0, 0);
}
else{
fnGUI_SendMessage (hChildWnd7, MSG_PB_STEPIT, 0, 0);
}
break;
case MSG_CLOSE:
fnGUI_DestroyMainWindow (hChildWnd1 );
fnGUI_DestroyMainWindow (hChildWnd2 );
fnGUI_DestroyMainWindow (hChildWnd3 );
fnGUI_DestroyMainWindow (hChildWnd4 );
fnGUI_DestroyMainWindow (hChildWnd5 );
fnGUI_DestroyMainWindow (hChildWnd6 );
fnGUI_DestroyMainWindow (hChildWnd7 );
fnGUI_DestroyMainWindow (hWnd );
break;
}
return fnGUI_DefaultMainWinProc(hWnd, message, wParam, lParam);
}
/******************************************************************
* FUNCTION: GetDiskInfo(
*
* PURPOSE:
* Get disk info
*
* PARAMETERS
* Input:
* Output:
* InOut:
*
* Return value:
*
* Reentrant : No
*****************************************************************/
T_MODULE T_WORD fnDSKM_GetDiskInfo(T_DISKINFO *pDiskInfo)
{
T_WORD RetVal;
T_UWORD ulFree, ulTotal;
struct diskfree_t stDiskFree;
if(ComFS_GetDiskFree(&stDiskFree) != FS_SUCCESS){
pDiskInfo->ubStatus = 0;
return FS_FAILED;
}
ulFree = stDiskFree.avail_clusters \
* stDiskFree.sectors_per_cluster \
* stDiskFree.bytes_per_sector;
ulTotal = stDiskFree.total_clusters \
* stDiskFree.sectors_per_cluster \
* stDiskFree.bytes_per_sector;
pDiskInfo->ulFreeBytes = ulFree;
pDiskInfo->ulTotalBytes = ulTotal;
pDiskInfo->fFreePer = ((T_FLOAT)ulFree/(T_FLOAT)ulTotal)*360;
pDiskInfo->ubStatus = 1;
return FS_SUCCESS;
}
/******************************************************************
* FUNCTION: GetDiskInfo(
*
* PURPOSE:
* Get disk info
*
* PARAMETERS
* Input:
* Output:
* InOut:
*
* Return value:
*
* Reentrant : No
*****************************************************************/
T_MODULE T_VOID fnDSKM_ShowDiskInfo(T_GUI_HWND hWnd, T_DISKINFO* pDiskInfo)
{
T_BYTE buffer [16];
T_GUI_HDC hdc;
T_UWORD total = pDiskInfo->ulTotalBytes;
T_UWORD free = pDiskInfo->ulFreeBytes;
T_UWORD per = (T_UWORD)pDiskInfo->fFreePer;
T_UWORD used;
used = total - free;
hdc = fnGUI_GetClientDC(hWnd);
if(pDiskInfo->ubStatus)
{
// info disk Free
fnGUI_SetPenColor(hdc, COLOR_RED);
fnGUI_Ellipse(hdc,40,128,29,29,0,360,TRUE);
fnGUI_DrawRoundRect(hdc,85,105,8,8,0,0,TRUE);
fnGUI_TextOut (hdc, 100, 100, "free");
sprintf(buffer, "%d b",free);
fnGUI_TextOut (hdc, 80, 115, " ");
fnGUI_TextOut (hdc, 80, 115, buffer);
// info disk used
fnGUI_SetPenColor(hdc, COLOR_BLUE);
if((T_UWORD)per != 360)
fnGUI_Ellipse(hdc,40,128,29,29,0,-(360-per),TRUE);
fnGUI_DrawRoundRect(hdc,85,135,8,8,0,0,TRUE);
fnGUI_TextOut (hdc, 100, 130, "used");
sprintf(buffer, "%d b",used);
fnGUI_TextOut (hdc, 80, 145, " ");
fnGUI_TextOut (hdc, 80, 145, buffer);
}
else
{
fnGUI_SetPenColor(hdc, COLOR_DARKGRAY);
fnGUI_Ellipse(hdc,40,128,29,29,0,360,TRUE);
fnGUI_DrawRoundRect(hdc,85,105,8,8,0,0,TRUE);
fnGUI_TextOut (hdc, 80, 115, "Error!");
fnGUI_TextOut (hdc, 80, 130, "USB");
fnGUI_TextOut (hdc, 80, 140, "Connected!");
}
fnGUI_ReleaseDC(hdc);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -