📄 upgradefirmware.c
字号:
#include "Utility.h"
void __stdcall ServUtlUpgradeCallback(HANDLE hDevice, DWORD dwContext, DWORD dwStatus,
DWORD dwParam1, DWORD dwParam2);
/*!
***************************************************************************
* \brief
* upgrade firmware
* \param tServerInfo
[in] server info
* \param *pszFileName
[in] firmware file-name
* \return
* \retval -1 firmware file not exist
* \retval S_OK upgrade success
**************************************************************************/
int UpgradeFirmware(TSERVER_INFO tServerInfo, char *pszFileName)
{
HANDLE hServerUtl;
HANDLE hDevice;
char lpszModelName[64];
TSERVERUTL_UPG_INFO tUpgInfo;
SCODE scRet;
scRet = ServerUtlInit(&hServerUtl, &hDevice, lpszModelName, tServerInfo);
if (scRet != S_OK)
return scRet;
if (pszFileName[0] == 0 || access(pszFileName, 0) != 0)
{
ServerUtlRelease(&hServerUtl, &hDevice);
return -1;
}
memset(&tUpgInfo, 0, sizeof(tUpgInfo));
tUpgInfo.dwContext = (DWORD)0;
strcpy(tUpgInfo.szFileName ,pszFileName);
tUpgInfo.pfUpgradeCB = ServUtlUpgradeCallback;
scRet = ServerUtl_Upgrade(hDevice, &tUpgInfo);
ServerUtlRelease(&hServerUtl, &hDevice);
if (scRet != S_OK)
return scRet;
return 0;
}
void __stdcall ServUtlUpgradeCallback(HANDLE hDevice, DWORD dwContext, DWORD dwStatus,
DWORD dwParam1, DWORD dwParam2)
{
char szMsg[MAX_PATH];
TSERVERUTL_UPGSEND_INFO *ptUpgSendInfo;
switch (dwParam1)
{
case SERVERUTL_UPG_UNPACK_FILE:
strcpy(szMsg, "File Unpacked...");
break;
case SERVERUTL_UPG_FTP_CONNECT:
strcpy(szMsg, "Server Connected..");
break;
case SERVERUTL_UPG_RM_REMOTE_FILE:
sprintf(szMsg, "Server file or directory %s removed.", (const char *) dwParam2);
break;
case SERVERUTL_UPG_CREATE_DIR:
sprintf(szMsg, "Create directory %s on server.", (const char *) dwParam2);
break;
case SERVERUTL_UPG_CHANGE_DIR:
sprintf(szMsg, "Change to server directory %s.", (const char *) dwParam2);
break;
case SERVERUTL_UPG_PUTTING_FILE:
//sprintf(szMsg, "file %s is uploading.", (const char *) dwParam2);
{
ptUpgSendInfo = (TSERVERUTL_UPGSEND_INFO *) dwParam2;
sprintf(szMsg, "uploading %s %d%%/%d%%",
ptUpgSendInfo->szCurFileName,
ptUpgSendInfo->lCurFileSize>0?(ptUpgSendInfo->lCurFileSentSize * 100 / ptUpgSendInfo->lCurFileSize):0,
ptUpgSendInfo->lTotalSize>0?(ptUpgSendInfo->lCurSentSize * 100 / ptUpgSendInfo->lTotalSize):0);
}
break;
case SERVERUTL_UPG_PUT_FILE:
sprintf(szMsg, "file %s uploaded.", (const char *) dwParam2);
break;
case SERVERUTL_UPG_RESTART_SRV:
strcpy(szMsg, "Restart command set");
break;
case SERVERUTL_UPG_WAIT_REBOOT:
strcpy(szMsg, "Waiting for server to reboot");
break;
case SERVERUTL_UPG_SERVER_REBOOTING:
strcpy(szMsg, "Server is rebooting");
break;
case SERVERUTL_UPG_SERVER_REBOOTED:
strcpy(szMsg, "Server rebooted OK");
break;
case SERVERUTL_UPG_REMOVE_TMP_FILE:
sprintf(szMsg, "Local temp file %s removed", (const char *) dwParam2);
break;
case SERVERUTL_UPG_SERVER_RESET:
sprintf(szMsg, "Server is reset\n");
default:
return;
}
printf("%s\n", szMsg);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -