⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mutemode.c

📁 Not finishet app from red NV Items.
💻 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 + -