📄 mutemode.c
字号:
#include "AEEModGen.h" // Module interface definitions
#include "AEEAppGen.h" // Applet interface definitions
#include "AEEShell.h" // Shell interface definitions
#include "AEEFile.h" // File interface definitions
#include "AEEDB.h" // Database interface definitions
#include "AEENet.h" // Socket interface definitions
#include "AEESound.h" // Sound Interface definitions
#include "AEETapi.h" // TAPI Interface definitions
#include "MuteMode.bid"
#define NVM_FILE "fs:/shared/root/nvm/nvm/nvm_item_file"
#define MODE_DIR "fs:/cfg/settings/profiles"
#define MUTE_FILE "fs:/shared/config/mute.dat"
typedef struct _MuteMode {
AEEApplet a ; // First element of this structure must be AEEApplet
AEEDeviceInfo DeviceInfo; // always have access to the hardware device information
uint8 pVolumeMode;
uint8 pVolumeIdle;
uint8 pVolumeCl;
flg mExit;
char * ItemFileName;
char * ModeFileName;
char * MuteFileName;
IFileMgr * pIFileMgr;
} MuteMode;
static boolean MuteMode_HandleEvent(MuteMode* pMe,
AEEEvent eCode, uint16 wParam,
uint32 dwParam);
boolean MuteMode_InitAppData(MuteMode* pMe);
void MuteMode_FreeAppData(MuteMode* pMe);
void MuteMode_ReadMode(MuteMode* pMe, uint8 Mode);
void MuteMode_ReadItems(MuteMode* pMe);
void MuteMode_SaveData(MuteMode* pMe);
int AEEClsCreateInstance(AEECLSID ClsId, IShell *pIShell, IModule *po, void **ppObj)
{
*ppObj = NULL;
if( ClsId == AEECLSID_MUTEMODE ){
if( AEEApplet_New(sizeof(MuteMode), ClsId, pIShell, po, (IApplet**)ppObj,(AEEHANDLER)MuteMode_HandleEvent,(PFNFREEAPPDATA)MuteMode_FreeAppData) ){
if(MuteMode_InitAppData((MuteMode*)*ppObj)){
return(AEE_SUCCESS);
}else{
IAPPLET_Release((IApplet*)*ppObj);
return EFAILED;
}
} // end AEEApplet_New
}
return(EFAILED);
}
static boolean MuteMode_HandleEvent(MuteMode* pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
switch (eCode)
{
case EVT_APP_START:
ISHELL_CloseApplet(pMe->a.m_pIShell, FALSE);
MuteMode_ReadItems(pMe);
return(TRUE);
case EVT_APP_STOP:
if(!pMe->mExit)
*((boolean*) dwParam) = FALSE;
return(TRUE);
case EVT_APP_SUSPEND:
return(TRUE);
case EVT_APP_RESUME:
return(TRUE);
case EVT_APP_MESSAGE:
return(TRUE);
case EVT_KEY:
return(TRUE);
default:
break;
}
return FALSE;
}
boolean MuteMode_InitAppData(MuteMode* pMe)
{
pMe->DeviceInfo.wStructSize = sizeof(pMe->DeviceInfo);
ISHELL_GetDeviceInfo(pMe->a.m_pIShell,&pMe->DeviceInfo);
ISHELL_CreateInstance(pMe->a.m_pIShell, AEECLSID_FILEMGR, (void **)&pMe->pIFileMgr);
pMe->pVolumeMode = 5;
pMe->pVolumeIdle = 5;
pMe->pVolumeCl = 5;
pMe->mExit = FALSE;
return TRUE;
}
void MuteMode_FreeAppData(MuteMode* pMe)
{
IFILEMGR_Release(pMe->pIFileMgr);
}
void MuteMode_ReadItems(MuteMode* pMe){
IFile * pIFile = NULL;
byte Data[23743];
uint8 Mode = 5;
pIFile = IFILEMGR_OpenFile(pMe->pIFileMgr, NVM_FILE, _OFM_READ);
if(pIFile){
IFILE_Read( pIFile, &Data, sizeof(Data));
Mode = Data[0x780];
pMe->pVolumeIdle = Data[0xE4D];
pMe->pVolumeCl = Data[0x137E];
//FREE(Datum);
IFILE_Release(pIFile);
}
MuteMode_ReadMode(pMe, Mode);
}
void MuteMode_ReadMode(MuteMode* pMe, uint8 Mode){
char * fileName = "fs:/cfg/settings/profiles";
IFile * pIFile = NULL;
byte Data[267];
int i;
switch(Mode){
case 1:
STRCPY(fileName, MODE_DIR DIRECTORY_STR "general.dat");
break;
case 2:
STRCPY(fileName, MODE_DIR DIRECTORY_STR "silent.dat");
break;
case 3:
STRCPY(fileName, MODE_DIR DIRECTORY_STR "meeting.dat");
break;
case 4:
STRCPY(fileName, MODE_DIR DIRECTORY_STR "outdoor.dat");
break;
case 5:
STRCPY(fileName, MODE_DIR DIRECTORY_STR "user1.dat");
break;
case 6:
STRCPY(fileName, MODE_DIR DIRECTORY_STR "user2.dat");
break;
case 7:
STRCPY(fileName, MODE_DIR DIRECTORY_STR "car_kit.dat");
break;
case 8:
STRCPY(fileName, MODE_DIR DIRECTORY_STR "headset.dat");
break;
}
pIFile = IFILEMGR_OpenFile(pMe->pIFileMgr, fileName, _OFM_READ);
if(pIFile){
IFILE_Read( pIFile, &Data, sizeof(Data));
pMe->pVolumeMode = Data[0x28];
//FREE(Datum);
IFILE_Release(pIFile);
}
MuteMode_SaveData(pMe);
}
void MuteMode_SaveData(MuteMode* pMe){
IFile * pIfile = NULL;
uint8 Mute = 0;
if(pMe->pVolumeCl == 0 || pMe->pVolumeIdle == 0 || pMe->pVolumeMode == 0)
Mute = 1;
if( IFILEMGR_Test(pMe->pIFileMgr, MUTE_FILE)==SUCCESS )
IFILEMGR_Remove(pMe->pIFileMgr, MUTE_FILE);
pIfile = IFILEMGR_OpenFile(pMe->pIFileMgr, MUTE_FILE,_OFM_CREATE);
if( pIfile ){
IFILE_Write(pIfile, &Mute, sizeof( Mute ));
IFILE_Release(pIfile);
}
pMe->mExit = TRUE;
ISHELL_CloseApplet(pMe->a.m_pIShell, FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -