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

📄 main.c.svn-base

📁 一款蓝牙芯片的驱动和应用代码
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
 *   bluetooth setting menu
 */
 
#define SETTING_ACCESSIBLE  1
#define SETTING_EXIT        2
#define SETTING_SHOW        3

void SettingMenuHandler(U32 type, ...);

const ST_MENU_ITEM SettingMenuItem[] = {    {1, SETTING_ACCESSIBLE, "set Accesiblity", TRUE},
                                            {2, SETTING_EXIT,       "exit setting", TRUE},
                                            {3, SETTING_SHOW,       "show setting", TRUE},
                                            {0, 0, 0, 0}};

const ST_MENU SettingMenu = {SettingMenuHandler, SettingMenuItem, TRUE};
/***************************************************************************/
/*
 *   obex opp menu
 */
 
#define OPP_PUTFILE 0
#define OPP_EXIT    1

void OppMenuHandler(U32 type, ...);

const ST_MENU_ITEM OppMenuItem[] = {    {1, OPP_PUTFILE,    "opp put file", TRUE},
                                        {2, OPP_EXIT,       "exit opp", TRUE},
                                        {0, 0, 0, 0}};

const ST_MENU OppMenu = {OppMenuHandler, OppMenuItem, TRUE};
/***************************************************************************/
/*
 *   obex ftp menu
 */
 
#define FTP_CONNECT             1
#define FTP_EXIT                2
#define FTP_DISCONNECT          3
#define FTP_SHOWDIR             4

#define FTP_CHANGEDIR           0x11
#define FTP_CHANGEPARENT        0x12
#define FTP_GETFILE             0x14
#define FTP_PUTFILE             0x15

void FtpMenuHandler(U32 type, ...);

const ST_MENU_ITEM FtpMenuItem[] = {    {1, FTP_CONNECT,      "ftp connect", TRUE},
                                        {1, FTP_DISCONNECT,   "ftp disconnect", FALSE},
                                        {2, FTP_EXIT,         "exit", TRUE},
                                        {8, FTP_SHOWDIR,      "ftp display remote dir", FALSE},
                                        
                                        {3, FTP_CHANGEDIR,    "ftp dir change", FALSE},
                                        {4, FTP_CHANGEPARENT, "ftp parent change", FALSE},
                                        {6, FTP_GETFILE,   "ftp get file", FALSE},
                                        {7, FTP_PUTFILE,   "ftp put file", FALSE},
                                        
                                        {0, 0, 0, 0}};

const ST_MENU FtpMenu = {FtpMenuHandler, FtpMenuItem, TRUE};
/***************************************************************************/
/*
 *   devices list menu
 */
 
#define DVLST_INQUIRY       0
#define DVLST_EXIT          1
#define DVLST_STOPINQUIRY   2
#define DVLST_SDP           3
#define DVLST_PAIR          4
#define DVLST_DELDEVICE     5

void DVsMenuHandler(U32 type, ...);

const ST_MENU_ITEM DVsMenuItem[] = {    {1, DVLST_INQUIRY,      "Add devices", TRUE},
                                        {1, DVLST_STOPINQUIRY,  "Stop Search", FALSE},
                                        {1, DVLST_PAIR,         "Pair devices", FALSE},
                                        {2, DVLST_EXIT,         "exit", TRUE},
                                        {3, DVLST_SDP,          "Run SDP", FALSE},
                                        {4, DVLST_DELDEVICE,    "Delete devices", TRUE},
                                        {0, 0, 0, 0}};

const ST_MENU DVsMenu = {DVsMenuHandler, DVsMenuItem, TRUE};
/***************************************************************************/
/*
 *   devices list menu
 */
 
#define A2DP_SRC_OPEN       0
#define A2DP_SRC_CONFIG     1
#define A2DP_SRC_RECONFIG   2
#define A2DP_SRC_START   	3
#define A2DP_SRC_SUSPEND   	4
#define A2DP_SRC_RESUME   	5
#define A2DP_SRC_EXIT   	6

void A2DPsrcMenuHandler(U32 type, ...);

const ST_MENU_ITEM A2DPsrcMenuItem[] = {    {1, A2DP_SRC_OPEN,    "open", TRUE},
                                        	{2, A2DP_SRC_CONFIG,  "config", TRUE},
                                        	{3, A2DP_SRC_RECONFIG,"reconfig", TRUE},
                                        	{4, A2DP_SRC_SUSPEND, "suspend", TRUE},
                                        	{5, A2DP_SRC_RESUME, "resume", TRUE},
                                        	{6, A2DP_SRC_EXIT,    "exit", TRUE},
                                        	{0, 0, 0, 0}};
const ST_MENU A2DPsrcMenu = {A2DPsrcMenuHandler, A2DPsrcMenuItem, TRUE};

/***************************************************************************/
/*
 *   devices list menu
 */

#define HANDSET_TALK     	0
#define HANDSET_HSMVDOWN    1
#define HANDSET_HSMVUP   	2
#define HANDSET_HSSVDOWN    3
#define HANDSET_HSSVUP   	4
#define HANDSET_EXIT   		5

void HandsetMenuHandler(U32 type, ...);

const ST_MENU_ITEM HandsetMenuItem[] = {    {1, HANDSET_TALK,  "Press talk key", TRUE},
                                       	 	{2, HANDSET_HSMVDOWN,  "Microphone vol down", TRUE},
                                         	{3, HANDSET_HSMVUP, "Microphone vol up", TRUE},
                                         	{4, HANDSET_HSSVDOWN, "Speaker vol down", TRUE},
                                         	{5, HANDSET_HSSVUP, "Speaker vol up", TRUE},
                                         	{6, HANDSET_EXIT, "exit", TRUE},
                                         	{0, 0, 0, 0}};
const ST_MENU HandsetMenu = {HandsetMenuHandler, HandsetMenuItem, TRUE};

/***************************************************************************/
/*
 *   devices list menu
 */
 
#define HANDSET_GW_OUTGOING     0
#define HANDSET_GW_INCOMING     1
#define HANDSET_GW_DISCONNECT   2
#define HANDSET_GW_REGHANDSET   3

void HSGWMenuHandler(U32 type, ...);

const ST_MENU_ITEM HSGWMenuItem[] = {    {1, HANDSET_GW_OUTGOING,    "outgoing call", TRUE},
                                       	 {2, HANDSET_GW_INCOMING,  "incoming call", TRUE},
                                         {3, HANDSET_GW_DISCONNECT, "exit", TRUE},
                                         {4, HANDSET_GW_REGHANDSET, "reg handset", TRUE},
                                         {0, 0, 0, 0}};
const ST_MENU HSGWMenu = {HSGWMenuHandler, HSGWMenuItem, TRUE};

/***************************************************************************/
/*
 *   spp list menu
 */
 
#define SPP_CLIENT_CONNECT      1
#define SPP_CLIENT_DISCONNECT   2
#define SPP_EXIT   		        3

void SPPMenuHandler(U32 type, ...);

const ST_MENU_ITEM SPPMenuItem[] = {    
										{1, SPP_CLIENT_CONNECT,    "spp client connect", TRUE},
										{2, SPP_CLIENT_DISCONNECT,    "spp client disconnect", TRUE},
                                        {3, SPP_EXIT, "exit", TRUE},
                                        {0, 0, 0, 0}};
const ST_MENU SPPMenu = {SPPMenuHandler, SPPMenuItem, TRUE};

void ShowUnTrustedDeviceList()
{
    U08 i;
    U08 *name;
    U08 j;
    U08 *addr;
    U08 status;
    U08 dnum, snum;
    dnum = mpx_BtRemoteDevListNumGet(1);
    DPrintf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    
    for(i = 0; i < dnum; i++)
    {
        mpx_BtRemoteDevGetName(1, &name, i);
        mpx_BtRemoteDevGetStatus(1, &status, i);

        if(status & 0x1) //in range
            DPrintf(" <online>\\-");
        else
            DPrintf("<offline>\\-");
        
        if(name)
            DPrintf("[%2x] : %s\\-", i+1, name);
        else
        {
            U16 Nap;
            U08  Uap;
            U32 Lap;
            mpx_BtRemoteDevGetAddr(1, &Nap, &Uap, &Lap, i);    
            DPrintf("[%2x] : \\-", i+1);
            DPrintf("%2x : %2x : %2x : %2x : %2x : %2x \\-", Nap >> 8, Nap & 0xff, Uap, Lap >> 16, (Lap >> 8) & 0xff, Lap & 0xff);
            DPrintf("\\-");
        }

        //service show
        mpx_BtRemoteDevGetServiceNum(1, i, &snum);

        if(snum)
        {
            DPrintf("\t\t\t services\\-");
            DPrintf("(\\-");
        }
        for(j = 0 ; j < snum ; j++)
        {
            U16 uuid;
            mpx_BtRemoteDevGetServiceUUid(0, i, j, &uuid);
            DPrintf(" %4x\\-", uuid);
        }
        
        if(snum)
            DPrintf(")\\-");
        
        if(status & 0x2) //paired
            DPrintf("-paired-\\-");

        if(status & 0x4) //trusted
            DPrintf("-trusted-\\-");
        DPrintf("");
            
    }

    DPrintf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    pagemenu->refresh = TRUE;

}

void ShowTrustedDeviceList()
{
    U08 i;
    U08 *name;
    U08 j;
    U08 *addr;
    U08 status;
    U08 dnum, snum;
    dnum = mpx_BtRemoteDevListNumGet(0);
    DPrintf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    DPrintf("Device List:");
    
    for(i = 0; i < dnum; i++)
    {
        mpx_BtRemoteDevGetName(0, &name, i);
        mpx_BtRemoteDevGetStatus(0, &status, i);

        if(status & 0x1) //in range
            DPrintf(" <online>\\-");
        else
            DPrintf("<offline>\\-");
        
        if(name)
            DPrintf("[%2x] : %s\\-", i+1, name);
        else
        {
            U16 Nap;
            U08  Uap;
            U32 Lap;
            mpx_BtRemoteDevGetAddr(0, &Nap, &Uap, &Lap, i);    
            DPrintf("[%2x] : \\-", i+1);
            DPrintf("%2x : %2x : %2x : %2x : %2x : %2x \\-", Nap >> 8, Nap & 0xff, Uap, Lap >> 16, (Lap >> 8) & 0xff, Lap & 0xff);
            DPrintf("\\-");
        }

        //service show
        mpx_BtRemoteDevGetServiceNum(0, i, &snum);

        if(snum)
        {
            DPrintf("\t\t\t services\\-");
            DPrintf("(\\-");
        }
        for(j = 0 ; j < snum ; j++)
        {
            U16 uuid;
            mpx_BtRemoteDevGetServiceUUid(0, i, j, &uuid);
            DPrintf(" %4x\\-", uuid);
        }
        
        if(snum)
            DPrintf(")\\-");
        
        if(status & 0x2) //paired
            DPrintf("-paired-\\-");

        if(status & 0x4) //trusted
            DPrintf("-trusted-\\-");
        DPrintf("");
            
    }

    DPrintf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    pagemenu->refresh = TRUE;

}

U08 SelectTrustedDevice()
{
    ShowTrustedDeviceList();
    DPrintf("select a device :");
    mpx_MessageReceive(mainTaskMsgId, (U08*)u32Argument);
    return (u32Argument[0] & 0xffff)-1;
}

U08 SelectSearchedDevice()
{
    ShowUnTrustedDeviceList();
    DPrintf("select the Searched device :");
    mpx_MessageReceive(mainTaskMsgId, (U08*)u32Argument);
    return (u32Argument[0] & 0xffff)-1;
}

#define BSM_SEC_DISABLED    0x01
#define BSM_SEC_LEVEL_1     0x02
#define BSM_SEC_LEVEL_2     0x03
#define BSM_SEC_LEVEL_3     0x04
#define BSM_SEC_ENCRYPT     0x05

U08 ShowSetting()
{
    U08 mode;
    if(!mpx_BtGetAccessibleModeNC(&mode))
    {
        DPrintf("access mode := \\-");
        switch(mode)
        {
            case 0:
                DPrintf("[Not discovered, not connected]");
                break;
            case 1:
                DPrintf("[discovered only]");
                break;
            case 2:
                DPrintf("[connected only]");
                break;
            case 3:
                DPrintf("[allow discovered and connected]");
                break;
            case 0x13:
                DPrintf("[limited discovered and connected]");
                break;
        }
    }

    #if 0 //no open for user
    mode = mpx_BtGetSecurityLevel();
    DPrintf("security level := \\-");
    switch(mode)
    {
            break;
        case 1:
            DPrintf("[security disable]");
            break;
        case 2:
            DPrintf("[level 1]");
            break;
        case 3:
            DPrintf("[level 2]");
            break;
        case 4:
            DPrintf("[level 3]");
            break;
        case 5:
            DPrintf("[encrypt]");
            break;
        default:
            DPrintf("[unknow]");
            break;
    }
    #endif
    
}

U08 SelectKey()
{
   mpx_MessageReceive(mainTaskMsgId, (U08*)u32Argument);
    return (u32Argument[0] & 0xffff);
}

void InputPin(U08 *pin)
{
    DPrintf("input pin code :------->");
    U08 key;
    U08 i = 0;
    do{
        mpx_MessageReceive(mainTaskMsgId, (U08*)u32Argument);
        key = (u32Argument[0] & 0xffff)-1;
        if(i < 16 && key !=10)
        {
            DPrintf("%1d\\-", key);
            pin[i++] = key + '0';
        }
    }while(key != 10);
    pin[i] = 0;
}

void BtDefaultIntHandler(U08* buffer)
{
    U08 category;
    U08 type;
    U08 action;
    U08 who;
    U16 datalen;
	
    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 LINK_CONNECT:
                DPrintf("$$$: LINK CONNECT");
                break;
            case LINK_DISCONNECT:
                DPrintf("$$$: LINK DISCONNECT");
                break;
            case GOEP_CONNECT:
                DPrintf("$$$: GOEP_CONNECT");
                break;
            case GOEP_DISCONNECT:
                DPrintf("$$$: GOEP_DISCONNECT");
                break;
            case GOEP_PUSH:
            {
                switch(type)
                {
                    case INFORM_START:
                        DPrintf("$$$: GOEP_PUSH START");
                        break;
                    case INFORM_PROGRESS:
                    {
                        if(datalen != 8)
                            DPrintf("$$$: GOEP_PUSH PROGRESS");
                        else
                        {
                            U32 cur, max;
                            cur = BTINT_U32DATA(buffer, 0);
                            max = BTINT_U32DATA(buffer, 1);
                            
                            //DPrintf("$$$: GOEP_PUSH PROGRESS %d/%d", cur, max);
                        }
                        break;
                    }
                    case INFORM_COMPLETE:
                        DPrintf("$$$: GOEP_PUSH COMPLETE");
                        break;
                }
                break;
            }
            

⌨️ 快捷键说明

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