📄 main.c.svn-base
字号:
case ACL_LINK:
DPrintf(" $$$: LINK NUMBER CHANGE");
break;
case ACCESSIBLE_MODE:
////DPrintf(" $$$: accesible mode change to %2x", mpx_BtGetAccessibleMode());
break;
case REMOTE_DEVS_INQUIRY:
if(type == INFORM_START)
{
DPrintf(" $$$: inquiry start");
}
else if(type == INFORM_COMPLETE)
DPrintf(" $$$: inquriry stop");
break;
case REMOTE_DEVS_LIST:
if(type == INFORM_NUMBER_CHANGE)
DPrintf(" $$$: device list number change");
else if(type == INFORM_CONTENT_CHANGE)
DPrintf(" $$$: device list content change");
break;
case SYS_CSR_BCCMD_COMPLETE:
BtBCcmdReBoot();
break;
default: //not handled inform action
break;
}
}
else
{
switch(action)
{
case REMOTE_DEVS:
DPrintf(" $$$: select REMOTE devs");
break;
case PIN_CODE:
{
DPrintf("pin code request from %S",&BTINT_U08DATA(buffer, 0));
U08 pin[16];
InputPin(pin);
mpx_BtSetPin(pin);
}
break;
}
}
}
void MainMenuHandler(U32 type,...)
{
U08 cmd;
U08 *buffer;
cmd = *(U32*)(((U08*)&type)+4);
buffer = *(U32*)(((U08*)&type)+4);
if(type == BTCMD)
{
switch(cmd)
{
case BT_START:
mpx_BtSetLocalAddr(0x1111, 0x23, 0x00456677);
if(mpx_BtEnable(BTCHIP_DELTA_322, BT_UART, 921600) == BT_RETURN_PENDING)
{
MenuItemDisable(BT_START);
DPrintf("Bluetooth initializing........wait!!");
}
else //immediately fail, wrong state
{
DPrintf("can't start bluetooth");
pagemenu->refresh = TRUE;
}
break;
case BT_EXIT:
btexit = TRUE;
break;
case BT_STOP:
if(mpx_BtDisable() == 0)
{
MenuItemDisable(BT_STOP);
MenuItemEnable(BT_START);
MenuItemEnable(BT_EXIT);
MenuItemDisable(BT_DEVLST);
MenuItemDisable(BT_OPP);
MenuItemDisable(BT_FTP);
MenuItemDisable(BT_A2DP_SRC);
MenuItemDisable(BT_HANDSET_GW);
MenuItemDisable(BT_SPP);
MenuItemDisable(BT_HANDSET);
MenuItemDisable(BT_SETTING);
}
else //wrong state
{
DPrintf("can't stop bluetooth");
pagemenu->refresh = TRUE;
}
break;
case BT_SETTING:
pagemenu = &SettingMenu;
pagemenu->refresh = TRUE;
break;
case BT_OPP:
pagemenu = &OppMenu;
pagemenu->refresh = TRUE;
break;
case BT_DEVLST:
pagemenu = &DVsMenu;
pagemenu->refresh = TRUE;
ShowTrustedDeviceList();
break;
case BT_FTP:
pagemenu = &FtpMenu;
pagemenu->refresh = TRUE;
break;
case BT_A2DP_SRC:
pagemenu = &A2DPsrcMenu;
pagemenu->refresh = TRUE;
break;
case BT_HANDSET_GW:
pagemenu = &HSGWMenu;
pagemenu->refresh = TRUE;
break;
case BT_SPP:
pagemenu = &SPPMenu;
pagemenu->refresh = TRUE;
break;
case BT_HANDSET:
pagemenu = &HandsetMenu;
pagemenu->refresh = TRUE;
break;
}
}
else //BTINT
{
U08 category;
U08 type;
U08 action;
U08 who;
U16 datalen;
static aaa=0;
category = BTINT_CATEGORY(buffer);
type = BTINT_TYPE(buffer);
action = BTINT_ACTION(buffer);
who = BTINT_WHO(buffer);
datalen = BTINT_DATALEN(buffer);
if(!(type & 0x80)) //inform type
{
switch(action)
{
case BLUETOOTH_ENABLE:
{
if(type == INFORM_COMPLETE)
{
DPrintf("enbale ok");
U32 profiles;
mpx_BtProfileSupported(&profiles);
MenuItemDisable(BT_START);
MenuItemEnable(BT_STOP);
MenuItemEnable(BT_DEVLST);
if(profiles & SUPPORT_OPP)
MenuItemEnable(BT_OPP);
if(profiles & SUPPORT_FTP_CLIENT)
MenuItemEnable(BT_FTP);
if(profiles & SUPPORT_A2DP_SOURCE)
MenuItemEnable(BT_A2DP_SRC);
if(profiles & SUPPORT_HEADSET_GW)
MenuItemEnable(BT_HANDSET_GW);
if(profiles & SUPPORT_SPP)
MenuItemEnable(BT_SPP);
if(profiles & SUPPORT_HEADSET_HEADSET)
MenuItemEnable(BT_HANDSET);
MenuItemEnable(BT_SETTING);
}
else if(type == INFORM_FAIL)
{
DPrintf("enbale fail");
MenuItemEnable(BT_START);
MenuItemDisable(BT_DEVLST);
MenuItemDisable(BT_OPP);
MenuItemDisable(BT_FTP);
MenuItemDisable(BT_A2DP_SRC);
MenuItemDisable(BT_HANDSET_GW);
MenuItemDisable(BT_SPP);
MenuItemDisable(BT_HANDSET);
MenuItemDisable(BT_SETTING);
}
//BOOL radio;
//mpx_BtRadioStatusGet(&radio);
//DPrintf(" $$$: radio is %s", radio ? "ON" : "OFF");
}
default:
BtDefaultIntHandler(buffer);
break;
}
}
else
BtDefaultIntHandler(buffer);
}
}
void SettingMenuHandler(U32 type, ...)
{
U08 cmd;
U08 *buffer;
cmd = *(U32*)(((U08*)&type)+4);
buffer = *(U32*)(((U08*)&type)+4);
if(type == BTCMD)
{
cmd = *(U32*)(((U08*)&type)+4);
switch(cmd)
{
case SETTING_EXIT:
mpx_BtSetLocalName("Ghost of Brain!");
pagemenu = &MainMenu;
pagemenu->refresh = TRUE;
break;
case SETTING_SHOW:
ShowSetting();
pagemenu->refresh = TRUE;
break;
case SETTING_ACCESSIBLE:
{
U08 key;
DPrintf("*****************************************/");
DPrintf("1. Not discovered, not connected");
DPrintf("2. discovered only");
DPrintf("3. connected only");
DPrintf("4. allow discovered and connected");
DPrintf("5. limited discovered and connected");
DPrintf("select key: \\-");
DPrintf("*****************************************/");
key = SelectKey();
if(key < 5)
mpx_BtSetAccesibleModeNC(key - 1);
else if(key == 5)
mpx_BtSetAccesibleModeNC(0x13);
pagemenu->refresh = TRUE;
}
break;
}
}
else
{
BtDefaultIntHandler(buffer);
}
}
void OppMenuHandler(U32 type, ...)
{
U08 cmd;
U08 *buffer;
cmd = *(U32*)(((U08*)&type)+4);
buffer = *(U32*)(((U08*)&type)+4);
if(type == BTCMD)
{
cmd = *(U32*)(((U08*)&type)+4);
switch(cmd)
{
case OPP_EXIT:
pagemenu = &MainMenu;
pagemenu->refresh = TRUE;
break;
case OPP_PUTFILE:
mpx_BtObexOppPushObject("\0/\0t\0a\0l\0l\0p\0l\0a\0y\0.\0j\0p\0g\0");
break;
}
}
else
{
U08 inttype;
U08 intaction;
inttype = BTINT_TYPE(buffer);
intaction = BTINT_ACTION(buffer);
switch(intaction)
{
case REMOTE_DEVS:
if(mpx_BtRemoteDevListNumGet(0))
{
mpx_BtSelectDevsFromDevList(BRD_LIST_TRUSTED, SelectTrustedDevice());
}
else //no device in list
mpx_BtSelectDevsFromDevList(BRD_LIST_TRUSTED, 0xff);
break;
default:
BtDefaultIntHandler(buffer);
break;
}
}
}
U08 ShowFtpDir()
{
U08 i;
U16 *name;
void pr(U08 i)
{
U08 type;
U32 size;
mpx_BtObexFtpCurrNodeNameGet(&name);
mpx_BtObexFtpCurrNodeTypeGet(&type);
mpx_BtObexFtpCurrNodeSizeGet(&size);
if(type == 0x00) //file
DPrintf("%2d: %s%7d %S", i, " ", size ,name);
else if(type == 0x01) //dir
DPrintf("%2d: %s 0 %S", i, "<DIR>", name);
else
DPrintf("%2d: %s 0 ..", i, "<DIR>");
}
i = 1;
if(!mpx_BtObexFtpCurrNodeMoveFirst())
{
pr(i++);
while(!mpx_BtObexFtpCurrNodeMoveNext())
{
pr(i++);
}
}
else
{
DPrintf("No file in server");
return 0;
}
return 1;
}
U08 SelectFile()
{
if(ShowFtpDir()){
DPrintf("select a target :");
mpx_MessageReceive(mainTaskMsgId, (U08*)u32Argument);
return (u32Argument[0] & 0xffff)-1;
}
}
void FtpMenuHandler(U32 type, ...)
{
U08 cmd;
U08 *buffer;
static U08 currcmd = 0;
void MenuOpDisable()
{
MenuItemDisable(FTP_CHANGEDIR);
MenuItemDisable(FTP_CHANGEPARENT);
MenuItemDisable(FTP_GETFILE);
MenuItemDisable(FTP_PUTFILE);
}
void MenuOpEnable()
{
MenuItemEnable(FTP_CHANGEDIR);
MenuItemEnable(FTP_CHANGEPARENT);
MenuItemEnable(FTP_GETFILE);
MenuItemEnable(FTP_PUTFILE);
MenuItemEnable(FTP_EXIT);
}
cmd = *(U32*)(((U08*)&type)+4);
buffer = *(U32*)(((U08*)&type)+4);
if(type == BTCMD)
{
cmd = *(U32*)(((U08*)&type)+4);
switch(cmd)
{
case FTP_EXIT:
if(currcmd == FTP_SHOWDIR) //leave show dir menu
{
MenuOpDisable();
MenuItemEnable(FTP_SHOWDIR);
MenuItemEnable(FTP_DISCONNECT);
}
else
{
pagemenu = &MainMenu;
pagemenu->refresh = TRUE;
}
break;
case FTP_CONNECT:
{
if(mpx_BtObexFtpConnect() == BT_RETURN_PENDING)
MenuItemDisable(FTP_CONNECT);
}
break;
case FTP_DISCONNECT:
{
if(mpx_BtObexFtpDisconnect() == BT_RETURN_PENDING)
{
MenuItemDisable(FTP_DISCONNECT);
MenuItemDisable(FTP_SHOWDIR);
}
}
break;
case FTP_SHOWDIR:
{
ShowFtpDir();
MenuItemDisable(FTP_SHOWDIR);
MenuItemDisable(FTP_DISCONNECT);
MenuOpEnable();
}
break;
case FTP_CHANGEDIR:
{
U08 idx;
U16 *name;
U08 type;
idx = SelectFile();
mpx_BtObexFtpCurrNodeMove(idx);
mpx_BtObexFtpCurrNodeTypeGet(&type);
if(type == 0x01) //sub
{
mpx_BtObexFtpCurrNodeNameGet(&name);
mpx_BtObexFtpChangeWorkingFolder(name);
MenuOpDisable();
}
else if(type == 0x02) //parent
{
mpx_BtObexFtpChangeWorkingFolder(0);//parent
MenuOpDisable();
}
}
break;
case FTP_CHANGEPARENT:
mpx_BtObexFtpChangeWorkingFolder(0);
MenuOpDisable();
break;
case FTP_GETFILE:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -