📄 port_test.c
字号:
//======================================================
//颇老: 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 + -