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

📄 port_test.c

📁 this program is ubicontent example source using BREW thanks.
💻 C
📖 第 1 页 / 共 4 页
字号:
 //======================================================
//颇老:  port_test.c
//
//林力: 勤靛迄栏肺 力绢窍绰 UBI 窍快胶甫 困茄 荤侩磊 捞亥飘 庆歹 颇老  
//
//汲疙:
//   备炼眉 冯(Room) 扁过捞 利侩等 览侩橇肺弊伐 备炼眉甫 
//   扁馆栏肺 荤侩磊 裹困狼 捞亥飘 贸府 窃荐 备泅 
//
//累己磊:
//  2009. 10. 23 蜡悼快, 辫楷铰, 沥籍裹  ZigbeX 123锅
//======================================================

#include "std.h"
#include "port_test.h"

void Sleep(int a);
static void TimerMp3Action2(void * pParam);
static void TimerMp3Action(void * pParam);
static int SetAction(port_test * pMe, OBJ_ID id, OBJ_FLAG flag, OBJ_CMD cmd, boolean mp3On); // Serial port write
int File_Access_Open(port_test *pMe);
void File_Access_Close(port_test *pMe);
void AlarmSetAction(port_test *pMe, int selectHour, int selectMin, char selectObj, char selectFlag, char selectCmd, int selectIndex);
boolean ObjectCreate(port_test *pMe);
void ObjectDestroy(port_test *pMe); //且寸 秦力
void DisplayInit(port_test *pMe); // Image load
void DisplayMenu(port_test *pMe);
int getContent(int AlarmObj); // Contants CHAR Type -> Int Type
char getSettingContent(int AlarmObj); // Int Type -> Contants CHAR Type 
static void TimerCallback(port_test *pMe);
static void OnRead(port_test * pMe); 
static void TimerSetAction(void * pParam);
void alarm_key_select(port_test * pMe, int index); //舅恩皋春狼 窍困皋春 虐急琶
void key_select(port_test * pMe, int index); // 辑宏皋春俊辑 虐急琶

void Sleep(int a)
{
	a *= 1000;
	while(--a);
}	

static void TimerMp3Action2(void * pParam)
{
	port_test * pMe = (port_test *)pParam;
	_D("timerMp3");
	pMe->nModeItem[0][0] = 0;
	pMe->nModeItem[1][0] = 0;
	pMe->nModeItem[2][0] = 0;
	pMe->nModeItem[3][0] = 0;
	DisplayMenu(pMe);
	ISHELL_CancelTimer(GetActiveShell(pMe),(PFNNOTIFY)TimerMp3Action2, pMe);
}

static void TimerMp3Action(void * pParam)
{
	port_test * pMe = (port_test *)pParam;
	char mp3Text[16];
	_D("timerMp3");
	SNPRINTF(mp3Text, sizeof(mp3Text), "./mp3/loc%d%d.mp3", 0, 1);
	pMe->nDoorLockItem[0][0] = 0;
	DisplayMenu(pMe);
	ISHELL_CreateInstance(GetActiveShell(pMe),AEECLSID_SOUNDPLAYER,(void**)&pMe->pSP);
	ISOUNDPLAYER_Set(pMe->pSP,SDT_FILE,mp3Text);
	ISOUNDPLAYER_Play(pMe->pSP);
	ISHELL_CancelTimer(GetActiveShell(pMe),(PFNNOTIFY)TimerMp3Action, pMe);
}

static int SetAction(port_test * pMe, OBJ_ID id, OBJ_FLAG flag, OBJ_CMD cmd, boolean mp3On) // Serial port write
{
	char mp3Text[16];
	SEND_PACKET sndBuf = {SEND_PACKET_HEAD, SEND_PACKET_DUMY, SEND_PACKET_TAIL};
	SET_DATA(sndBuf, id, flag, cmd); 
	
	if(mp3On == TRUE)
	{
		ISOUNDPLAYER_Stop(pMe->pSP);
		ISOUNDPLAYER_Stop(pMe->pSP);
		switch(id)
		{
			case DOORLOCK:
				SNPRINTF(mp3Text, sizeof(mp3Text), "./mp3/loc%d%d.mp3", 0, 0);
				ISHELL_SetTimer(GetActiveShell(pMe), 5000, TimerMp3Action, pMe);
				break;
			case TOILET_LIGHT:
				SNPRINTF(mp3Text, sizeof(mp3Text), "./mp3/led%d%d.mp3", 1, 6-cmd);
				break;
			case LIVING_ROOM_FIRST_LIGHT:
				SNPRINTF(mp3Text, sizeof(mp3Text), "./mp3/led%d%d.mp3", 2, 6-cmd);
				break;
			case LIVING_ROOM_SECOND_LIGHT:
				SNPRINTF(mp3Text, sizeof(mp3Text), "./mp3/led%d%d.mp3", 3, 6-cmd);
				break;
			case ROOM_FIRST_LIGHT:
				SNPRINTF(mp3Text, sizeof(mp3Text), "./mp3/led%d%d.mp3", 4, 6-cmd);
				break;
			case ROOM_SECOND_LIGHT:
				SNPRINTF(mp3Text, sizeof(mp3Text), "./mp3/led%d%d.mp3", 5, 6-cmd);
				break;
			case TV_POWER:
				SNPRINTF(mp3Text, sizeof(mp3Text), "./mp3/pow%d%d.mp3", 0, 6-cmd);
				break;
			case REFRIGERATOR_POWER:
				SNPRINTF(mp3Text, sizeof(mp3Text), "./mp3/pow%d%d.mp3", 1, 6-cmd);
				break;
			case VENTILATION_FAN_POWER:
				SNPRINTF(mp3Text, sizeof(mp3Text), "./mp3/pow%d%d.mp3", 2, 6-cmd);
				break;
			case AIR_CONDITIONER_POWER:
				SNPRINTF(mp3Text, sizeof(mp3Text), "./mp3/pow%d%d.mp3", 3, 6-cmd);
				break;
			case ROOM_FIRST_POWER:
				SNPRINTF(mp3Text, sizeof(mp3Text), "./mp3/pow%d%d.mp3", 4, 6-cmd);
				break;
			case ROOM_SECOND_POWER:
				SNPRINTF(mp3Text, sizeof(mp3Text), "./mp3/pow%d%d.mp3", 5, 6-cmd);
				break;
			case CURTAIN:
				SNPRINTF(mp3Text, sizeof(mp3Text), "./mp3/cur%d%d.mp3", 0, 6-cmd);
				break;
			case GASS_BREAKER:
				SNPRINTF(mp3Text, sizeof(mp3Text), "./mp3/gas%d%d.mp3", 0, 8-cmd);
				break;
		}
		ISOUNDPLAYER_Set(pMe->pSP,SDT_FILE,mp3Text);
		ISOUNDPLAYER_Play(pMe->pSP);
	}

	return IPORT_Write(pMe->pPort, (char *)sndBuf, sizeof(sndBuf));
}

int File_Access_Open(port_test *pMe)
{

	boolean ret;
	IFileMgr * pFileMgr;
	char * fileName = "test.txt"; 
	int i;
	_D("File_Access_Open");	
	if(pMe->pFile != NULL) 
	{
		IFILE_Release(pMe->pFile);
		pMe->pFile = NULL;
	}
	//file Open Start
		ISHELL_CreateInstance(GetActiveShell(pMe),AEECLSID_FILEMGR,(void**)&pFileMgr);
		pMe->pFile = IFILEMGR_OpenFile(pFileMgr,fileName,_OFM_READWRITE);
		IFILEMGR_Release(pFileMgr);
		IFILE_Seek(pMe->pFile,_SEEK_END,-30);
		ret = IFILE_Read(pMe->pFile,pMe->Buf,sizeof(pMe->Buf));
		//file Values Check Start
			//Values Check Start
			for(i = 0 ; i<=29;i++)
			{
				_D("wow.......%d",pMe->Buf[i]);
			} 
		//File Values Check End

		//厚飘窜困肺 蔼 历厘 1 难咙 0 波咙
		pMe->nLedItem[0][0] =(pMe->Buf[0]) & 0x01;				//ALL_LED;
		pMe->nDoorLockItem[0][0] = (pMe->Buf[0]>>1) & 0x01;		//DOORLOCK;
		pMe->nLedItem[1][0] =(pMe->Buf[0]>>2) & 0x01;			//TOILET_LIGHT;
		pMe->nLedItem[2][0] = (pMe->Buf[0]>>3) & 0x01;			//LIVING_ROOM_FIRST_LIGHT;
		pMe->nLedItem[3][0] = (pMe->Buf[0]>>4) & 0x01;			//LIVING_ROOM_SECOND_LIGHT;
		pMe->nLedItem[4][0] = (pMe->Buf[0]>>5) & 0x01;			//ROOM_FIRST_LIGHT;
		pMe->nLedItem[5][0] = (pMe->Buf[0]>>6) & 0x01;			//ROOM_SECOND_LIGHT;

		pMe->nPowerItem[0][0] = (pMe->Buf[0]>>7) & 0x01;		//TV_POWER;
		pMe->nPowerItem[1][0] = (pMe->Buf[1]>>1) & 0x01;		//REFRIGERATOR_POWER;
		pMe->nPowerItem[2][0] = (pMe->Buf[1]>>2) & 0x01;		//VENTILATION_FAN_POWER;
		pMe->nPowerItem[3][0] = (pMe->Buf[1]>>3) & 0x01;		//AIR_CONDITIONER_POWER;
		pMe->nPowerItem[4][0] = (pMe->Buf[1]>>4) & 0x01;		//ROOM_FIRST_POWER;
		pMe->nPowerItem[5][0] = (pMe->Buf[1]>>5) & 0x01;		//ROOM_SECOND_POWER;

		pMe->nCurtainItem[0][0] = (pMe->Buf[1]>>6) & 0x01;		//CURTAIN;
		pMe->nGasItem[0][0] = (pMe->Buf[1]>>7) & 0x01;			//GASS_BREAKER;

		pMe->mainImageVal =  pMe->Buf[2];
		
		pMe->nModeItem[0][0] = pMe->Buf[28] & 0x01;
		pMe->nModeItem[1][0] = (pMe->Buf[28]>>1) & 0x01;
		pMe->nModeItem[2][0] = (pMe->Buf[28]>>2) & 0x01;
		pMe->nModeItem[3][0] = (pMe->Buf[28]>>3) & 0x01;
		
		pMe->nSafeItem[0][0] = (pMe->Buf[28]>>4) & 0x01;
		pMe->nSafeItem[1][0] = (pMe->Buf[28]>>5) & 0x01;
		pMe->nSafeItem[2][0] = (pMe->Buf[28]>>6) & 0x01;
	
	//File Open End
	return pMe->Buf[3];
}
void File_Access_Close(port_test *pMe)
{
	unsigned short size;
	int i;
	//File Save Start
		if(pMe->pFile == NULL) return;

		IFILE_Seek(pMe->pFile,_SEEK_START,0);
		IFILE_Read(pMe->pFile,&size,sizeof(size));
		pMe->Buf[0] = pMe->nLedItem[0][0];
		pMe->Buf[0] |= (pMe->nDoorLockItem[0][0]<<1);
		pMe->Buf[0] |= (pMe->nLedItem[1][0]<<2);
		pMe->Buf[0] |= (pMe->nLedItem[2][0]<<3);
		pMe->Buf[0] |= (pMe->nLedItem[3][0]<<4);
		pMe->Buf[0] |= (pMe->nLedItem[4][0]<<5);
		pMe->Buf[0] |= (pMe->nLedItem[5][0]<<6);
		pMe->Buf[0] |= (pMe->nPowerItem[0][0]<<7);

		pMe->Buf[1] = 0x01 | (pMe->nPowerItem[1][0]<<1);
		pMe->Buf[1] |= (pMe->nPowerItem[2][0]<<2);
		pMe->Buf[1] |= (pMe->nPowerItem[3][0]<<3);
		pMe->Buf[1] |= (pMe->nPowerItem[4][0]<<4);
		pMe->Buf[1] |= (pMe->nPowerItem[5][0]<<5);
		pMe->Buf[1] |= (pMe->nCurtainItem[0][0]<<6);
		pMe->Buf[1] |= (pMe->nGasItem[0][0]<<7);

		pMe->Buf[2] = pMe->mainImageVal;
		pMe->Buf[3] = pMe->FlagProgramStart; 

		pMe->Buf[28] = pMe->nModeItem[0][0];
		pMe->Buf[28] |= (pMe->nModeItem[1][0]<<1);
		pMe->Buf[28] |= (pMe->nModeItem[2][0]<<2);
		pMe->Buf[28] |= (pMe->nModeItem[3][0]<<3);

		pMe->Buf[28] |= (pMe->nSafeItem[0][0]<<4);
		pMe->Buf[28] |= (pMe->nSafeItem[1][0]<<5);
		pMe->Buf[28] |= (pMe->nSafeItem[2][0]<<6);

		size = sizeof(pMe->Buf);
		
		//Values Check Start
			for(i = 0 ; i<=29;i++)
			{
				_D("close.......%d",pMe->Buf[i]);
			} 
		//Values Check End
		IFILE_Seek(pMe->pFile,_SEEK_START,0);
		IFILE_Write(pMe->pFile,&size,sizeof(size));

		IFILE_Seek(pMe->pFile,_SEEK_START,1);
		IFILE_Write(pMe->pFile,pMe->Buf,sizeof(pMe->Buf));
	//File Save End
}

/*
	//AlarmSetAction Example//
	selectHour = 11; 
	selectMin = 41;
	selectObj = TOILET_LIGHT;
	selectFlag = RELAY;
	selectCmd = ON1;
	selectIndex = 1;
*/
void AlarmSetAction(port_test *pMe, int selectHour, int selectMin, char selectObj, char selectFlag, char selectCmd, int selectIndex)
{
	int hour, min, time, aftertime;
	JulianType julianDate;

	_D("alarm function test ...");

	//Min Cal Start
		time = GET_SECONDS();
		GET_JULIANDATE(time, &julianDate);

		hour = selectHour - julianDate.wHour;
		min = selectMin - julianDate.wMinute;
		_D("Date juliandate %d , %d",julianDate.wHour, julianDate.wMinute);
		_D("Date %d , %d",hour, min);
		_D("Date select date %d , %d",selectHour, selectMin);
		if(min < 0) 
		{
			hour--;
			min = 60 + min;
		}
		
		if(hour <0)
			hour = 24 + hour;

		if(min == 0 && hour == 0)
			hour = 24;

		aftertime = (hour * 60) + min;
		_D("Date %d , %d",hour, min);
		_D("Date aftertime %d ",aftertime);
	//Min Cal End

	selectIndex *= 4;
	pMe->Buf[selectIndex+0] = selectObj;
	pMe->Buf[selectIndex+1] = (selectFlag<<4) | selectCmd;
	pMe->Buf[selectIndex+2] = selectHour;
	pMe->Buf[selectIndex+3] = selectMin;

	File_Access_Close(pMe); //File Save
	selectIndex /= 4;
	ISHELL_SetAlarm(GetActiveShell(pMe),0x1111000f,selectIndex,aftertime);
	//DisplayMenu(pMe);
	_D("11111");

}
boolean ObjectCreate(port_test *pMe)
{
	int ret;
	IPort * pPort = pMe->pPort;
	if(pPort == NULL)
	{
		ret = ISHELL_CreateInstance(GetActiveShell(pMe), AEECLSID_SERIAL, (void **)&pPort);
	}
	pMe->pPort = pPort;
	return(ret == SUCCESS);
}
void ObjectDestroy(port_test *pMe) //且寸 秦力
{
	int i, j, k;
	IPort * pPort = pMe->pPort;
	_D("ObjectDestroy ...");
	
	File_Access_Close(pMe); //颇老 历厘

	if(pMe->pFile != NULL) 
	{
			IFILE_Release(pMe->pFile);
			pMe->pFile = NULL;
	}

	if(pPort != NULL)
	{
		IPORT_Close(pPort);
		IPORT_Release(pPort);
		pPort = NULL;
	}

	if(pMe->errorImage1 != NULL)
	{
		IIMAGE_Release(pMe->errorImage1);
		pMe->errorImage1=NULL;
	}
	if(pMe->errorImage2 != NULL)
	{
		IIMAGE_Release(pMe->errorImage2);
		pMe->errorImage2=NULL;
	}
	if(pMe->errorImage3 != NULL)
	{
		IIMAGE_Release(pMe->errorImage3);
		pMe->errorImage3=NULL;
	}

	if(pMe->loadingImage != NULL)
	{
		IIMAGE_Release(pMe->loadingImage);
		pMe->loadingImage=NULL;
	}

	if(pMe->doorlockImage != NULL)
	{
		IIMAGE_Release(pMe->doorlockImage);
		pMe->doorlockImage=NULL;
	}

	if(pMe->doorlockIconImage != NULL)
	{
		IIMAGE_Release(pMe->doorlockIconImage);
		pMe->doorlockIconImage=NULL;
	}

	if(pMe->ledImage != NULL)
	{
		IIMAGE_Release(pMe->ledImage);
		pMe->ledImage=NULL;
	}

	if(pMe->powerImage != NULL)
	{
		IIMAGE_Release(pMe->powerImage);
		pMe->powerImage=NULL;
	}

	if(pMe->cutainImage != NULL)
	{
		IIMAGE_Release(pMe->cutainImage);
		pMe->cutainImage=NULL;
	}

	if(pMe->gasImage != NULL)
	{
		IIMAGE_Release(pMe->gasImage);
		pMe->gasImage=NULL;
	}

	if(pMe->gasIconImage != NULL)
	{
		IIMAGE_Release(pMe->gasIconImage);
		pMe->gasIconImage=NULL;
	}

	if(pMe->safeImage != NULL)
	{
		IIMAGE_Release(pMe->safeImage);
		pMe->safeImage=NULL;
	}

	if(pMe->modeImage != NULL)
	{
		IIMAGE_Release(pMe->modeImage);
		pMe->modeImage=NULL;
	}

	if(pMe->setImage != NULL)
	{
		IIMAGE_Release(pMe->setImage);
		pMe->setImage=NULL;
	}

	if(pMe->setIconImage != NULL)
	{
		IIMAGE_Release(pMe->setIconImage);
		pMe->setIconImage=NULL;
	}
	if(pMe->mainImage != NULL)
	{
		IIMAGE_Release(pMe->mainImage);
		pMe->mainImage=NULL;
	}

	if(pMe->alarmBackImage != NULL)
	{
		IIMAGE_Release(pMe->alarmBackImage);
		pMe->alarmBackImage=NULL;
	}

	if(pMe->alarmSubImage != NULL)
	{
		IIMAGE_Release(pMe->alarmSubImage);
		pMe->alarmSubImage=NULL;
	}
	
	for(i=0; i<6; i++)
	{
		if(pMe->ICon[i] != NULL){
			IIMAGE_Release(pMe->ICon[i]);
			pMe->ICon[i]=NULL;
		}
	}

	for(j=0; j<3; j++)
	{
		if(pMe->safeIconImage[j] != NULL){
			IIMAGE_Release(pMe->safeIconImage[j]);
			pMe->safeIconImage[j]=NULL;
		}
	}

	for(k=0; k<4; k++)
	{
		if(pMe->modeIconImage[k] != NULL){
			IIMAGE_Release(pMe->modeIconImage[k]);
			pMe->modeIconImage[k]=NULL;
		}
	}
	
	if(pMe->pSP != NULL)
	{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -