博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HC-05底层驱动
阅读量:4309 次
发布时间:2019-06-06

本文共 12740 字,大约阅读时间需要 42 分钟。

INT8U BT_INIT(const char * pNAME, INT32U BAUD, INT8U ROLE, INT32U PSWD){    INT8U    OS_ERR    = OS_ERR_NONE;    INT8U    BT_ERR    = BT_ERR_NONE;    INT8U    RETRY    = 0;    BOOLEAN    F_SET    = FALSE;    BOOLEAN    F_BOOT    = FALSE;    char    *MAIL;            // Ç¿ÖÆÖØÆô½øÈëATģʽ    BT_PWR_SET(0);    _delay_ms(25);    BT_DAT_MOD_SET(DAT_MOD_AT);    BT_PWR_SET(1);    _delay_ms(25);        /* È·¶¨À¶ÑÀ½øÈëATģʽ *************************************************************/    if(BT_ERR == BT_ERR_NONE) {        for(RETRY=25; RETRY>0; RETRY--) {            xfprintf(BT_OUT, "AT\r\n");            MAIL = (char *)OSMboxPend(BT_MEvent, OS_TICKS_PER_SEC/10, &OS_ERR);            if(OS_ERR == OS_ERR_NONE) {                // debug info...                // printf("AT\r\n");                // printf("%s\r\n", mail);                if(strstr(MAIL, "OK")) {                    BT_ERR = BT_ERR_NONE;                    break;                }                else {                    BT_ERR = BT_ERR_RES;                }            }            else {                // debug info...                // printf("BT->AT -> ERROR!\r\n");                _delay_ms(25);            }        }        if(RETRY==0) BT_ERR = BT_ERR_OS;    }        /* »ñÈ¡±¾»úÀ¶ÑÀµØÖ· *****************************************************************/    if(BT_ERR == BT_ERR_NONE) {        for(RETRY=5; RETRY>0; RETRY--) {            xfprintf(BT_OUT, "AT+ADDR?\r\n");            MAIL = (char *)OSMboxPend(BT_MEvent, OS_TICKS_PER_SEC/10, &OS_ERR);            if(OS_ERR == OS_ERR_NONE) {                // debug info...                // printf("AT+ADDR?\r\n");                // printf("%s\r\n", mail);                if(strstr((char *)MAIL, "ADDR")) {                    ADDR_PARSE(MAIL, (INT32U *)&BT_API.MAC);                    BT_ERR = BT_ERR_NONE;                    break;                }                else {                    BT_ERR = BT_ERR_RES;                }            }            else {                // debug info...                // printf("BT->ADDR : ERR!\r\n");                _delay_ms(25);            }        }        if(RETRY==0) BT_ERR = BT_ERR_OS;    }        /* ½«À¶ÑÀÉèÖÃΪÖ÷»ú/´Ó»úģʽ *************************************************************/    if(BT_ERR == BT_ERR_NONE) {        for(RETRY=5; RETRY>0; RETRY--) {            xfprintf(BT_OUT, "AT+ROLE?\r\n");            MAIL = (char *)OSMboxPend(BT_MEvent, OS_TICKS_PER_SEC/10, &OS_ERR);            if(OS_ERR == OS_ERR_NONE) {                // debug info...                // printf("AT+ROLE?\r\n");                // printf("%s\r\n", mail);                if(ROLE == HOST) {                    if(strstr(MAIL, "ROLE:1")) {                        F_SET = FALSE;                        BT_ERR = BT_ERR_NONE;                        break;                    }                    else if(strstr(MAIL, "ROLE:0")) {                        F_SET = TRUE;                        F_BOOT = TRUE;                        BT_ERR = BT_ERR_NONE;                        break;                    }                }                else {                    if(strstr(MAIL, "ROLE:0")) {                        F_SET = FALSE;                        BT_ERR = BT_ERR_NONE;                        break;                    }                    else if(strstr(MAIL, "ROLE:1")) {                        F_SET = TRUE;                        F_BOOT = TRUE;                        BT_ERR = BT_ERR_NONE;                        break;                    }                }            }            else {                // debug info...                // printf("BT->ROLE? -> OS_ERR!\r\n");                _delay_ms(25);            }        }        if(RETRY==0) BT_ERR = BT_ERR_OS;    }    if(BT_ERR==BT_ERR_NONE && F_SET==TRUE) {        F_SET = FALSE;        for(RETRY=5; RETRY>0; RETRY--) {            if(ROLE == HOST) {                xfprintf(BT_OUT, "AT+ROLE=1\r\n");            }            else {                xfprintf(BT_OUT, "AT+ROLE=0\r\n");            }            MAIL = (char *)OSMboxPend(BT_MEvent, OS_TICKS_PER_SEC/10, &OS_ERR);            if(OS_ERR == OS_ERR_NONE) {                // debug info...                // printf("AT+ROLE=x\r\n");                // printf("%s\r\n", mail);                if(strstr(MAIL, "OK")) {                    BT_ERR = BT_ERR_NONE;                    break;                }                else {                    BT_ERR = BT_ERR_RES;                }            }            else {                // debug info...                // printf("BT->AT_ROLE->ERROR!\r\n");                _delay_ms(25);            }        }        if(RETRY==0) BT_ERR = BT_ERR_OS;    }        /* ²éѯºÍÉèÖÃÀ¶ÑÀ²¨ÌØÂÊ *************************************************************/    if(BT_ERR == BT_ERR_NONE) {        for(RETRY=5; RETRY>0; RETRY--) {            xfprintf(BT_OUT, "AT+UART?\r\n");            MAIL = (char *)OSMboxPend(BT_MEvent, OS_TICKS_PER_SEC/10, &OS_ERR);            if(OS_ERR == OS_ERR_NONE) {                // debug info...                // printf("AT+UART?\r\n");                // printf("%s\r\n", mail);                if(strstr(MAIL, "OK") && strstr(MAIL, "UART")) {                    char *pnum = strchr(MAIL, ':');                    if(pnum) {                        pnum++;                        if(atoi(pnum) != BAUD) {                            F_SET = TRUE;                            F_BOOT = TRUE;                        }                        else {                            F_SET = FALSE;                        }                    }                    BT_ERR = BT_ERR_NONE;                    break;                }                else {                    BT_ERR = BT_ERR_RES;                }            }            else {                // debug info...                // printf("BT->AT_BAUD? -> ERROR!\r\n");                _delay_ms(25);            }        }        if(RETRY==0) BT_ERR = BT_ERR_OS;    }    if(BT_ERR==BT_ERR_NONE && F_SET==TRUE) {        F_SET = FALSE;        for(RETRY=5; RETRY>0; RETRY--) {            xfprintf(BT_OUT, "AT+UART=%d,0,0\r\n", BAUD);            MAIL = (char *)OSMboxPend(BT_MEvent, OS_TICKS_PER_SEC/10, &OS_ERR);            if(OS_ERR == OS_ERR_NONE) {                // debug info...                // printf("AT+UART=%d,0,0\r\n", BAUD);                // printf("%s\r\n", mail);                if(strstr(MAIL, "OK")) {                    BT_ERR = BT_ERR_NONE;                    break;                }                else {                    BT_ERR = BT_ERR_RES;                }            }            else {                // debug info...                // printf("BT->AT_BAUD=xxxxxx -> ERROR!\r\n");                _delay_ms(25);            }        }        if(RETRY==0) BT_ERR = BT_ERR_OS;    }        /* ²éѯ/ÉèÖÃ-Åä¶ÔÂë **************************************************************/    if(BT_ERR == BT_ERR_NONE) {        for(RETRY=5; RETRY>0; RETRY--) {            xfprintf(BT_OUT, "AT+PSWD?\r\n");            MAIL = (char *)OSMboxPend(BT_MEvent, OS_TICKS_PER_SEC/10, &OS_ERR);            if(OS_ERR == OS_ERR_NONE) {                // debug info...                // printf("AT+PSWD?\r\n");                // printf("%s\r\n", mail);                if(strstr(MAIL, "PSWD") && strstr(MAIL, "OK")) {                    char * pnum = strchr(MAIL, ':');                    if(pnum) {                        pnum++;                        if(atoi(pnum) == PSWD) {                            F_SET = FALSE;                        }                        else {                            F_SET = TRUE;                            F_BOOT = TRUE;                        }                    }                    BT_ERR = BT_ERR_NONE;                    break;                }                else {                    BT_ERR = BT_ERR_RES;                }            }            else {                // debug info...                // printf("BT->AT+PSWD? -> ERROR!\r\n");                _delay_ms(25);            }        }        if(RETRY==0) BT_ERR = BT_ERR_OS;    }    if(BT_ERR==BT_ERR_NONE && F_SET==TRUE) {        F_SET = FALSE;        for(RETRY=5; RETRY>0; RETRY--) {            xfprintf(BT_OUT, "AT+PSWD=%04d\r\n", PSWD);            MAIL = (char *)OSMboxPend(BT_MEvent, OS_TICKS_PER_SEC/10, &OS_ERR);            if(OS_ERR == OS_ERR_NONE) {                // debug info...                // printf("AT+PSWD=%d\r\n", PSWD);                // printf("%s\r\n", mail);                if(strstr(MAIL, "OK")) {                    BT_ERR = BT_ERR_NONE;                    break;                }                else {                    BT_ERR = BT_ERR_RES;                }            }            else {                // debug info...                // printf("BT->AT+PSWD=xxxx -> ERROR!\r\n");                _delay_ms(25);            }        }        if(RETRY==0) BT_ERR = BT_ERR_OS;    }        /* ²éѯ/ÉèÖÃÖ÷»úÃû³Æ **************************************************************/    if(BT_ERR == BT_ERR_NONE) {        for(RETRY=5; RETRY>0; RETRY--) {            xfprintf(BT_OUT, "AT+NAME?\r\n");            MAIL = (char *)OSMboxPend(BT_MEvent, OS_TICKS_PER_SEC/10, &OS_ERR);            if(OS_ERR == OS_ERR_NONE) {                // debug info...                // printf("AT+NAME?\r\n");                // printf("%s\r\n", mail);                if(strstr(MAIL, "NAME")) {                    BT_ERR = BT_ERR_NONE;                    if(strstr(MAIL, pNAME)) {                        F_SET = FALSE;                    }                    else {                        F_SET = TRUE;                        F_BOOT = TRUE;                    }                    break;                }                else {                    BT_ERR = BT_ERR_RES;                }            }            else {                // debug info...                // printf("BT->AT+NAME? : ERR!\r\n");                _delay_ms(25);            }        }        if(RETRY==0) BT_ERR = BT_ERR_OS;    }    if(F_SET == TRUE) {        if(BT_ERR == BT_ERR_NONE) {            for(RETRY=5; RETRY>0; RETRY--) {                xfprintf(BT_OUT, "AT+NAME=%s\r\n", pNAME);                MAIL = (char *)OSMboxPend(BT_MEvent, OS_TICKS_PER_SEC/10, &OS_ERR);                if(OS_ERR == OS_ERR_NONE) {                    // debug info...                    // printf("AT+NAME=%s\r\n", pNAME);                    // printf("%s\r\n", mail);                    if(strstr(MAIL, "OK")) {                        BT_ERR = BT_ERR_NONE;                        break;                    }                    else {                        BT_ERR = BT_ERR_RES;                    }                }                else {                    // debug info...                    // printf("BT->AT+NAME=xxxx : ERR!\r\n");                    _delay_ms(25);                }            }            if(RETRY==0) BT_ERR = BT_ERR_OS;        }    }        // ½«À¶ÑÀÈí¸´Î»£¬ÉúЧ¸ü¸Ä    if(F_BOOT == TRUE) {        if(BT_ERR == BT_ERR_NONE) {            for(RETRY=5; RETRY>0; RETRY--) {                xfprintf(BT_OUT, "AT+RESET\r\n");                MAIL = (char *)OSMboxPend(BT_MEvent, OS_TICKS_PER_SEC/10, &OS_ERR);                if(OS_ERR == OS_ERR_NONE) {                    // debug info...                    // printf("AT+RESET=1\r\n");                    // printf("%s\r\n", mail);                    if(strstr(MAIL, "OK")) {                        BT_ERR = BT_ERR_NONE;                        break;                    }                    else {                        BT_ERR = BT_ERR_RES;                    }                }                else {                    // debug info...                    // printf("BT->AT+RESET : ERR!\r\n");                    _delay_ms(25);                }            }            if(RETRY==0) BT_ERR = BT_ERR_OS;        }                // µÈ´ýÀ¶ÑÀ¸´Î»³É¹¦        if(BT_ERR == BT_ERR_NONE) {            for(RETRY=25; RETRY>0; RETRY--) {                xfprintf(BT_OUT, "AT\r\n");                MAIL = (char *)OSMboxPend(BT_MEvent, OS_TICKS_PER_SEC/10, &OS_ERR);                if(OS_ERR == OS_ERR_NONE) {                    // debug info...                    // printf("AT\r\n");                    // printf("%s\r\n", mail);                    if(strstr(MAIL, "OK")) {                        BT_ERR = BT_ERR_NONE;                        break;                    }                    else {                        BT_ERR = BT_ERR_RES;                    }                }                else {                    // debug info...                    // printf("BT->AT -> ERROR!\r\n");                    _delay_ms(25);                }            }            if(RETRY==0) BT_ERR = BT_ERR_OS;        }    }        return BT_ERR;}

 

转载于:https://www.cnblogs.com/qdrs/p/10079860.html

你可能感兴趣的文章
数组各元素出现的次数
查看>>
我的读书清单(持续更新)
查看>>
53.Maximum Subarray
查看>>
xlistview(脚)
查看>>
咖啡豆(JavaBean)•香
查看>>
hdu2457 Trie图+dp
查看>>
杭电2075
查看>>
ASP.NET Core ---日志
查看>>
Android框架式编程之MVP架构
查看>>
UEditor 插入图片大于2M提示文件大小超出范围解决办法
查看>>
测绘软件使用心得
查看>>
sql 相关子查询
查看>>
python 学习
查看>>
中文/英文换行总结
查看>>
linux中用户忘记root的密码--ubuntu版本
查看>>
Spring Boot 5:应用程序启动时初始化资源
查看>>
JMter随记
查看>>
ssky-keygen + ssh-copy-id 无密码登陆远程LINUX主机
查看>>
AFO
查看>>
linux下面安装maven
查看>>